2012-03-13 17 views

cevap

2

gerektiren silebilir, ancak bu ... geniş sunucusudur .

tüm SELECT s, UPDATE s izlemek isterseniz ve JOIN s dokunmadan table_one, hile olacaktır veritabanı sunucusu üzerinde böyle bir şey çalışan table_two ve my_database üzerine table_three:

tcpdump -s 65535 -x -nn -q -tttt -i any -c 1000 port 3306 | 
pt-query-digest --type tcpdump \ 
       --run-time 5s \ 
       --iterations 0 \ 
       --filter '$event->{fingerprint} =~ m/\b(from|join|into)\s+(`?my_database`?\.)`?(table_one|table_two|table_three)`?\b/' \ 
       --output slowlog \ 
       --no-report 

Bu, tüm gelen veritabanı trafiğini tcpdump kullanarak izler ve pt-query-digest aracına bağlar ve ardından bu tablolardaki sorguları filtrelemeyi dener. Çıktı MySQL'in yavaş sorgulama günlüğü gibi bir şey görünecek.

Gereksinimlerinize uyacak şekilde --filter argümanındaki normal ifadeyi ayarlamanız gerekecektir. Çoğu normal ifadede olduğu gibi, çok sayıda kenar durumu olacak. Bir kaçını kapsamaya çalıştım ama normal ifadeler söz konusu olduğunda hiçbir şekilde uzman değilim.

Bu mükemmel bir çözüm değildir, ancak genel sorgu günlüğünü kullanmanın yasak olduğu belirli durumlarda bana hile yaptı.