MySQL ialah sistem pengurusan pangkalan data hubungan yang biasa digunakan dengan prestasi yang baik dan berskala dalam pemprosesan data berskala besar adalah salah satu operasi yang paling kerap digunakan. Walau bagaimanapun, apabila memproses sejumlah besar data, pertanyaan mungkin berjalan perlahan atas pelbagai sebab, menjejaskan prestasi sistem Dalam kes ini, anda perlu menggunakan log pertanyaan lambat MySQL untuk mengenal pasti dan mengoptimumkan isu prestasi pertanyaan. Artikel ini akan memperkenalkan secara terperinci pengetahuan asas dan aplikasi pertanyaan log lambat MySQL.
1. Apakah itu MySQL Query Slow Log
MySQL Query Slow Log ialah alat analisis prestasi MySQL sendiri, digunakan untuk merekod permintaan pertanyaan yang melebihi ambang masa yang ditetapkan. Log lambat pertanyaan merekodkan pelbagai penunjuk prestasi setiap pertanyaan, termasuk masa yang diperlukan, bilangan pelaksanaan, rancangan pelaksanaan, dsb. Melalui metrik ini, pembangun boleh mengenal pasti pertanyaan yang perlu dioptimumkan untuk kecekapan dan mengambil tindakan yang sewajarnya.
Secara amnya, log lambat pertanyaan MySQL tidak didayakan secara lalai dan mesti dikonfigurasikan secara manual untuk mendayakannya. Dalam fail konfigurasi MySQL (my.cnf), anda boleh menetapkan parameter fail konfigurasi untuk membolehkan log lambat pertanyaan. Berikut ialah contoh konfigurasi untuk menanyakan log perlahan:
slow_query_log = 1
slow_query_log_file = /var/log/mysql/mysql-slow.log
log_queries_not_using_indexes
long_query_time = 2
Antaranya, parameter slow_query_log digunakan untuk mendayakan log pertanyaan perlahan, parameter slow_query_log_file menentukan lokasi fail log pertanyaan lambat, parameter log_queries_not_using_indexes digunakan untuk log unused maklumat indeks pertanyaan perlahan, dan parameter long_query_time Digunakan untuk menentukan tamat masa pertanyaan, dalam beberapa saat.
2. Cara mendayakan log pertanyaan lambat MySQL
Dalam versi MySQL 5.7 dan lebih tinggi, log lambat pertanyaan MySQL didayakan secara lalai. Untuk versi MySQL yang lebih lama, seperti MySQL 5.6 atau 5.5, konfigurasi manual diperlukan untuk mendayakan fungsi log lambat pertanyaan. Berikut ialah langkah terperinci untuk mendayakan log lambat pertanyaan MySQL:
Dalam sistem Linux, fail konfigurasi lalai untuk MySQL terletak di / etc/my.cnf . Dalam sistem Windows, fail konfigurasi biasanya terletak dalam C:Program FilesMySQLMySQL Servermy.ini atau C:ProgramDataMySQLMySQL Servermy.ini. Buka fail dengan editor kegemaran anda.
Cari baris berikut dalam fail konfigurasi:
Komen keluar baris Simbol # dialih keluar dan nilai ditukar kepada 1.
slow_query_log = 1
Cari baris berikut:
Alih keluar simbol ulasan # daripada baris ini dan tukar laluan fail ke laluan yang anda mahu.
slow_query_log_file = /var/log/mysql/mysql-slow.log
Cari baris berikut:
Alih keluar simbol ulasan # daripada baris ini dan tukar nilai kepada ambang tamat masa pertanyaan yang anda inginkan dalam beberapa saat.
long_query_time = 2
Cari baris berikut:
Alih keluar simbol ulasan # daripada baris ini dan tukar nilai kepada 1 untuk mendayakan indeks pertanyaan perlahan yang tidak digunakan dalam operasi pembalakan.
log_queries_not_using_indexes = 1
Semak sama ada fail konfigurasi telah disimpan dan tutup fail.
Gunakan arahan berikut untuk memulakan semula perkhidmatan MySQL:
sudo systemctl restart mysqld
3. Bagaimana untuk melihat pertanyaan MySQL Log Perlahan
Sebaik sahaja anda telah mendayakan log lambat pertanyaan MySQL, log lambat pertanyaan akan merekod maklumat pertanyaan secara automatik dan menyimpannya dalam fail log lambat pertanyaan yang ditentukan. Anda boleh menggunakan arahan berikut untuk melihat log pertanyaan perlahan:
sudo tail -n 100 /var/log/mysql/mysql-slow.log
Gunakan arahan ini untuk memaparkan 100 terkini log pertanyaan lambat Rekod. Anda juga boleh menukar bilangan baris yang dipaparkan mengikut keinginan anda. Dalam output, masa yang diambil untuk melaksanakan pertanyaan perlahan dipaparkan, bersama-sama dengan semua jadual dan subkueri yang terlibat dalam pertanyaan.
Jika anda perlu menanyakan log perlahan mengikut penapisan tarikh, anda boleh menggunakan grep dan awk untuk menapis log di Linux, seperti ditunjukkan di bawah:
grep "21-Jun-2022" /var /log/ mysql/mysql-slow.log |. awk '{print substr($2,0,length($2)-1)" "$3$4" "$5}' | 2022 6 Semua cap masa yang mengandungi log pertanyaan perlahan pada 21 haribulan.
4. Cara menganalisis dan mengoptimumkan log pertanyaan lambat MySQL
Sebaik sahaja anda telah mengumpulkan log lambat pertanyaan MySQL yang mencukupi, anda boleh menganalisisnya dan mengetahui pertanyaan yang perlu dioptimumkan. Berikut ialah beberapa amalan terbaik untuk menganalisis dan mengoptimumkan prestasi pertanyaan:
Menghuraikan log pertanyaan perlahan dengan pt-query-digestyum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
yum install percona-toolkitAnda boleh menggunakan arahan berikut untuk menggunakan pt-query-digest untuk menghuraikan log pertanyaan perlahan.
pt-query-digest /var/log/mysql/mysql-slow.log > slow-query-analysis.out
pt-query-digest akan memberikan anda laporan analisis komprehensif tentang log lambat pertanyaan. Anda boleh mencari pertanyaan yang paling kerap berlaku dan mempunyai tamat masa paling lama dan mengenal pasti pertanyaan yang memerlukan pengoptimuman.
Log lambat pertanyaan MySQL merekodkan semua pertanyaan yang gagal menggunakan indeks Anda boleh menggunakan maklumat ini untuk menentukan pertanyaan yang tidak menggunakan yang sesuai indeks medan untuk mempercepatkan pertanyaan. Menambah indeks dalam MySQL boleh mengoptimumkan prestasi pertanyaan. Walau bagaimanapun, perlu diambil perhatian bahawa penambahan terlalu banyak indeks boleh menyebabkan prestasi pertanyaan menurun kerana ia boleh meningkatkan overhed permintaan pertanyaan dan operasi kemas kini.
Log pertanyaan lambat boleh memberitahu anda pertanyaan mana yang perlu dioptimumkan. Jika masa pelaksanaan melebihi ambang yang ditetapkan, pertanyaan akan direkodkan dalam fail log. Anda boleh menyemak pernyataan pertanyaan dan cuba menggunakan pernyataan pertanyaan yang berbeza untuk mengoptimumkan kelajuan pelaksanaan.
Mekanisme caching boleh meningkatkan kelajuan pertanyaan dengan ketara. Jika keputusan pertanyaan sudah wujud dalam cache, hasilnya boleh dikembalikan terus daripada cache, mengelakkan overhed melaksanakan pertanyaan. Mekanisme caching boleh dilaksanakan menggunakan penyedia cache seperti Redis dan Memcached.
Dalam pelayan MySQL, anda boleh mengoptimumkan prestasi keseluruhan pangkalan data dengan melaraskan pelbagai parameter. Parameter ini termasuk saiz cache MySQL, had sambungan, tamat masa pertanyaan, dsb. Dengan melaraskan parameter ini, prestasi perkhidmatan pangkalan data boleh dioptimumkan untuk pertanyaan tertentu.
Ringkasan
MySQL Query Slow Log ialah alat yang sangat berguna yang boleh membantu anda mengenal pasti dan menyelesaikan isu prestasi pertanyaan yang perlahan. Alat ini mudah dimulakan dan disesuaikan, dan maklumat yang dilog boleh membantu anda menganalisis prestasi pertanyaan dan menentukan pertanyaan yang memerlukan pengoptimuman. Mengikuti amalan terbaik dan melaksanakan pengoptimuman yang sesuai boleh meningkatkan prestasi keseluruhan pelayan MySQL anda dan membantu anda mengurus dan mengekalkan pangkalan data yang besar dengan lebih baik.
Atas ialah kandungan terperinci log lambat pertanyaan mysql. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!