По сравнению с
первой версией оформил
библиотеку в виде
jar файлаи добавил функцию профайлинга.
Как это работает:
1. Профайлер слушает SQL запросы от JDBC драйвера (пока только MySQL)
2. Если новый запросов не поступает в течении N-цати секунд, профайлер печатает статистику.
----------- >> 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] >> -----------
Подробное описание отчёта профайлера, функции отдаки и этапы конфигурирвоание
представлено на сайте проекта
sqlwatch.
Зачем это нужно.
Проблем с производительностью запросов может быть две:
1. Конкретные запросы выполняются медленно
2. Либо выполняется много быстрых запросов на выборку одних и тех же данных
Второй пункт неплохо решается кешированием на уровне клиента (JPA),
тем не менее если одни и теже данные дёргаются много много раз что бы
отобразить одну страницу - скорее всего что то не так.
Зачем это нужно мне:
1. Использую библиотеку в рабочем проекте уже почти год, помогла решить много проблем.
2. Было бы классно получить замечания по
дизайну утилитиы.
3. Если не секрет, расскажите какие результаты получили вы.
UPD: исправил баг с профайлингом медленных SQL запросов, теперь сообщения
о них печатаются корректно.