Mysql, sebagai sistem pengurusan pangkalan data yang biasa digunakan, memainkan peranan penting dalam aplikasi Internet hari ini. Walau bagaimanapun, untuk pengurusan dan penyelenggaraan Mysql, meningkatkan prestasi dan kestabilannya juga merupakan aspek yang sangat penting. Dalam proses permohonan Mysql, ia juga biasa menemui jadual terkunci Jadi, bagaimana untuk menanyakan jadual terkunci dalam kes ini? Di bawah, kami akan memperkenalkan secara terperinci kaedah Mysql menyoal jadual terkunci.
Masukkan arahan berikut dalam klien Mysql:
show engine innodb status;
Fungsi arahan ini adalah untuk melihat status kunci semasa status Mysql Lock, maklumat status ini dikembalikan kepada pengguna dalam bentuk enjin storan InnoDB. Melalui arahan ini, kita boleh melihat banyak maklumat, termasuk versi enjin storan InnoDB, bilangan kunci yang diperoleh pada masa ini, ID transaksi transaksi terkunci, dsb.
Terdapat parameter trx_rollback_to_savepoint dalam enjin storan Mysql, yang boleh digunakan untuk melihat semua maklumat transaksi yang sedang dikunci. Masukkan arahan berikut dalam klien Mysql:
SELECT r.trx_id waiting_trx_id, r.trx_mysql_thread_id waiting_thread, r.trx_query waiting_query, b.trx_id blocking_trx_id, b.trx_mysql_thread_id blocking_thread, b.trx_query blocking_query FROM information_schema.innodb_lock_waits w INNER JOIN information_schema.innodb_trx b ON b.trx_id = w.blocking_trx_id INNER JOIN information_schema.innodb_trx r ON r.trx_id = w.requesting_trx_id;
Fungsi arahan ini adalah untuk melihat maklumat khusus jadual terkunci dan ID transaksi penyekatan yang sepadan. Dalam keputusan output, waiting_trx_id mewakili ID transaksi yang disekat, waiting_thread mewakili nombor proses yang sepadan dengan transaksi, waiting_query mewakili pernyataan SQL yang dilaksanakan oleh transaksi, blocking_trx_id mewakili ID transaksi yang menyekat transaksi dan blocking_thread mewakili nombor proses yang sepadan dengan transaction. , blocking_query mewakili pernyataan SQL yang dilaksanakan oleh transaksi.
Terdapat jadual innodb_locks dalam enjin storan Mysql, yang boleh digunakan untuk melihat maklumat semua jadual yang sedang dikunci. Masukkan arahan berikut dalam klien Mysql:
SELECT concat('`', t1.`TABLE_SCHEMA`, '`.`', t1.`TABLE_NAME`, '`') AS `table`, t2.`ENGINE`, t2.`TRX_ID`, t2.`LOCK_MODE`, t2.`LOCK_TYPE`, t2.`LOCK_DATA` FROM `information_schema`.`TABLES` t1, `information_schema`.`INNODB_LOCKS` t2 WHERE ( ( t1.`TABLE_SCHEMA` = DATABASE() ) AND ( concat('`', t1.`TABLE_SCHEMA`, '`.`', t1.`TABLE_NAME`, '`') = t2.`LOCK_DATA` ) );
Fungsi arahan ini adalah untuk melihat jadual yang sedang dikunci, di mana 'jadual' mewakili nama jadual yang sedang dikunci, dan 'ENGINE' mewakili pangkalan data yang digunakan oleh enjin storan. Pada masa yang sama, 'TRX_ID' mewakili ID transaksi yang mengunci jadual, 'LOCK_MODE' mewakili mod kunci, 'LOCK_TYPE' mewakili jenis kunci dan 'LOCK_DATA' mewakili data yang dikunci.
Ringkasan:
Terdapat banyak cara untuk menanyakan jadual terkunci dalam Mysql Melalui kaedah di atas, anda boleh melihat jadual yang sedang dikunci dan maklumat transaksi yang sepadan secara terperinci, yang berguna untuk pengurusan. Ahli memahami kesesakan prestasi Mysql dan menyelesaikan masalah dari punca utama. Walau bagaimanapun, apabila menanyakan maklumat jadual terkunci, anda harus cuba mengelak daripada membunuh secara paksa proses melalui kill -9 dan operasi lain, jika tidak, ia mungkin membawa hasil yang tidak dapat diramalkan. Oleh itu, dalam proses permohonan sebenar, adalah perlu untuk merawat situasi jadual terkunci Mysql dengan berhati-hati, dan menerima pakai penyelesaian dan strategi yang sepadan berdasarkan seni bina perniagaan dan sistem khusus untuk meningkatkan kecekapan operasi dan kestabilan Mysql.
Atas ialah kandungan terperinci jadual terkunci pertanyaan mysql. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!