Percepat Situs Web Anda Dengan Caching MySQL Query
Salah satu cara terbaik untuk mempercepat aplikasi web Anda adalah mengaktifkan caching kueri di basis data Anda, yang menyimpan cache yang biasa digunakan kueri SQL dalam memori untuk akses hampir instan dengan halaman berikutnya yang membuat permintaan yang sama.
Alasan metode ini sangat kuat adalah bahwa Anda tidak perlu membuat perubahan apa pun pada aplikasi web Anda, Anda hanya perlu mengorbankan sedikit memori. Ini tidak akan memperbaiki semua masalah Anda, tetapi pasti tidak ada salahnya.
Catatan: jika aplikasi Anda sering memperbarui tabel, maka cache kueri akan terus-menerus dibersihkan dan Anda tidak akan mendapat banyak manfaat dari ini. Ini sangat ideal untuk aplikasi yang kebanyakan tidak sesuai dengan database, seperti blog WordPress. Ini juga tidak akan berfungsi jika Anda menjalankan shared hosting.
Aktifkan Caching dengan Menjalankan Server
Hal pertama yang ingin Anda lakukan adalah memastikan bahwa instalasi MySQL Anda sebenarnya memiliki dukungan caching permintaan. Kebanyakan distribusi melakukannya, tetapi Anda tetap harus memeriksanya.
Anda akan ingin menjalankan perintah ini dari konsol MySQL Anda, yang akan memberi tahu Anda jika cache permintaan tersedia.
mysql> tampilkan variabel seperti 'have_query_cache'; + ------------------ + ------- + | Variable_name | Nilai | + ------------------ + ------- + | have_query_cache | YA | +------------------+-------+
Jangan salah mengartikan ini sebagai arti bahwa cache query sebenarnya diaktifkan, karena sebagian besar penyedia hosting tidak akan mengaktifkan ini secara default. Anehnya, instalasi Ubuntu Feisty saya sudah diaktifkan ...
Selanjutnya kita perlu memeriksa dan melihat apakah cache permintaan diaktifkan. Kita perlu memeriksa lebih dari satu variabel, jadi sebaiknya kita lakukan semuanya sekaligus dengan memeriksa kueri variabel%
mysql> tampilkan variabel seperti 'kueri%'; + ------------------------------ + --------- + | Variable_name | Nilai | + ------------------------------ + --------- + | query_alloc_block_size | 8192 | | query_cache_limit | 1048576 | | query_cache_min_res_unit | 4096 | | query_cache_size | 8388608 | | query_cache_type | ON | | query_cache_wlock_invalidate | OFF | | query_prealloc_size | 8192 | +------------------------------+---------+
Inilah barang-barang penting dalam daftar dan artinya:
- kueri_cache_size - Ini adalah ukuran cache dalam byte. Menetapkan nilai ini ke 0 akan secara efektif menonaktifkan caching.
- query_cache_type - Nilai ini harus AKTIF atau 1 agar cache kueri diaktifkan secara default.
- query_cache_limit - Ini adalah kueri ukuran maksimum (dalam byte) yang akan di-cache.
Jika nilai query_cache_size diatur ke 0 atau Anda hanya ingin mengubahnya, Anda harus menjalankan perintah berikut, dengan mengingat bahwa nilainya dalam byte. Misalnya, jika Anda ingin mengalokasikan 8MB ke cache, kami akan menggunakan 1024 * 1024 * 8 = 8388608 sebagai nilai.
SET GLOBAL query_cache_size = 8388608;
Demikian pula, opsi lain dapat diatur dengan sintaks yang sama:
SET GLOBAL query_cache_limit = 1048576;SET GLOBALquery_cache_type
= 1;
Sekarang bagaimana kita tahu apakah itu benar-benar berfungsi? Anda dapat menggunakan perintah SHOW STATUS untuk menarik semua variabel yang dimulai dengan "Qc" untuk melihat apa yang terjadi di bawah tenda.
mysql> SHOW STATUS LIKE 'Qc%'; + ------------------------- + -------- + | Variable_name | Nilai | + ------------------------- + -------- + | Qcache_free_blocks | 65 | | Qcache_free_memory | 201440 | | Qcache_hits | 18868 | | Qcache_inserts | 2940 | | Qcache_lowmem_prunes | 665 | | Qcache_not_cached | 246 | | Qcache_queries_in_cache | 492 | | Qcache_total_blocks | 1430 | + ------------------------- + -------- + 8 baris dalam set (0,00 dtk)
Anda akan melihat dalam statistik bahwa saya memiliki banyak memori bebas yang tersisa. Jika server Anda menampilkan banyak prune lowmem, Anda mungkin perlu mempertimbangkan untuk meningkatkan nilai ini, tetapi saya tidak akan menghabiskan terlalu banyak memori pada caching permintaan untuk server web ... Anda harus meninggalkan memori yang tersedia untuk apache, php, ruby, atau apa pun yang Anda gunakan.
Aktifkan dalam File Konfigurasi
Jika Anda ingin perubahan ini bertahan dari reboot atau restart server mysql, Anda harus menambahkannya ke file konfigurasi /etc/mysql/my.cnf untuk MySQL. Perhatikan bahwa itu mungkin berada di lokasi berbeda pada instalasi Anda.
Buka file menggunakan editor teks dalam mode sudo atau root, dan kemudian tambahkan nilai-nilai ini jika belum ada di file. Jika mereka ada, cukup batalkan komentar mereka.
query_cache_size = 268435456 query_cache_type = 1 query_cache_limit = 1048576
Caching kueri dapat secara signifikan meningkatkan kecepatan aplikasi web Anda, terutama jika aplikasi Anda kebanyakan membaca. Pantau status menggunakan metode di atas dan lihat bagaimana cara kerjanya dari waktu ke waktu.