Rumah >pangkalan data >tutorial mysql >apakah pertanyaan mysql lambat

apakah pertanyaan mysql lambat

青灯夜游
青灯夜游asal
2022-02-17 16:37:107329semak imbas

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.

apakah pertanyaan mysql lambat

Persekitaran pengendalian tutorial ini: sistem windows7, versi mysql8, komputer Dell G3.

Apakah pertanyaan lambat?

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.

Konfigurasi log pertanyaan perlahan

1. Konfigurasi pertanyaan perlahan asas

  • log pertanyaan perlahan teknologi mula dan berhenti
  • slow_query_log_file menentukan laluan storan dan fail log pertanyaan perlahan (lalai diletakkan bersama-sama dengan fail data)
  • long_query_time menentukan nilai masa pelaksanaan SQL untuk merekodkan log pertanyaan perlahan (unit: saat, lalai 10 saat)
  • log_queries_not_using_indexes Sama ada hendak merekodkan indeks SQL yang tidak digunakan
  • log_output Di mana log disimpan [JADUAL] [FAIL] [FAIL, JADUAL]

Selepas konfigurasi pertanyaan perlahan, ia akan merekodkan yang berikut SQL bersyarat

termasuk:

  • penyataan pertanyaan
  • penyataan pengubahsuaian data
  • SQL yang telah digulung semula

2 Operasi praktikal:

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

3 🎜 >

Jika anda ingin melihat pernyataan pertanyaan yang mempunyai kecekapan pelaksanaan yang rendah, anda boleh mendapatkan maklumat daripada log pertanyaan perlahan. Seperti log ralat dan log pertanyaan, log pertanyaan perlahan juga disimpan dalam bentuk fail teks dan boleh dilihat menggunakan alat melihat fail teks biasa.

Contoh 1

Dayakan fungsi log pertanyaan lambat MySQL dan tetapkan masa Perintah dan proses pelaksanaan adalah seperti berikut:

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-logs
Selepas 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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Apakah transaksi dalam mysqlArtikel seterusnya:Apakah transaksi dalam mysql