Cara Mengoptimalkan MySQL dengan Query Cache di Ubuntu 18.04 - MastahTeknik

Kamis, 18 Juli 2019

Cara Mengoptimalkan MySQL dengan Query Cache di Ubuntu 18.04

cacequery

Cache permintaan adalah fitur MySQL yang menonjol yang mempercepat pengambilan data dari basis data. Ini mencapai ini dengan menyimpan SELECTpernyataan MySQL bersama dengan catatan yang diambil yang diatur dalam memori, maka jika klien meminta pertanyaan yang sama, ia dapat melayani data lebih cepat tanpa mengeksekusi perintah lagi dari database.

Dibandingkan dengan data yang dibaca dari disk, data yang di-cache dari RAM (Memori Akses Acak) memiliki waktu akses yang lebih singkat, yang mengurangi latensi dan meningkatkan operasi input / output (I / O). Sebagai contoh, untuk situs WordPress atau portal e-commerce dengan panggilan baca tinggi dan perubahan data yang jarang, cache kueri dapat secara drastis meningkatkan kinerja server database dan membuatnya lebih terukur.

Sebelum mengatur cache permintaan, Anda akan memeriksa apakah versi MySQL Anda mendukung fitur ini. Pertama, sshke server Ubuntu 18.04 Anda:
Kemudian, jalankan perintah berikut untuk masuk ke server MySQL sebagai pengguna root:
ce1
Masukkan kata sandi root server MySQL Anda ketika diminta dan kemudian tekan ENTER untuk melanjutkan.
Gunakan perintah berikut untuk memeriksa apakah cache permintaan didukung:
ce2
Anda harus mendapatkan output yang mirip dengan yang berikut:
ce3
Anda dapat melihat nilai have_query_cachediatur ke YES dan ini berarti cache permintaan didukung. Jika Anda menerima output yang menunjukkan bahwa versi Anda tidak mendukung cache kueri, silakan lihat catatan di bagian Pendahuluan untuk informasi lebih lanjut.
Sekarang Anda telah memeriksa dan mengonfirmasi bahwa versi MySQL Anda mendukung cache permintaan, Anda akan beralih ke memeriksa variabel yang mengontrol fitur ini di server database Anda.

Di MySQL, sejumlah variabel mengontrol cache kueri. Pada langkah ini, Anda akan memeriksa nilai-nilai default yang dikirimkan dengan MySQL dan memahami apa yang masing-masing variabel kontrol.
Anda dapat memeriksa variabel-variabel ini menggunakan perintah berikut:
ce4
Anda akan melihat variabel yang tercantum dalam output Anda:
ce5
The query_cache_limitnilai menentukan ukuran maksimum hasil query individu yang dapat di-cache. Nilai standarnya adalah 1.048.576 byte dan ini setara dengan 1MB.
MySQL tidak menangani data cache dalam satu potongan besar; alih-alih ditangani dalam blok. Jumlah minimum memori yang dialokasikan untuk setiap blok ditentukan oleh query_cache_min_res_unitvariabel. Nilai standarnya adalah 4.096 byte atau 4KB.

query_cache_sizemengontrol jumlah total memori yang dialokasikan untuk cache kueri. Jika nilainya diatur ke nol, artinya cache permintaan dinonaktifkan. Dalam kebanyakan kasus, nilai default dapat diatur ke 16.777.216 (sekitar 16MB). Juga, perlu diingat bahwa query_cache_sizemembutuhkan setidaknya 40KB untuk mengalokasikan strukturnya. Nilai yang dialokasikan di sini disejajarkan dengan blok 1024 byte terdekat. Ini berarti nilai yang dilaporkan mungkin sedikit berbeda dari yang Anda tetapkan.

MySQL menentukan permintaan untuk melakukan cache dengan memeriksa query_cache_typevariabel. Menetapkan nilai ini ke 0atau OFFmencegah caching atau pengambilan kueri yang di-cache. Anda juga dapat mengaturnya 1agar mengaktifkan caching untuk semua permintaan kecuali yang dimulai dengan SELECT SQL_NO_CACHEpernyataan. Nilai 2memberitahu MySQL hanya untuk permintaan cache yang dimulai dengan SELECT SQL_CACHE perintah.

Variabel query_cache_wlock_invalidatemengontrol apakah MySQL harus mengambil hasil dari cache jika tabel yang digunakan pada kueri dikunci. Nilai standarnya adalah OFF.
Pada langkah ini Anda akan membuat database contoh dan menyisipkan beberapa data untuk melihat kinerja MySQL tanpa cache permintaan.
Saat masih masuk ke server MySQL Anda, buat database dan beri nama sample_dbdengan menjalankan perintah berikut:
ce6

ce7
Kemudian beralih ke database:
ce8

ce9

Buat tabel dengan dua bidang ( customer_iddan customer_name) dan beri nama customers:
ce10

ce11
Kemudian, jalankan perintah berikut untuk memasukkan beberapa sampel data:
ce12

ce13
Langkah selanjutnya adalah memulai profiler MySQL , yang merupakan layanan analisis untuk memantau kinerja permintaan MySQL. Untuk mengaktifkan profil untuk sesi saat ini, jalankan perintah berikut, atur ke 1, yang aktif:
ce14

ce15
Kemudian, jalankan kueri berikut untuk mengambil semua pelanggan:
ce16
Anda akan menerima output berikut:
ce17
Lalu, jalankan SHOW PROFILES perintah untuk mengambil informasi kinerja tentang SELECTkueri yang baru saja Anda jalankan:
ce18
Anda akan mendapatkan hasil yang serupa dengan yang berikut:
ce19
Output menunjukkan total waktu yang dihabiskan oleh MySQL ketika mengambil catatan dari database. Anda akan membandingkan data ini pada langkah selanjutnya ketika cache kueri diaktifkan, jadi catat Duration. Anda dapat mengabaikan peringatan di dalam output karena ini hanya menunjukkan bahwa SHOW PROFILESperintah akan dihapus dalam rilis MySQL di masa depan dan diganti dengan Skema Kinerja .
Selanjutnya, keluar dari Antarmuka Baris Perintah MySQL.
ce20
Anda telah menjalankan kueri dengan MySQL sebelum mengaktifkan cache kueri dan mencatat Durationwaktu yang dihabiskan untuk mengambil catatan. Selanjutnya, Anda akan mengaktifkan cache permintaan dan melihat apakah ada peningkatan kinerja saat menjalankan permintaan yang sama.
Pada langkah sebelumnya, Anda membuat sampel data dan menjalankan SELECTpernyataan sebelum Anda mengaktifkan cache kueri. Pada langkah ini, Anda akan mengaktifkan cache permintaan dengan mengedit file konfigurasi MySQL.
Gunakan nanountuk mengedit file:
ce21
Tambahkan informasi berikut ke akhir file Anda:
ce22
Di sini Anda telah mengaktifkan cache permintaan dengan mengatur query_cache_typeto 1. Anda juga telah mengatur ukuran batas kueri individual ke 256Kdan menginstruksikan MySQL untuk mengalokasikan 10megabita ke cache permintaan dengan menetapkan nilai query_cache_sizeto 10M.
Simpan dan tutup file tersebut dengan menekan CTRL+ X, Y, kemudian ENTER. Kemudian, restart server MySQL Anda untuk mengimplementasikan perubahan:
ce23
Anda sekarang telah mengaktifkan cache permintaan.
Setelah mengonfigurasi cache kueri dan me-restart MySQL untuk menerapkan perubahan, Anda akan melanjutkan dan menguji kinerja MySQL dengan fitur yang diaktifkan.
Pada langkah ini, Anda akan menjalankan kueri yang sama dengan yang Anda jalankan di Langkah 3 sekali lagi untuk memeriksa bagaimana cache kueri telah mengoptimalkan kinerja server MySQL Anda.
Pertama, sambungkan ke server MySQL Anda sebagai pengguna root :
ce24
Masukkan kata sandi root Anda untuk server database dan tekan ENTER untuk melanjutkan.
Sekarang konfirmasikan konfigurasi Anda yang diatur pada langkah sebelumnya untuk memastikan Anda mengaktifkan cache permintaan:
ce25
Anda akan melihat output berikut:
ce26
Variabel query_cache_typediatur ke ON; ini mengonfirmasi bahwa Anda mengaktifkan cache permintaan dengan parameter yang ditentukan pada langkah sebelumnya.
Beralih ke sample_dbdatabase yang Anda buat sebelumnya.
ce27
Mulai profiler MySQL:
ce28
Kemudian, jalankan kueri untuk mengambil semua pelanggan setidaknya dua kali untuk menghasilkan informasi profil yang cukup.
Ingat, setelah Anda menjalankan kueri pertama, MySQL akan membuat cache hasil dan karenanya, Anda harus menjalankan kueri dua kali untuk memicu cache:
ce29
Kemudian, daftarkan informasi profil:
ce30
Anda akan menerima output yang mirip dengan yang berikut:
ce31
Seperti yang Anda lihat, waktu yang diperlukan untuk menjalankan kueri berkurang secara drastis dari 0.00044075(tanpa cache kueri pada Langkah 3) menjadi 0.00026000(kueri kedua) pada langkah ini.
Anda dapat melihat pengoptimalan dari mengaktifkan fitur cache kueri dengan memetakan kueri pertama secara terperinci:
ce32

ce33
Jalankan perintah berikut untuk menampilkan informasi profil untuk permintaan kedua, yang di-cache:
ce34

ce35

Output dari profiler menunjukkan bahwa MySQL mengambil lebih sedikit waktu pada kueri kedua karena ia dapat mengambil data dari cache kueri alih-alih membacanya dari disk. Anda bisa membandingkan dua set output untuk masing-masing kueri. Jika Anda melihat informasi profil aktif QUERY 2, status sending cached result to clientmenunjukkan bahwa data dibaca dari cache dan tidak ada tabel yang dibuka karena Opening tablesstatusnya hilang.
Dengan fitur cache kueri MySQL diaktifkan di server Anda, sekarang Anda akan mengalami peningkatan kecepatan baca.

Tidak ada komentar:

Posting Komentar

Post Top Ad