Rumah >pangkalan data >tutorial mysql >Bincangkan secara terperinci jadual terkunci pertanyaan mysql

Bincangkan secara terperinci jadual terkunci pertanyaan mysql

PHPz
PHPzasal
2023-04-17 09:19:481030semak imbas

MySQL ialah perisian sumber terbuka berdasarkan sistem pengurusan pangkalan data hubungan. Ia digunakan secara meluas dalam aplikasi dan menyediakan pembangun cara yang boleh dipercayai untuk menyimpan data. Walau bagaimanapun, kerana MySQL terdedah kepada masalah mengekalkan jadual terkunci apabila memproses sejumlah besar data, pembangun perlu mengetahui cara untuk menanyakan jadual terkunci.

Apabila membangun menggunakan MySQL, anda sering menghadapi keperluan untuk menanyakan jadual yang dikunci. MySQL menyediakan pelbagai cara untuk menanyakan jadual yang sedang dikunci, termasuk menggunakan alat baris arahan, menyoal pandangan sistem dan menanyakan jadual skema maklumat. Setiap kaedah pertanyaan dibincangkan secara terperinci di bawah dan beberapa contoh diberikan.

  1. Gunakan alatan baris perintah untuk menanyakan jadual yang dikunci
    Gunakan arahan SHOW PROCESSLIST pada baris arahan untuk menanyakan proses dan urutan yang sedang dijalankan. Oleh kerana setiap jadual dalam MySQL mempunyai ID benang yang dikaitkan dengannya, anda boleh menggunakan arahan ini untuk menentukan jadual yang sedang dikunci. Sebagai contoh, arahan berikut menanyakan semua pertanyaan yang sedang berjalan dan mencari yang mana satu mengunci jadual yang ditentukan:
SHOW PROCESSLIST;

Ini akan memaparkan senarai semua urutan MySQL yang sedang berjalan. Dalam senarai, anda boleh melihat maklumat berguna seperti ID, pengguna, hos, pangkalan data, arahan, masa dan status. Sebagai contoh, jika terdapat benang mengunci jadual bernama "table_name", anda boleh mencari medan "LOCK" dalam lajur "Command". Di samping itu, dalam lajur "Maklumat", anda boleh melihat pernyataan SQL yang dilaksanakan oleh pertanyaan.

  1. Menyiasat pandangan sistem dan menentukan jadual terkunci
    MySQL juga menyediakan sejumlah besar paparan sistem untuk menyemak urutan yang sedang berjalan, maklumat kunci dan mutex, sesi dan sifatnya , status pangkalan data, dsb. Tanya paparan berikut untuk menentukan jadual yang sedang dikunci:
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS WHERE LOCK_TABLE LIKE '%table_name%';

Dalam pernyataan pertanyaan ini, anda boleh menggantikan "nama_jadual" dengan nama jadual yang anda ingin tanya. Kenyataan ini mengembalikan semua baris dan jadual yang sedang dikunci oleh enjin InnoDB. Selain itu, anda boleh menanyakan paparan INFORMATION_SCHEMA.INNODB_LOCK_WAITS untuk mencari urutan menunggu sumber kunci.

  1. Soal jadual skema maklumat untuk menentukan jadual mana yang dikunci
    Jadual skema maklumat dalam MySQL membolehkan pengguna memeriksa pelbagai sumber yang digunakan oleh pelayan pangkalan data. Ini termasuk jadual terbuka, urutan semasa, baris dan jadual terkunci, masa dan banyak lagi. Anda boleh mencari jadual yang sedang dikunci dengan menanyakan jadual berikut:
SELECT * FROM information_schema.TABLES WHERE ENGINE = 'InnoDB' AND TABLE_NAME = 'table_name';

Dalam pertanyaan di atas, anda boleh menggantikan "nama_jadual" dengan nama jadual yang anda ingin tanya. Pertanyaan ini akan mengembalikan butiran pelayan jadual dan enjin storan yang ditentukan, dan jika jadual sedang dikunci, jenis kunci boleh dilihat dalam medan LOCK_TYPE.

Ringkasan:
MySQL boleh menanyakan jadual yang dikunci dengan cara yang berbeza. Gunakan alat baris perintah untuk menanyakan urutan yang sedang berjalan dan mencari urutan yang mengunci jadual tertentu untuk menentukan operasi yang sedang dijalankan, operasi menunggu dan operasi untuk mendapatkan kunci maklumat_schema.TABLES untuk mencari lajur "QUERY" untuk Mengenal pasti; sama ada pertanyaan yang dilaksanakan adalah mengenai kunci atau beberapa pertanyaan lain. Tetapi perlu diingat bahawa sebelum membuat perubahan, sila baca dokumentasi MySQL rasmi dengan teliti untuk memahami semua pengetahuan dan cadangan yang diperlukan untuk mengelakkan kerugian yang tidak perlu.

Atas ialah kandungan terperinci Bincangkan secara terperinci jadual terkunci pertanyaan mysql. 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