MySQL tablo (PHP) readlock durumda olduğunda Algılama

3 Cevap php

Ben MySQL veritabanı readlock olduğu olduğunda algılamak ve bir hata mesajı atmak için bir PHP uygulaması almak gerekiyor. Kolay, ancak herhangi bir MySQL komut biz sorgu unlock için sıraya gibi sistem, takılıyorum mevcut kilit durumunu kontrol etmek çalıştırmak yerine, sadece sahip olabilir var mı?

Alkış,

Johnathon

Edit: veritabanı DBA tarafından readlock koymak ediliyor, ama bizim müşteri otomatik olarak bu suituation işlemek için uygulamayı istiyor ... Ben bu yüzden :-) uzmanlar soran, dokümanlar geçmekte iken bir şey bulamadı ettik

3 Cevap

Docs kontrol ettikten sonra PHP'nin MySQL C API ile bunu yapmanın bir yolu olarak görünmüyor

Siz "GÖSTER MOTORU [EngineName] DURUMUNU" çalışan INNDOB, MyISAM ile motor adını değiştirerek veya kilitli tablo çalışan ne olursa olsun motor ile tespit kilitlenmeleri gözden geçirebilirsiniz.

Ayrıca, komut satırından "Mysqladmin debug" çalıştırarak bilgiyi kilit alabilirsiniz

İnsanlar FİYATLARI KİLİTLER komutu talep var ama henüz yok.

Bu benim docs kurabilir hepsi. Ben benim için çok yararlı olabilir gibi başkasının, bunun için bir çözüm vardır umuyorum.

PHP komut MySQL sunucusu bir yanıt bekliyor beri, o yürütür gibi işlediği sorgu ne olduğunu devlet belirlemek zor olabilir. Sorgularda okuma kilitleri ile ilgili sorunlar yaşıyorsanız, muhtemelen daha iyi durumda problem çözme hakkında gidiş ve sorguları yerine sadece birlikte biraz kabataslak eylemcileri botching daha, bu komut asmak için neden noktaya kilitli alıyorsanız neden soruşturma konum Bunun için, kilitli sorguları altta yatan ciddi bir soruna işaret edebilir çünkü.

MySQL belgeleri ve performansını artırmak için MySQL sunucusu için başlangıç ​​değişkenleri çimdik nasıl işaretçileri için mysql performans blog danışın. Ayrıca dikkatli bir şekilde yönetilen bir şekilde PHP oturumları kullandığınızdan emin olun - Eğer tek bir kullanıcının sunucuya aynı zamanda asenkron istekleri sürü varsa oturum dosya birden çok iş parçacığı kilitli olduğundan, PHP bazen veritabanı yapma, asmak sorgular onunla asmak. Bu karşılaştığımız ciddi bir sorundur.

Kilitli sorguları gidermek için oldukça zor olabilir, ama yapmanız için en iyi şey, onlar kilitli alıyoruz neden kök nedenini araştırmak ve çözmek için. FİYATLARI TAM PROCESSLIST işletilmesi; veritabanına size tüm açık bağlantılarının bir listesini verecektir ve size sonraki sorguları kilitleme yavaş çalışan sorguları tanımlamak yardımcı olmak için bilgi verebilir.

Bu, iyi şanslar yardımcı olur umarım.

App tek şey erişen ve potansiyel dedi veritabanı kilitleme eğer veritabanına erişmeye çalıştığınız önce, size GET_LOCK kullanabilir ve RELEASE_LOCK mysql fonksiyonları.

Eğer kilitli nasıl kontrol yoksa, o zaman ben burada kendimi daha akıllı millet ertelemek gerekir.