SQL Watch 3.0: Stealing from the poor giving to the rich

Aug 16, 2010 12:58

Для тех кому была интересна предыдущая версия утилиты
а так же для вех остальных.

Коротко: SQL Watch 3.0 это утлилита для профайлинга
и отладки SQL запросов на стороне Java.

Принцип: это jdbc-proxy драйвер который собирает статистику по SQL запросам,
и при отсутствии активности в приложении - печатает аггрегированные данные в stdout
(нажали сабмит, оно пофырчало, страница отработала, статистика вывалилась в консоль).

Зачем: это нужно, и сильно помогает, отслеживать узкие места в приложении связанные с долгими запросами,
множественными запросами, а так же запросами левыми (если вдруг вы видите в статистике запросы к таблицам
которые в общем то не причём - возможно что то не так).

Как использовать:
1. Скачать jar и положить в classpath
2. Исправить JDBC, driver=net.sf.log4jdbc.DriverSpy url, вместо jdbc:mysql:blabla будет jdbc:log4jdbc:mysql:blabla
3. Собственно всё.



----------- >> begin >> queries profiling report >> -----------
Table Name Requests (of total %) /Unique Requests | Useless % | Time (of total %)|
staff = 88 ( 9%) / 10 | 89% | 32ms ( 16%)|
film = 87 ( 9%) / 10 | 89% | 0ms ( 0%)|
address = 87 ( 9%) / 10 | 89% | 31ms ( 15%)|
rental = 86 ( 9%) / 10 | 88% | 0ms ( 0%)|
payment = 85 ( 9%) / 10 | 88% | 31ms ( 15%)|
actor = 76 ( 8%) / 10 | 87% | 16ms ( 8%)|
language = 73 ( 7%) / 10 | 86% | 62ms ( 31%)|
category = 72 ( 7%) / 10 | 86% | 15ms ( 7%)|
store = 72 ( 7%) / 10 | 86% | 0ms ( 0%)|
customer = 72 ( 7%) / 10 | 86% | 16ms ( 8%)|
inventory = 72 ( 7%) / 10 | 86% | 0ms ( 0%)|
country = 69 ( 7%) / 10 | 86% | 0ms ( 0%)|
city = 61 ( 6%) / 10 | 84% | 0ms ( 0%)|
TOTAL 468 ms >>> = 1000 ( 100%) / 130 | 87% | 203ms (100%)|
----------- >> end >> [Memory 3M Free/ 4M Total] >> -----------

Legend:
1. Table Name - name of a table in FROM section of SQL query
2. Requests - count of querties with this table name in FROM section
3. (of total %) - percentage for such queries over total count of queries in reprot
4. Unique Requests - count of unique request (requests with different arguments like `WHERE X=?` counted as different)
5. Useless % - percentage of queries which requests data which was already requested in this report
6. Time - total time spend to perform this queries
7. (of total %) - percentage of total time
TOTAL XXXX ms - while time elapsed from first to last query in report,
this time includes not inly SQL execution time, but
whole application logic either.

Посыпаю голову пеплом, реально утилиту зерелизил в конце Мая, но руки написать хоть какую то доку дошли только сейчас.
Previous post Next post
Up