MySQL ialah sistem pengurusan pangkalan data hubungan dan salah satu pangkalan data yang paling biasa digunakan dalam aplikasi web. Dalam MySQL, caching pertanyaan ialah ciri utama yang boleh meningkatkan prestasi dan kelajuan tindak balas pangkalan data. Artikel ini akan memperkenalkan secara terperinci cara cache pertanyaan MySQL berfungsi dan cara mengoptimumkan penggunaan cache pertanyaan.
1. Cara cache pertanyaan MySQL berfungsi
Cache pertanyaan MySQL ialah cache dalaman yang digunakan untuk menyimpan hubungan pemetaan antara hasil pertanyaan dan pernyataan pertanyaan. Apabila pertanyaan dilaksanakan, MySQL mula-mula akan menyemak sama ada pernyataan pertanyaan dan hasil pertanyaan yang sama telah disimpan Jika ia sudah wujud, ia akan mengembalikan hasil pertanyaan secara langsung untuk mengelak daripada melaksanakan pernyataan pertanyaan dan mengakses pangkalan data semula.
Perhubungan pemetaan yang disimpan dalam cache pertanyaan terdiri daripada dua bahagian: pernyataan pertanyaan dan hasil pertanyaan. Untuk memastikan ketekalan dan ketepatan cache, MySQL akan memadam cache pertanyaan yang berkaitan secara automatik selepas sebarang operasi kemas kini (masukkan, kemas kini, padam). Ini juga bermakna bahawa dalam pangkalan data yang kerap dikemas kini, kadar hit cache pertanyaan akan menjadi sangat rendah.
2. Pengoptimuman cache pertanyaan MySQL
Secara lalai, MySQL akan mendayakan cache pertanyaan. Dalam fail konfigurasi, parameter cache pertanyaan ditetapkan kepada nilai lalai "HIDUP". Jika anda perlu mengesahkan sama ada cache pertanyaan dihidupkan, anda boleh membuat pertanyaan dengan pernyataan berikut:
TUNJUK PEMBOLEH UBAH SEPERTI 'query_cache_type';
Jika hasil pertanyaan "HIDUP", ini bermakna cache pertanyaan dihidupkan. Jika hasil pertanyaan adalah "MATI", anda perlu mendayakan cache pertanyaan secara manual.
Saiz lalai cache pertanyaan MySQL ialah 8MB. Jika saiz cache terlalu kecil, cache akan kerap dikosongkan dan dibina semula dalam keadaan konkurensi yang tinggi, sekali gus mengurangkan kecekapan cache pertanyaan. Anda boleh menetapkan saiz cache pertanyaan melalui pernyataan berikut:
query_cache_size=1048576;
di mana 1048576 mewakili saiz cache dalam bait.
Cache pertanyaan hanya boleh cache penyata SELECT dan jadual tidak berkunci. Jika pertanyaan adalah kompleks atau pertanyaan mengandungi pernyataan dengan fungsi dinamik seperti NOW() atau RAND(), cache mungkin tidak tersedia. Oleh itu, apabila menggunakan cache pertanyaan, anda perlu memberi perhatian kepada penulisan dan pengoptimuman pernyataan SQL.
Memandangkan cache pertanyaan MySQL akan memadam cache pertanyaan yang berkaitan secara automatik selepas operasi kemas kini, mengelakkan operasi kemas kini yang kerap boleh meningkatkan keberkesanan cache pertanyaan seks. Dalam aplikasi praktikal, anda boleh mempertimbangkan untuk menggunakan mekanisme seperti kemas kini cache untuk mengelakkan operasi kemas kini yang kerap.
Cache pertanyaan MySQL hanya boleh cache jadual tidak berkunci. Jika jadual dikemas kini, cache pertanyaan menjadi tidak sah. Untuk memanfaatkan sepenuhnya cache pertanyaan anda, pertimbangkan untuk membahagikan jadual anda kepada berbilang wilayah, yang setiap satunya boleh dikemas kini secara bebas. Dengan cara ini, walaupun satu rantau dikemas kini, cache pertanyaan untuk wilayah lain masih boleh dicache dan digunakan.
Caching pertanyaan dilakukan dalam memori, jadi jika pelayan MySQL anda mempunyai memori kecil dan anda menjalankan berbilang pertanyaan pada masa yang sama, mungkin terdapat kesesakan memori, sekali gus menjejaskan operasi cache pertanyaan. Untuk mengelakkan situasi ini, penggunaan memori pelayan perlu dipantau dengan kerap dan memori pelayan diselaraskan mengikut keperluan.
3. Kesimpulan
Cache pertanyaan MySQL ialah ciri yang sangat berguna yang boleh meningkatkan prestasi pangkalan data dan kelajuan tindak balas dengan ketara. Walau bagaimanapun, anda perlu memberi perhatian kepada perkara berikut apabila menggunakan cache pertanyaan: memastikan bahawa cache pertanyaan dihidupkan; kesesakan. Dengan mengoptimumkan cache pertanyaan MySQL, kami boleh memaksimumkan kelebihan cache pertanyaan dan meningkatkan prestasi dan kelajuan tindak balas pangkalan data.
Atas ialah kandungan terperinci cache pertanyaan mysql. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!