2012-06-30 27 views
56

Bir kilitleme bekletme süresini beklemeden geçen süreyi ölçmeden bir sorgulamanın yürütme süresini nasıl ölçebilirim? Tek düşüncem sürekli olarak aynı sorguyu ölçmek ve en hızlı zamanı kaydetmek.Gerçek MySQL sorgu süresinin ölçülmesi

cevap

110

Başlangıç ​​

SET profiling = 1; 

ile profilci Sonra Sorgu yürütün.

SHOW PROFILES; 

ile profilci istatistiklerini vardır sorgularının bir listesini görebilirsiniz. Ve nihayet

SHOW PROFILE FOR QUERY 1; 

ya da her türlü numara sorgulama sahip olan incelemek için hangi sorgu seçin.

Ne elde ederseniz, sorgu sırasında tam olarak ne kadar zaman harcanan bir liste. manual.

+0

Bu mükemmel! Bunun yavaş mı olduğunu biliyor musun? Web sitemdeki her sorguyu çalıştırmak için bunu sarıcı sınıfıma ekleyebilir miyim? – Mikhail

+2

Bunu hiç düşünmedim. Bunu neden yapmak istersiniz? Genellikle bu sadece gelişim için, sanırım. Hangi sorguların yavaş olduğunu bilmek istiyorsanız, yavaş sorgulama günlüğünüze bir göz atın. http://dev.mysql.com/doc/refman/5.1/en/slow-query-log.html – fancyPants

+0

Sorguların farklı kullanıcılar için farklı zaman alması nedeniyle. yavaş sorgulama-günlüğü, bir kilit açma için beklediği süreyi sayıyor gibi görünüyor – Mikhail

27

cevap içinde

diğer bilgiler

SHOW PROFILE[S]

MySQL 5.6.7 tarihinden itibaren kullanımdan kaldırılmıştır ve gelecekteki MySQL sürümünde kaldırılacaktır ... geçersiz hale gelmektedir. Bunun yerine Performans Şeması'nı kullanın; bkz. http://dev.mysql.com/doc/refman/5.6/en/performance-schema-query-profiling.html

+0

Profil, "veri göndermeden" daha yararlı bir şey verirse, piyangoyu kazanırsınız. –

+0

5.7.19 kullanıyorum ve hala "profile bak" işlevi düzgün çalışıyor –

+0

@SivaPraveen - Tamam, şimdilik çalışıyor, ama "... kaldırılacak ..." –