Bugün esas olarak MySQL oturum kilidi bekleme ilişkisi ilkesini tanıtıyoruz. Genel olarak konuşursak, mysql oturum bağımlılığını anlamak istiyorsanız, asıl önemli olan kilit bekleme ile dört tablo arasındaki ilişkiyi anlamaktır.
Buradaki ana mantık şudur: hangi işlemin mevcut oturum tutmalarını kilitlediğini ve hangi işlem kilitlerinin bağlı olduğunu ilk sorgulama ve bu iki kilit aracılığıyla bir grafik ilişkisi elde edilebilir.
Aşağıdaki gibi ilerleyin:
1. Geçerli oturum processlist.id dosyasını sorgulayın
2. processlist.id, innodb_trx tablosundaki TRX_MYSQL_THREAD_ID'ye karşılık gelir, böylece mevcut oturumun işlem kimliğini sorgulayabilirsiniz
3. blocking_trx_id'in mevcut oturumun işlem kimliği olduğu lock_waits'te sorgu, böylece mevcut oturumun holding lock_id'si elde edilir.
4. innodb_lock'a lock_id'e göre, mevcut oturumun kilit bilgilerini sorgulayabilirsiniz.
Aslında, kilit bilgisini bilmeden yalnızca oturumun bağımlılıklarını sorgulamanız gerekiyorsa, üçüncü adıma geçebilirsiniz. Trx_id'i elde etmek için innodb_trx tablosunu kontrol etmek için üçüncü adımda REQUESTING_TRX_ID'yi kullanın ve mevcut oturum tarafından bloke edilmek için işlem listesi tablosunu kontrol edin. Konuşmaların listesi.
Aşağıdaki gibi ilerleyin:
1. Geçerli oturum processlist.id dosyasını sorgulayın
2. processlist.id, innodb_trx tablosundaki TRX_MYSQL_THREAD_ID'ye karşılık gelir, böylece mevcut oturumun işlem kimliğini sorgulayabilirsiniz
3. Mevcut oturumun işlem kimliği olarak REQUESTING_TRX_ID'yi sorgulamak için lock_waits'e gidin, böylece bekleyen mevcut oturumun lock_id'ini alabilirsiniz.
4. innodb_lock'a lock_id'e göre, mevcut oturumun beklediği kilit bilgisini sorgulayabilirsiniz.
Benzer şekilde, aslında, kilit bilgilerini bilmeden yalnızca oturumun bağımlılıklarını sorgulamanız gerekiyorsa, üçüncü adıma geçebilirsiniz. Trx_id'i almak için innodb_trx tablosunu kontrol etmek için üçüncü adımda blocking_trx_id kullanın ve geçerli olanı almak için işlem listesi tablosunu kontrol edin. Seansı bekleyen hangi seanslar kilidi tutuyor.
Aşağıda, kilidin ana tablo kısmının tablo yapısı listelenmiştir:
1. INFORMATION_SCHEMA.PROCESSLIST
İŞLEM LİSTESİ tablosu hangi iş parçacıklarının çalıştığı hakkında bilgi sağlar.
INFORMATION_SCHEMA İsim GÖSTER İsim Açıklamalar
2. INFORMATION_SCHEMA INNODB_TRX Tablosu
3. INFORMATION_SCHEMA INNODB_LOCK_WAITS Tablosu
4. INFORMATION_SCHEMA INNODB_LOCKS Tablosu
Alan sınırlıdır, burada deneysel testlere gerek yoktur, ayrıca kilitlenmeyi basitçe simüle edebilir ve ardından izleniminizi derinleştirmek için bu 4 tabloyu kontrol edebilirsiniz. Daha sonra daha fazla devop ve DBA içeriği paylaşacağım ve ilgilenen arkadaşlar buna dikkat edebilir ~