MySQL / PHP Bağlantısı, yapılandırma, Dizin, Sorgu, seçenekleri dışında tamponlar, NFI im

1 Cevap php

her şeyden önce, benim ana soru:

Yavaş veritabanı erişimi ile ilgili bir değişken sorun haline çalıştırdığınızda bazı iyi sorun giderme teknikleri nelerdir.

Background: I have a system that is handling multiple db connections so that I may use unbuffered queries on the main table select. I have an issue where I see a pause on a very simple query (select id,name,title,etc from working where non-unique-indexed-id limit 1) the system then either inserts if no record found or overwrites as an update.

Ben arasında aynı sorguyu işleme hiçbir duraklar ile bu sorgulara çok ikinci duraklar görüyorum.

Indeksler, bozuk almak olabilir veya () (13 karakter) güncellemek için çok uzun sürüyor, tamponsuz veya tamponlu bu nokta sorguya az fark yapar.

Bu (onlar inşa ve bir koşudan sonra atılır ilgili biraz farklı süreçleri var ama saklanan veriler aynıdır 30 farklı kopyalar etrafında var, onları işledi) farklı ardışık koşulara farklı zamanlarda, zaman aralıkları birden fazla tablo üzerinde oluyor beklemek çok farklı olduğunu.

Ayrıca, ben mysql processlist bakıyor ve bu sorgu bekleyen göremiyorum, bu beni php cli ve mysql (aynı kutu) arasında onun bir transfer sorunu inanıyorum yapıyor

Maalesef bu biraz mantıklı - eğer beynim kesinlikle kızarmış ve şu anda bitmiştir.

Kimse eğer öyleyse, nasıl kök nedenini izini vermedi, daha önce böyle bir şey geldi?

1 Cevap

Ben sadece son mytop oldukça açıklayıcı olabilir, hangi alt saniyelik aralıklarla yoklar fark ettim.

Bana göre bu sadece masa MyISAM motor masalarda kilitleme gibi geliyor. Eğer olsa, sizin tablolar ne çalıştıran motor söz yok. Ayrıca ekleme / güncelleme / select oranı nedir? Eğer MySQLs sorgu önbellek biraz biraz iyileşme olabilir kullanarak güncellemeleri oranının yüksek, varsa.

Daha pahalı sorguları hakkında size bir ne açıklıyor? Eğer dizinleri tasarladık şekilde ayarlamak gerekir, ya da sorguda yeniden sipariş sizin nerede fıkra olabilir. İZAH size tam tablo taraması ya da çok yüksek satır sayısı verirse, muhtemelen en iyi siz yapabilirsiniz sizin indeksleri kullanılarak değiliz.

Eğer non-unique-endeksli-kimliği hakkında daha açıklayabilir misin? TABLO OLUŞTURMA A SHOW yararlı olabilir.

DÜZENLEME

Eğer tampon boyutu azalır ve iyileşme gördüm, o durumda da bellek ayırmaya için gereken zaman önemli olabilir söylüyor. Sorgu performansı 1 saniyenin altında ise, ben sistem performansını, özellikle bellek incelemek başlayacaktı. Ben, üstten başlayarak belleğe göre sıralama ve takas alanı ve sayfa hataları numarasını gösteren öneririz. Ya vmstat çalışan ve takas etkinlik için bir göz dışarıda tutmak. Yüksek bekleme süreleri görürseniz, disk verim bekliyor olabilir. (Bir performans değişikliği olmadan InnoDB için bir anahtar ilginç. Ram düşük olsaydı, ben bir düşük bellek durum daha kendini hızla maruz düşünürdüm.)

Bu bir web uygulaması mı? Eğer öyleyse, bağlantıları / ipler, httpd bağlantıları ve sorgu gecikme sayısı arasında bir ilişki var mı? Ben 512MB ve daha büyük 35MB php balon apache süreçleri gördüm, ve daha sonra makine takas arazi içine eziyet olur.

Sen de, bir donanım sorunu var bir olasılık vardır. Her zaman bellek veya disk problemleri herhangi bir çekirdek raporlar var olup olmadığını görmek için dmesg kontrol etmek için değer zamanı. Sistem üzerinde çalışan başka bir şey var mı? Eğer disk veya hafıza için rakip olabilecek herhangi bir cron işleri var mıydı?