Saat Anda menjalankan kueri SELECT, MySQL "mengingat" kueri dan hasil yang dikembalikannya. Hal ini dilakukan dengan menyimpan set hasil dalam cache khusus (disebut cache kueri) setiap kali kueri SELECT dijalankan. Kemudian, saat Anda meminta kueri yang sama ke server, MySQL akan mengambil hasilnya dari cache alih-alih menjalankan kueri lagi. Seperti yang dapat Anda bayangkan, ini sangat mempercepat proses Show Meskipun diaktifkan secara default, Anda harus selalu memverifikasi bahwa caching kueri diaktifkan, yang dapat dilakukan dengan memeriksa variabel server. Contoh berikut mengilustrasikan mysql> SHOW VARIABLES LIKE '%query_cache%'; 6 rows in set (0.00 sec)
Anda dapat mengubah salah satu variabel ini menggunakan pernyataan SET GLOBAL atau SET SESSION, seperti yang ditunjukkan mysql> SET GLOBAL query_cache_size = 16777216; Query OK, 0 rows affected (0.00 sec) Untuk melihat sendiri apa pengaruh cache kueri terhadap kinerja, jalankan kueri yang sama dengan dan tanpa caching kueri untuk membandingkan perbedaan kinerja. Ini versinya tanpa menggunakan cache kueri mysql> SELECT SQL_NO_CACHE r.RouteID, a1.AirportCode, a2.AirportCode, -> r.Distance, r.Duration, r.Status FROM route AS r, -> airport AS a1, airport AS a2 -> WHERE r.From LIKE a1.AirportID -> AND r.To LIKE a2.AirportID -> AND r.RouteID IN -> (SELECT f.RouteID -> FROM flight AS f, flightdep AS fd -> WHERE f.FlightID = fd.FlightID -> AND f.RouteID = r.RouteID -> AND fd.DepTime BETWEEN '00:00' AND '04:00'); 2 rows in set (0.21 sec) Sekarang lakukan kueri yang sama dengan cache mysql> SELECT SQL_CACHE r.RouteID, a1.AirportCode, -> a2.AirportCode, r.Distance, r.Duration, r.Status FROM -> route AS r, airport AS a1, airport AS a2 -> WHERE r.From LIKE a1.AirportID -> AND r.To LIKE a2.AirportID -> AND r.RouteID IN -> (SELECT f.RouteID -> FROM flight AS f, flightdep AS fd -> WHERE f.FlightID = fd.FlightID -> AND f.RouteID = r.RouteID -> AND fd.DepTime BETWEEN '00:00' AND '04:00'); Peningkatan dramatis dalam kinerja bukanlah hal yang aneh jika caching kueri diaktifkan pada kueri yang sering diajukan PERINGATAN Setelah tabel diubah, kueri yang di-cache yang menggunakan tabel ini menjadi tidak valid dan dihapus dari cache. Ini mencegah kueri mengembalikan data yang tidak akurat dari tabel lama. Meskipun ini membuat caching kueri jauh lebih berguna, tabel yang terus berubah tidak akan mendapat manfaat dari caching. Dalam situasi ini, Anda mungkin ingin mempertimbangkan untuk menghapus cache kueri. Ini dapat dilakukan dengan menambahkan opsi SQL_NO_CACHE, seperti yang ditunjukkan sebelumnya, ke pernyataan SELECT Saat menggunakan memcached untuk meng-cache data MySQL, aplikasi Anda harus mengambil data dari database dan memuat key-value pair yang sesuai ke dalam cache. Kemudian, pencarian selanjutnya dapat dilakukan langsung dari cache Karena MySQL memiliki mekanisme caching dalam memorinya sendiri untuk data yang diminta, seperti Batasi informasi dalam cache untuk data yang tidak sensitif, karena tidak diperlukan keamanan untuk mengakses atau memperbarui informasi dalam instance memcache. Siapa saja yang memiliki akses ke mesin memiliki kemampuan untuk membaca, melihat, dan berpotensi memperbarui informasi. Untuk menjaga keamanan data, enkripsi informasi sebelum menyimpannya dalam cache. Untuk membatasi pengguna yang dapat terhubung ke server, nonaktifkan akses jaringan, atau gunakan IPTables atau teknik serupa untuk membatasi akses ke port memcache ke sekumpulan host tertentu Anda dapat memperkenalkan Urutan umum untuk menggunakan memcached dalam bahasa apapun sebagai solusi caching untuk MySQL adalah sebagai berikut
Untuk diagram alir urutan ini, lihat Gambar 16. 6 Bagan Alir Aplikasi memcache biasa Mengadaptasi Praktik Terbaik Database ke Aplikasi memcacheCara paling langsung untuk meng-cache data MySQL adalah dengan menggunakan tabel 2 kolom, di mana kolom pertama adalah a. Karena persyaratan keunikan untuk kunci memcache, pastikan skema database Anda menggunakan kunci utama dan Jika Anda menggabungkan beberapa nilai kolom ke dalam satu nilai item memcache, pilih tipe data untuk memudahkan penguraian kembali nilai ke dalam komponennya, misalnya dengan menggunakan karakter pemisah antara nilai numerik Kueri yang paling mudah memetakan pencarian memcache adalah kueri dengan klausa Bagaimana cara menggunakan cache di MySQL?MySQL menentukan kueri untuk di-cache dengan memeriksa variabel query_cache_type . Menyetel nilai ini ke 0 atau MATI mencegah caching atau pengambilan kueri yang disimpan dalam cache. Anda juga dapat menyetelnya ke 1 untuk mengaktifkan caching untuk semua kueri kecuali yang dimulai dengan pernyataan SELECT SQL_NO_CACHE.
Bagaimana cara mengatur cache kueri MySQL?Untuk menyetel ukuran cache kueri, setel variabel sistem query_cache_size . Menyetelnya ke 0 akan menonaktifkan cache kueri, seperti halnya menyetel query_cache_type=0. Secara default, cache kueri dinonaktifkan. Ini dicapai dengan menggunakan ukuran default 1M, dengan default untuk query_cache_type dari 0.
Bagaimana cara menggunakan cache kueri?Anda dapat membuat Kueri Tembolok langsung dari Penjelajah. Untuk meng-cache kueri, lanjutkan dan simpan kueri terlebih dahulu. Gambar 1. Tekan tombol untuk "Simpan" kueri. Kemudian, untuk meng-cache kueri terpenting Anda, pilih kotak centang "Aktifkan Caching" dan masukkan kecepatan penyegaran
Bagaimana cara memeriksa penggunaan cache di MySQL?Untuk memastikan MySQL Query Cache diaktifkan gunakan. mysql> TAMPILKAN VARIABEL SEPERTI 'have_query_cache'; Untuk memantau statistik cache kueri, gunakan. mysql> TAMPILKAN STATUS SEPERTI 'Qcache%'; |