|
|
|
Трассировка запросов со временем выполнения.
|
|||
|---|---|---|---|
|
#18+
Приветствую. У меня есть БД и есть некоторое приложение, написанное фиг знает кем фиг знает когда. Но в приложении есть кнопочка, по нажатию на которую приложение измеряет "производительность БД" в каких-то инсертах, апдейтах и селектах в секунду. Эксплуатанты приложения туда смотрят и показывают пальчиком, типа не довольны, типа медленно. Хотя сервер физически простаивает... Я очень сомневаюсь в цифрах, которые выдет кнопочка, и хочу измерить конкретное количество времени, которое потратил MySQL на выполнение запросов (не считая времени затраченного на коннект, и ожидания самого приложения). Перерыл пол Интернета. Не нашел, как можно получить трейс SQL запросов с указанием времени в микросекундах (или наносекундах) затраченного для выполнения SQL выражения собственно самим MySQLем. Также хотелось бы получить ваши оценки (или измерения) для такой величины как количество простеньких инсертов, апдейтов и селектов в секунду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2014, 10:43:03 |
|
||
|
Трассировка запросов со временем выполнения.
|
|||
|---|---|---|---|
|
#18+
Трейса как, скажем, в мсскл, тут нет. Как вариант - поставить mysql proxy, получить с его помощью тексты запросов и протестировать их вручную любым "нормальным" клиентом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2014, 11:43:42 |
|
||
|
Трассировка запросов со временем выполнения.
|
|||
|---|---|---|---|
|
#18+
Можно ещё включить slow query log, но там уже придётся разбираться, какой из попавших туда запросов - нужный. И не факт, что нужный туда вообще попадёт - может, ваши "проверяющие" считают медленным запрос в 50мс... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2014, 11:45:09 |
|
||
|
Трассировка запросов со временем выполнения.
|
|||
|---|---|---|---|
|
#18+
tanglir, совершенно верно. 1000 инсертов в секунду (это 1 ms) они считают медленным. Хотят 10000 (0.1 ms) инсертов в секунду. Показывают на другое место, типа там показометр показывает именно 10000 инсертов в секунду. Я во всем этом сомневаюсь. Хочу получить объективную картину. Выяснилось, что это не просто. Не ужели нет такого ничего? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2014, 12:05:26 |
|
||
|
Трассировка запросов со временем выполнения.
|
|||
|---|---|---|---|
|
#18+
ДаВотНо в приложении есть кнопочка, по нажатию на которую приложение измеряет "производительность БД" в каких-то инсертах, апдейтах и селектах в секунду.Я бы предложил на время работы этой кнопочки включить General Query Log и посмотреть, что там реально она выполняет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2014, 12:07:11 |
|
||
|
Трассировка запросов со временем выполнения.
|
|||
|---|---|---|---|
|
#18+
miksoft, это, конечно, уже сделано. Но времени, затраченного на выполнение каждого SQLя там нет. А приложение может само тормозить где угодно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2014, 12:10:56 |
|
||
|
Трассировка запросов со временем выполнения.
|
|||
|---|---|---|---|
|
#18+
ДаВотНо в приложении есть кнопочка, по нажатию на которую приложение измеряет "производительность БД" в каких-то инсертах, апдейтах и селектах в секунду.Всё зависит от кривизны рук афтара поделия: если, к примеру, оно каждую операцию оборачивает в свою отдельную транзакцию, то и 1000 инсертов в секунду уже может быть замечательно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2014, 12:26:41 |
|
||
|
Трассировка запросов со временем выполнения.
|
|||
|---|---|---|---|
|
#18+
tanglirМожно ещё включить slow query log, но там уже придётся разбираться, какой из попавших туда запросов - нужный. И не факт, что нужный туда вообще попадёт - может, ваши "проверяющие" считают медленным запрос в 50мс... ну так можно же установить время = 0 - и попадут вообще все запросы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2014, 12:29:38 |
|
||
|
Трассировка запросов со временем выполнения.
|
|||
|---|---|---|---|
|
#18+
ДаВотtanglir, совершенно верно. 1000 инсертов в секунду (это 1 ms) они считают медленным. Хотят 10000 (0.1 ms) инсертов в секунду. Показывают на другое место, типа там показометр показывает именно 10000 инсертов в секунду. Я во всем этом сомневаюсь. Хочу получить объективную картину. Выяснилось, что это не просто. Не ужели нет такого ничего? неужели битрикс? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2014, 12:30:12 |
|
||
|
Трассировка запросов со временем выполнения.
|
|||
|---|---|---|---|
|
#18+
netwindДаВотtanglir, совершенно верно. 1000 инсертов в секунду (это 1 ms) они считают медленным. Хотят 10000 (0.1 ms) инсертов в секунду. Показывают на другое место, типа там показометр показывает именно 10000 инсертов в секунду. Я во всем этом сомневаюсь. Хочу получить объективную картину. Выяснилось, что это не просто. Не ужели нет такого ничего? неужели битрикс?Кстати, да, похоже :) Тогда предлагаю обратить внимание на innodb_flush_log_at_trx_commit. Битрикс, если не ошибаюсь, требует значение 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2014, 12:37:29 |
|
||
|
Трассировка запросов со временем выполнения.
|
|||
|---|---|---|---|
|
#18+
miksoftnetwindпропущено... неужели битрикс?Кстати, да, похоже :) Тогда предлагаю обратить внимание на innodb_flush_log_at_trx_commit. Битрикс, если не ошибаюсь, требует значение 2. Не требуют, а бессовестно рекомендуют в своих руководствах не описывая к чему это может привести. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2014, 12:57:18 |
|
||
|
Трассировка запросов со временем выполнения.
|
|||
|---|---|---|---|
|
#18+
netwind,неужели битрикс? Он самый, будь не ладен... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2014, 14:02:06 |
|
||
|
Трассировка запросов со временем выполнения.
|
|||
|---|---|---|---|
|
#18+
ДаВотnetwind,неужели битрикс? Он самый, будь не ладен...Ну тогда, действительно, "1000 инсертов в секунду" - это очень немного. Я так мало даже на шаред-хостинге не видел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2014, 14:13:57 |
|
||
|
Трассировка запросов со временем выполнения.
|
|||
|---|---|---|---|
|
#18+
netwind, вот что пишут про 2 в innodb_flush_log_at_trx_commit When the value is 2, the log buffer is written out to the file at each commit, but the flush to disk operation is not performed on it. However, the flushing on the log file takes place once per second also when the value is 2. Note that the once-per-second flushing is not 100% guaranteed to happen every second, due to process scheduling issues.Если это правда, то вроде можно пережить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2014, 14:28:19 |
|
||
|
Трассировка запросов со временем выполнения.
|
|||
|---|---|---|---|
|
#18+
miksoft, спасибо за наводку про innodb_flush_log_at_trx_commit . Сейчас буду пугать разработчиков последствиями и тестировать ускорение. На продуктиве. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2014, 14:33:21 |
|
||
|
Трассировка запросов со временем выполнения.
|
|||
|---|---|---|---|
|
#18+
И еще про innodb_flush_log_at_trx_commitThe default value of 1 is required for full ACID compliance. You can achieve better performance by setting the value different from 1, but then you can lose up to one second worth of transactions in a crash. With a value of 0, any mysqld process crash can erase the last second of transactions. With a value of 2, only an operating system crash or a power outage can erase the last second of transactions. InnoDB's crash recovery works regardless of the value. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2014, 14:35:31 |
|
||
|
Трассировка запросов со временем выполнения.
|
|||
|---|---|---|---|
|
#18+
ДаВотСейчас буду пугать разработчиков последствиями и тестировать ускорение. На продуктиве.Заодно посмотрите страницу /bitrix/admin/perfmon_db_server.php?lang=ru на своем сайте. Там и другие косяки могут быть красным шрифтом подсвечены. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2014, 14:50:25 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38689468&tid=1834550]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
56ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
| others: | 245ms |
| total: | 405ms |

| 0 / 0 |
