Rumah >pangkalan data >tutorial mysql >apakah pertanyaan mysql lambat
Dalam mysql, pertanyaan perlahan ialah pernyataan SQL yang direkodkan dalam log dan berjalan agak perlahan Ia merujuk kepada pertanyaan pernyataan SQL yang melebihi ambang masa yang ditetapkan oleh parameter "long_query_time". Pertanyaan perlahan direkodkan dalam log pertanyaan perlahan Melalui log pertanyaan perlahan, anda boleh mengetahui pernyataan pertanyaan yang mempunyai kecekapan pelaksanaan yang rendah untuk pengoptimuman.
Persekitaran pengendalian tutorial ini: sistem windows7, versi mysql8, komputer Dell G3.
Pertanyaan perlahan, seperti namanya, adalah untuk merekodkan pernyataan SQL yang berjalan perlahan dalam log Ini bermakna mysql merekodkan semua pernyataan SQL yang melebihi ambang masa ditetapkan oleh parameter long_query_time.
Pertanyaan perlahan direkodkan dalam log pertanyaan perlahan Melalui log pertanyaan perlahan, anda boleh mengetahui pernyataan pertanyaan yang mempunyai kecekapan pelaksanaan yang rendah untuk pengoptimuman. Log ini boleh membawa bantuan besar kepada pengoptimuman pernyataan SQL.
Secara lalai, log pertanyaan perlahan dimatikan Untuk menggunakan fungsi log pertanyaan perlahan, anda mesti mendayakan fungsi log pertanyaan perlahan.
Selepas konfigurasi pertanyaan perlahan, ia akan merekodkan yang berikut SQL bersyarat
termasuk:
Lihat konfigurasi di atas melalui arahan berikut:
show VARIABLES like '%slow_query_log%' show VARIABLES like '%slow_query_log_file%' show VARIABLES like '%long_query_time%' show VARIABLES like '%log_queries_not_using_indexes%' show VARIABLES like 'log_output'
Tetapkan pertanyaan perlahan parameter:
set global long_query_time=0; ---默认10秒,这里为了演示方便设置为0 set GLOBAL slow_query_log = 1; --开启慢查询日志 set global log_output='FILE,TABLE' --项目开发中日志只能记录在日志文件中,不能记表中
Selepas tetapan selesai, tanya beberapa senarai dan anda akan mendapati terdapat data dalam fail log pertanyaan perlahan.
Tetapi pada komputer saya, saya tidak tahu mengapa, tetapi keputusan sql tidak dapat dilaksanakan secara normal pada masa ini. Ia tidak boleh dikemas kini;
Jadi kita boleh menggunakan kaedah ini:
Cari my.cnf dan tambah kandungan berikut
# 添加慢查询日志 log_output=file slow_query_log=on slow_query_log_file = /tmp/mysql-slow.log log_queries_not_using_indexes=on long_query_time = 1
mysql> SET GLOBAL slow_query_log=ON; Query OK, 0 rows affected (0.05 sec) mysql> SET GLOBAL long_query_time=0.001; Query OK, 0 rows affected (0.00 sec)Disebabkan keperluan untuk menunjukkan. di sini, kami menetapkan masa kepada 0.001 saat, pernyataan SQL yang mengambil masa lebih daripada 0.001 saat untuk dilaksanakan akan direkodkan dalam log. Soal data dalam jadual tb_student Penyataan SQL dan proses pelaksanaan adalah seperti berikut:
mysql> USE test; Database changed mysql> SELECT * FROM tb_student; +----+--------+ | id | name | +----+--------+ | 1 | Java | | 2 | MySQL | | 3 | Python | +----+--------+ 3 rows in set (0.08 sec)Sehubungan itu, sebahagian daripada log pertanyaan perlahan adalah seperti berikut:
# Time: 2020-06-01T01:59:18.368780Z # User@Host: root[root] @ localhost [::1] Id: 3 # Query_time: 0.006281 Lock_time: 0.000755 Rows_sent: 2 Rows_examined: 1034 use test; SET timestamp=1590976758; SHOW VARIABLES LIKE 'slow_query%';4 , Padam log pertanyaan perlahan Kaedah pemadaman log pertanyaan perlahan adalah sama dengan kaedah pemadaman log umum. Boleh dipadam menggunakan arahan mysqladmin. Ia juga boleh dipadam secara manual. Sintaks arahan mysqladmin adalah seperti berikut:
mysqladmin -uroot -p flush-logsSelepas melaksanakan arahan ini, baris arahan akan meminta anda memasukkan kata laluan. Selepas memasukkan kata laluan yang betul, pemadaman akan dilakukan. Log pertanyaan lambat baharu akan secara langsung menimpa log pertanyaan lama dan tidak perlu memadamkannya secara manual. Pentadbir pangkalan data juga boleh memadam log pertanyaan perlahan secara manual Selepas pemadaman, perkhidmatan MySQL perlu dimulakan semula.
Nota: Kedua-dua log pertanyaan umum dan log pertanyaan perlahan menggunakan arahan ini Berhati-hati apabila arahan ini dilaksanakan, log pertanyaan umum dan log pertanyaan perlahan hanya akan wujud fail log baharu. Jika anda perlu menyandarkan fail log pertanyaan lama yang lambat, anda mesti menamakan semula log lama dahulu, kemudian mulakan semula perkhidmatan MySQL atau laksanakan arahan mysqladmin.[Cadangan berkaitan:
tutorial video mysql]
Atas ialah kandungan terperinci apakah pertanyaan mysql lambat. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!