If-Koubou

Mempercepat Situs Web Anda Dengan Caching MySQL Query

Mempercepat Situs Web Anda Dengan Caching MySQL Query (Bagaimana caranya)

Salah satu cara terbaik untuk mempercepat aplikasi web Anda adalah dengan mengaktifkan query caching di database Anda, yang biasanya menyimpan queri SQL yang biasa digunakan di memori untuk akses instan pada halaman berikutnya yang membuat permintaan yang sama.

Alasan metode ini sangat kuat adalah 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 itu pasti tidak ada salahnya.

Catatan: jika aplikasi Anda sering memperbarui tabel, maka cache permintaan akan terus-menerus dibersihkan dan Anda tidak akan mendapat banyak manfaat dari ini. Ini sangat ideal untuk aplikasi yang kebanyakan membaca terhadap database, seperti blog WordPress. Ini juga tidak akan berfungsi jika Anda menggunakan hosting bersama.

Aktifkan Caching dengan Menjalankan Server

Hal pertama yang ingin Anda lakukan adalah memastikan bahwa instalasi MySQL Anda sebenarnya memiliki dukungan query caching yang tersedia. Kebanyakan distribusi lakukan, tetapi Anda harus memeriksanya juga.

Anda akan ingin menjalankan perintah ini dari konsol MySQL Anda, yang akan memberi tahu Anda jika cache query tersedia.

mysql> tampilkan variabel seperti 'have_query_cache'; + ------------------ + ------- + | Variable_name | Nilai | + ------------------ + ------- + | have_query_cache | YA | + ------------------ + ------- + 

Jangan salahkan ini sebagai berarti bahwa cache permintaan sebenarnya diaktifkan, karena sebagian besar penyedia hosting tidak akan mengaktifkan ini secara default. Anehnya, instalasi Ubuntu Feisty saya sudah mengaktifkannya ...

Selanjutnya kita perlu memeriksa dan melihat apakah query caching diaktifkan. Kita perlu memeriksa lebih dari satu variabel, jadi kita dapat melakukannya sekaligus dengan memeriksa variabel kueri%

mysql> tampilkan variabel seperti 'query%'; + ------------------------------ + --------- + | 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 | AKTIF | | query_cache_wlock_invalidate | OFF | | query_prealloc_size | 8192 | + ------------------------------ + --------- + 

Inilah hal-hal penting dalam daftar dan apa artinya:

  • query_cache_size - Ini adalah ukuran cache dalam byte. Menetapkan nilai ini ke 0 akan menonaktifkan cache secara efektif.
  • query_cache_type - Nilai ini harus AKTIF atau 1 untuk cache kueri agar diaktifkan secara default.
  • query_cache_limit - Ini adalah ukuran kueri 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 nilai dalam byte. Misalnya, jika Anda ingin mengalokasikan 8MB ke cache, kami akan menggunakan 1024 * 1024 * 8 = 8388608 sebagai nilainya.

SET GLOBAL query_cache_size = 8388608;

Demikian pula, opsi lain dapat diatur dengan sintaks yang sama:

SET GLOBAL query_cache_limit = 1048576;
SET GLOBAL query_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 kap mesin.

mysql> TAMPILKAN STATUS SEPERTI '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 di set (0,00 detik) 

Anda akan melihat dalam statistik bahwa saya memiliki banyak sisa memori yang tersisa. Jika server Anda menunjukkan banyak prune lowmem, Anda mungkin perlu mempertimbangkan untuk meningkatkan nilai ini, tetapi saya tidak akan menghabiskan terlalu banyak memori pada cache permintaan untuk server web ... Anda perlu 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 dalam file konfigurasi /etc/mysql/my.cnf untuk MySQL. Perhatikan bahwa itu mungkin di lokasi yang berbeda pada instalasi Anda.

Buka file menggunakan editor teks dalam mode sudo atau root, dan kemudian tambahkan nilai-nilai ini jika mereka belum ada dalam file. Jika mereka memang ada, cukup hapus komentar mereka.

query_cache_size = 268435456 query_cache_type = 1 query_cache_limit = 1048576

Caching query dapat meningkatkan kecepatan aplikasi web Anda secara signifikan, terutama jika aplikasi Anda kebanyakan membaca. Pantau status menggunakan metode di atas dan lihat cara kerjanya dari waktu ke waktu.