Для тех кому была интересна
предыдущая версия утилиты
а так же для вех остальных.
Коротко:
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.
Посыпаю голову пеплом, реально утилиту зерелизил в конце Мая, но руки написать хоть какую то доку дошли только сейчас.