2011-12-25 21 views
10

MySQL bize SQL_CACHE ve SQL_NO_CACHE seçeneklerin kullanımı ile seçme ifadeleri oluşturmanızı sağlar kullanmak. Bu seçenekler, sorgu önbelleğinde sorgu sonuçlarının önbelleğe alınmasını etkiler. Ama hangi sorgular için SQL_CACHE seçeneğini kullanmak ve SQL_NO_CACHE hangisi daha iyi? Ya da belki daha iyi kullanmaz mı?MySQL en iyi uygulamalar SQL_CACHE ve SQL_NO_CACHE

cevap

12

Genel olarak, bunu kesinlikle kullanmamalısınız. SQL_CACHE yalnızca sorguların varsayılan olarak önbelleğe alınmadığı ve varsayılan yapılandırmada oldukları takdirde gereklidir. SQL_NO_CACHE, özellikle sonuç kümesi büyükse, belirli bir sorgunun yakın gelecekte tekrar kullanılmayacağını biliyorsanız, kullanışlıdır. Amaç, önbelleği tekrar gerekmeyecek sonuçlarla karıştırmaktan kaçınmaktır.

+2

Özellikle SQL_NO_CACHE ile ilgili olarak - bunu kullanmanın önbelleğe alınmasının daha sonra yeniden kullanım için bir yarar sağlamadığı durumlarda kullanın. Bunu yapmanizin nedeni, önbellek içeren, ancak hiçbir zaman kullanmadiginiz bir çok sorunuz varsa, MySQL'i önbellegi zaman kaybetmeden daha fazla zaman harcayarak yavaslatiracaksiniz. Bu, insanlar eski büyük girdilerin boyutlarıyla büyüdüğü zaman olarak gerçekten büyük query_cache boyutlarını ayarladıklarında özellikle belirgindir. Bu yüzden mySQL'de query_cache'nin davranışını değiştirmek için 0,1,2 seçeneği vardır. – Ross

+0

@Michael, Aslında üretim sunucuları için önerilen configuratino, ** kapalı ** sorgu önbelleklemesidir. – Pacerier

+0

@Pacerier Bu gerçekten iş yükünüze bağlıdır. –

3

SQL_NO_CACHE, sorgu hızını ayıklarken kullanırım.

+0

Lütfen detaylandırın. – Pacerier

+0

Sorguları test ederken, önbellekten alınmadan yürütme sürelerini ölçmek yararlıdır. Önbellekten alınmak, veritabanından getirilmekten çok daha hızlıdır; bu nedenle, DB veya önbellekten gelip gelmediğini bilmeden sonuçları karşılaştırmak mantıklı değildir. –

İlgili konular