Bagaimana untuk menanyakan jadual terkunci dalam mysql

WBOY
Lepaskan: 2022-01-12 11:48:11
asal
62015 orang telah melayarinya

Kaedah: 1. Gunakan perintah "tunjukkan OPEN TABLES di mana In_use > 0;" untuk melihat status jadual terkunci 2. Gunakan perintah "SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS" untuk menanyakan jadual yang dikunci.

Bagaimana untuk menanyakan jadual terkunci dalam mysql

Persekitaran pengendalian tutorial ini: sistem Windows 10, versi mysql8.0.22, komputer Dell G3.

Cara untuk menanyakan jadual terkunci dalam mysql

1. Periksa sama ada jadual dikunci:

(1) Secara langsung dalam pelaksanaan baris arahan Mysql: tunjukkan status enjin innodbG.

(2) Semak pernyataan sql yang menyebabkan kebuntuan, analisis situasi indeks, dan kemudian optimumkan sql.

(3) Kemudian tunjukkan senarai proses untuk menyemak pernyataan SQL yang menyebabkan kebuntuan mengambil masa yang lama.

(4) tunjukkan status seperti ‘%lock%.

2. Semak status kunci meja dan tamatkan langkah buntu:

(1) Semak status kunci meja: tunjukkan JADUAL TERBUKA di mana In_use > .

(2) Proses pertanyaan: tunjukkan jadual pertanyaan senarai proses dikunci proses;

(3) Analisis SQL untuk mengunci jadual: analisis SQL yang sepadan, tambah indeks pada jadual, tambah indeks pada medan biasa dan tambah indeks pada medan berkaitan jadual.

(4) Periksa apa yang sedang dikunci: PILIH * DARI INFORMATION_SCHEMA.INNODB_LOCKS.

(5) Lihat perkara menunggu kunci: PILIH * DARI INFORMATION_SCHEMA.INNODB_LOCK_WAITS.

Bagaimana untuk menanyakan jadual terkunci dalam mysql

Maklumat lanjutan

Arahan paparan status kunci MySQL:

Menyemak jadual: Menyemak jadual data (ini automatik).

Menutup jadual: Data yang diubah suai dalam jadual sedang disiram ke cakera dan jadual yang telah digunakan sedang ditutup. Ini adalah operasi yang pantas, tetapi jika ini tidak berlaku, anda harus mengesahkan bahawa ruang cakera penuh atau bahawa cakera berada di bawah beban berat.

Sambung Keluar: Pelayan hamba replikasi sedang menyambung ke pelayan induk.

Menyalin ke jadual tmp pada cakera: Memandangkan set hasil sementara lebih besar daripada tmp_table_size, jadual sementara sedang ditukar daripada storan memori kepada storan cakera untuk menyimpan memori.

Mencipta jadual tmp: Jadual sementara sedang dibuat untuk menyimpan beberapa hasil pertanyaan.

memadam daripada jadual utama: Pelayan sedang melaksanakan bahagian pertama pemadaman berbilang jadual dan baru sahaja memadamkan jadual pertama.

Memadam daripada jadual rujukan: Pelayan sedang melaksanakan bahagian kedua pemadaman berbilang jadual dan sedang memadamkan rekod daripada jadual lain.

Membilas jadual: FLUSH TABLES sedang dilaksanakan, menunggu urutan lain menutup jadual data.

Dibunuh: Jika permintaan bunuh dihantar ke utas, utas akan menyemak bendera bunuh dan melepaskan permintaan bunuh seterusnya. MySQL akan menyemak bendera bunuh dalam setiap gelung utama, tetapi dalam beberapa kes benang mungkin mati selepas tempoh yang singkat. Jika benang dikunci oleh benang lain, permintaan bunuh akan berkuat kuasa serta-merta apabila kunci dilepaskan.

Dikunci: Dikunci oleh pertanyaan lain.

Menghantar data: Rekod pertanyaan SELECT sedang diproses dan hasilnya dihantar kepada pelanggan.

Isih untuk kumpulan: Isih untuk GROUP BY.

Isih untuk pesanan: Isih untuk PESANAN OLEH.

Jadual pembukaan: Proses ini harus pantas melainkan diganggu oleh faktor lain. Sebagai contoh, jadual data tidak boleh dibuka oleh benang lain sebelum pernyataan ALTER TABLE atau LOCK TABLE dilaksanakan. Cuba membuka meja.

Mengalih keluar pendua: Pertanyaan SELECT DISTINCT sedang dilaksanakan, tetapi MySQL tidak dapat mengoptimumkan rekod pendua tersebut pada peringkat sebelumnya. Oleh itu, MySQL perlu mengalih keluar rekod pendua sekali lagi sebelum menghantar keputusan kepada pelanggan.

Buka semula meja: Kunci pada meja diperoleh, tetapi kunci tidak boleh diperoleh sehingga struktur jadual diubah suai. Kunci telah dilepaskan, jadual data telah ditutup dan percubaan dibuat untuk membuka semula jadual data.

Baiki dengan mengisih: Arahan pembaikan sedang mengisih untuk membuat indeks.

Baiki dengan keycache: Arahan pembaikan menggunakan cache indeks untuk mencipta indeks baharu satu demi satu. Ia akan menjadi lebih perlahan daripada Pembaikan dengan mengisih.

Mencari baris untuk kemas kini: Mencari rekod yang memenuhi syarat untuk kemas kini. Ia mesti dilengkapkan sebelum KEMASKINI adalah untuk mengubah suai rekod yang berkaitan.

Tidur: Menunggu pelanggan menghantar permintaan baharu.

Kunci sistem: Menunggu untuk mendapatkan kunci sistem luaran. Jika anda tidak menjalankan berbilang pelayan mysqld pada masa ini yang meminta jadual yang sama pada masa yang sama, anda boleh melumpuhkan kunci sistem luaran dengan menambah parameter --skip-external-locking.

Menaik taraf kunci: INSERT DELAYED sedang cuba mendapatkan jadual kunci untuk memasukkan rekod baharu.

Mengemas kini: Mencari rekod yang sepadan dan mengubah suainya. Kunci Pengguna: Menunggu GET_LOCK().

Menunggu jadual: Urutan dimaklumkan bahawa struktur jadual data telah diubah suai dan jadual data perlu dibuka semula untuk mendapatkan struktur baharu. Kemudian, untuk membuka semula jadual data, anda mesti menunggu sehingga semua urutan lain menutup jadual.

menunggu sisipan pengendali: INSERT DELAYED telah memproses semua operasi sisipan yang belum selesai dan sedang menunggu permintaan baharu.

Pembelajaran yang disyorkan: tutorial video mysql

Atas ialah kandungan terperinci Bagaimana untuk menanyakan jadual terkunci dalam mysql. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan