Rumah > Artikel > pangkalan data > Bagaimana untuk menanyakan pernyataan sql perlahan dalam mysql
Kaedah: 1. Jika pertanyaan perlahan tidak didayakan, gunakan "set global slow_query_log='ON';" untuk mendayakan pertanyaan perlahan 2. Gunakan "set global slow_query_log_file=path" untuk menetapkan storan fail pertanyaan perlahan lokasi; 3. Gunakan Hanya "subl path" untuk menanyakan fail.
Persekitaran pengendalian tutorial ini: sistem centos 7, versi mysql8.0.22, komputer Dell G3.
Rekod carian penyataan sql perlahan dalam Mysql
Log pertanyaan perlahan slow_query_log digunakan untuk merekod penyataan sql yang perlahan log untuk mencari pernyataan SQL yang lebih perlahan, supaya SQL yang lebih perlahan dapat dioptimumkan.
Log masuk ke pangkalan data mysql:
1 Periksa sama ada pertanyaan perlahan semasa didayakan
dan masa yang ditentukan oleh pertanyaan perlahan:
show variables like 'slow_query_log'; show variableslike 'long_query_time';
Jika hasil pertanyaan anda MATI, anda perlu mengubah suai melalui tetapan yang berkaitan . ON keadaan:
set global slow_query_log='ON';
Tetapkan masa penjejakan pertanyaan perlahan kepada 1s:
Di sini anda menetapkan Selepas itu, dunia tidak akan menjadi 1s serta-merta, ia akan berkuat kuasa selepas pangkalan data dimulakan semula:
2. Tetapkan lokasi di mana fail log pertanyaan perlahan disimpan:
set global slow_query_log_file='/var/lib/mysql/test_1116.log';
3 Lihat fail yang dikonfigurasikan berikut:
sudo subl /var/lib/mysql/test_1116.log
Kembangkan pengetahuan :
Kaedah penyelesaian masalah untuk pertanyaan lambat dalam pangkalan data MySQL
Baru-baru ini saya menghadapi masalah tindak balas pangkalan data yang perlahan beberapa kali. Saya menyusun aliran pemprosesan dan analisis idea, dan melaksanakan skrip. Harap ini membantu orang lain.
Prestasi pertanyaan lambat MySQL
Sudah jelas bahawa kebanyakan fungsi aplikasi diperlahankan, tetapi ia tidak sepenuhnya tidak boleh digunakan selepas menunggu lama. Tetapi keseluruhan sistem kelihatan sangat tersekat.
Bilangan pertanyaan perlahan
Secara umumnya, untuk pelayan MySQL yang biasa beroperasi, bilangan pertanyaan perlahan seminit adalah dalam satu digit. Sistem mungkin menghadapi masalah apabila hampir 100, tetapi ia masih boleh digunakan. Bilangan pertanyaan lambat yang telah salah beberapa kali ini telah mencapai lebih daripada 1,000.
Bilangan pertanyaan perlahan disimpan dalam jadual slow_log dalam perpustakaan mysql.
SELECT * FROM `slow_log` where start_time > '2019/05/19 00:00:00';
Dengan cara ini, anda boleh mengetahui pertanyaan lambat hari itu.
Lihat status pertanyaan semasa
Semua orang biasanya menggunakan senarai proses tunjukkan untuk melihat pertanyaan yang sedang dilaksanakan dalam sistem, sebenarnya, data ini juga disimpan dalam jadual senarai proses dalam information_schema library, jadi jika Untuk melakukan pertanyaan bersyarat, adalah lebih mudah untuk menanyakan jadual ini secara langsung.
Contohnya, lihat semua proses semasa
select * from information_schema.processlist
Lihat pertanyaan yang sedang berjalan dan isikannya mengikut masa pelaksanaan
select * from information_schema.processlist where info is not null order by time desc
Pangkalan data berjalan seperti biasa, kerana a Kelajuan pelaksanaan pertanyaan adalah sangat pantas, dan bilangan pertanyaan yang maklumatnya tidak ditangkap oleh pilihan kami akan menjadi sangat kecil. Perpustakaan dengan beban berat seperti kita biasanya hanya boleh mencari beberapa item. Jika berpuluh-puluh pertanyaan dengan maklumat tidak kosong boleh ditemui pada satu masa, ia juga boleh dianggap bahawa terdapat masalah dengan sistem.
Masalah Sistem dan Kedudukan
Apabila kami perasan bahawa sistem semakin perlahan, kami segera menyemak menggunakan pertanyaan perlahan dan menyemak senarai proses Kami mendapati bahawa bilangan pertanyaan perlahan seminit meningkat kepada lebih banyak daripada 1,000 Pada masa yang sama, sejumlah besar pertanyaan sedang dilaksanakan.
Oleh kerana keutamaan utama ialah memulihkan operasi normal sistem secepat mungkin, cara paling langsung untuk mempengaruhinya ialah menyemak jumlah hasil pertanyaan dalam senarai proses berada dalam keadaan kunci, atau telah dilaksanakan untuk masa yang lama, dan padamkan proses ini Gunakan perintah bunuh untuk membunuhnya. Dengan terus membunuh proses ini yang boleh menyebabkan kesesakan sistem, sistem akhirnya boleh dipulihkan buat sementara waktu. Sudah tentu, ini hanyalah langkah hentian jurang.
Selain itu, perkara yang paling penting sudah tentu untuk menganalisis pertanyaan yang menyebabkan kesesakan sistem Kami masih menggunakan pertanyaan perlahan untuk analisis.
Terdapat beberapa penunjuk penting dalam hasil pertanyaan jadual pertanyaan yang perlahan:
masa mula masa_mula Parameter ini harus digunakan untuk memadankan masa masalah sistem untuk mencari pertanyaan mana yang menjadi punca.
masa pertanyaan masa_pertanyaan
rows_sent dan rows_examined ialah bilangan keputusan yang dihantar dan bilangan baris yang diimbas oleh pertanyaan kedua-dua nilai ini amat penting, terutamanya rows_examined. Pada asasnya ia memberitahu kami pertanyaan mana yang merupakan pertanyaan "besar" untuk diberi perhatian.
Dalam operasi sebenar, kami juga menganalisis pertanyaan dengan sejumlah besar baris_diperiksa satu demi satu, menambah indeks dan mengubah suai penulisan pernyataan pertanyaan untuk menyelesaikan masalah sepenuhnya.
Memproses hasil dan refleksi
Selepas menyemak dan membetulkan semua pertanyaan perlahan, bilangan pertanyaan lambat MySQL semasa seminit berlegar antara 1 dan 2, dan beban CPU juga sangat rendah. Masalahnya pada dasarnya diselesaikan.
Memikirkan punca masalah tersebut, terdapat beberapa perkara yang perlu diberi perhatian:
1 Masalah pangkalan data selalunya tidak mendatangkan masalah apabila mereka pergi ke dalam talian, tetapi ada a proses kumulatif, yang terus terkumpul. Pernyataan pertanyaan akan meningkatkan beban sistem secara beransur-ansur, dan penyedutan terakhir yang mematahkan belakang unta sering kelihatan tidak dapat dijelaskan
2 keluaran atau pelancaran ciri. Sebaliknya, apabila penggunaan pengguna meningkat, jumlah data terkumpul dan meletup
3 Memandangkan kemunculan masalah adalah proses kumulatif, adalah perlu untuk menjalankan semakan sebelum setiap keluaran kod
4. Penambahan indeks adalah sangat penting
5. Pemantauan pertanyaan lambat juga perlu dimasukkan dalam skop pemantauan Zabbix
Pembelajaran yang disyorkan: tutorial video mysql
Atas ialah kandungan terperinci Bagaimana untuk menanyakan pernyataan sql perlahan dalam mysql. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!