forum.bitel.ru http://forum.bitel.ru/ |
|
[7.0] show full processlist http://forum.bitel.ru/viewtopic.php?f=22&t=11602 |
Страница 1 из 1 |
Автор: | Phricker [ 13 май 2016, 21:03 ] |
Заголовок сообщения: | [7.0] show full processlist |
Постоянно в процессах mysql висят подобные процессы (висят тоже что - постоянно появляются) Не испытываю ничего против, но может сделать чтобы они пореже появлялись? ![]() Проверка лицензий ваша али нет? Код: SELECT COUNT(cid) FROM contract_module LEFT JOIN module ON module.id = contract_module.mid LEFT JOIN contract ON contract.id = contract_module.cid WHERE module.name = 'ipn' and (contract.date1 is null or contract.date1 <= now() ) and (contract.date2 is null or contract.date2 >= now() )
SELECT COUNT(cid) FROM contract_module LEFT JOIN module ON module.id = contract_module.mid LEFT JOIN contract ON contract.id = contract_module.cid WHERE module.name = 'reports' and (contract.date1 is null or contract.date1 <= now() ) and (contract.date2 is null or contract.date2 >= now() ) SELECT COUNT(cid) FROM contract_module LEFT JOIN module ON module.id = contract_module.mid LEFT JOIN contract ON contract.id = contract_module.cid WHERE module.name = 'dialup' and (contract.date1 is null or contract.date1 <= now() ) and (contract.date2 is null or contract.date2 >= now() ) |
Автор: | skn [ 14 май 2016, 01:39 ] |
Заголовок сообщения: | Re: [7.0] show full processlist |
а на сколько часто появляются и как долго выполняются? |
Автор: | Phricker [ 28 май 2016, 02:41 ] |
Заголовок сообщения: | Re: [7.0] show full processlist |
![]() Это все обращения к базе за 1 секунду. Снимал дамп 14 секунд - за 14 секунд - 75 таких запросов. Оно так нужно? ![]() Так же меня смущают запросы "SELECT 1" ![]() Так же кол-во за 1 секунду. |
Автор: | skn [ 28 май 2016, 02:46 ] |
Заголовок сообщения: | Re: [7.0] show full processlist |
1) SELECT 1 это запросы которые генерирует connectionPool, он таким образов проверяет живо ли соединение с базой 2) а что выдает запрос Код: EXPLAIN SELECT COUNT(cid) FROM contract_module LEFT JOIN module ON module.id = contract_module.mid LEFT JOIN contract ON contract.id = contract_module.cid WHERE module.name = 'ipn' and (contract.date1 is null or contract.date1 <= now() ) and (contract.date2 is null or contract.date2 >= now() ) 3) сколько времени выполняются запросы Код: SELECT COUNT(cid) FROM contract_module LEFT JOIN module ON module.id = contract_module.mid LEFT JOIN contract ON contract.id = contract_module.cid WHERE module.name = 'ipn' and (contract.date1 is null or contract.date1 <= now() ) and (contract.date2 is null or contract.date2 >= now() ) Код: SELECT mid, COUNT(cid) FROM contract_module LEFT JOIN contract ON contract.id = contract_module.cid WHERE (contract.date1 is null or contract.date1 <= now() ) and (contract.date2 is null or contract.date2 >= now()) GROUP BY mid
|
Автор: | Phricker [ 28 май 2016, 02:58 ] |
Заголовок сообщения: | Re: [7.0] show full processlist |
Вообще я с чего этим заинтересовался. У меня вот такая вот картинка ![]() Крайне смущают Qcache lowmem prunes. После перехода на 7.0 (до этого вроде не было жалоб) и полного перевода на utf8 (хотя перевел я базу на utf8 еще на 6.1), периодически очень долго открывается монитор модуля inet. При этом простейший запрос (который выполняется при открытии модуля) Код: SELECT SQL_CALC_FOUND_ROWS auth_error.* FROM inet_auth_error_12_201605 AS auth_error WHERE auth_error.lastTime BETWEEN '2016-05-23 00:00:00' AND '2016-05-23 00:00:00' ORDER BY auth_error.lastTime DESC LIMIT 0,30 через клиент биллинга скриптом Код: public class testSelectAuthError extends GlobalScriptBase { @Override public void execute(Setup setup, ConnectionSet connectionSet) throws Exception { print("Start"); long timeStart = System.currentTimeMillis(); String tableName = "inet_auth_error_12_201605"; Connection con = connectionSet.getConnection(); int count = 0; String query = ""; query = " SELECT auth_error.id FROM inet_auth_error_12_201605 AS auth_error WHERE auth_error.lastTime BETWEEN '2016-05-23 00:00:00' AND '2016-05-23 00:00:00' "; PreparedStatement ps = con.prepareStatement(query); ResultSet rs = ps.executeQuery(); while (rs.next()) { count++; } rs.close(); ps.close(); long timeEnd = System.currentTimeMillis(); print("count = " + count); print("query = " + query); print("Process time: " + (timeEnd - timeStart) / 1000 + " s."); } } выбирается Код: Start count = 8 query = SELECT auth_error.id FROM inet_auth_error_12_201605 AS auth_error WHERE auth_error.lastTime BETWEEN '2016-05-23 00:00:00' AND '2016-05-23 00:00:00' Process time: 33 s. show processlist показывает то sending data то sorting result то waiting for query cache lock. При этом напрямую с консоли или через GUIшный клиент с другого компа - выбирается за доли секунд. Лечится полными стопами всего и вся и соответственно перезапуском. Раз в сутки приходится делать. Сейчас собираю больше инфы, играюсь с некоторыми настройками в my.cnf, так что думаю если ничего не изменится - ждите на следующей неделе в ХД ) |
Автор: | Phricker [ 28 май 2016, 03:00 ] |
Заголовок сообщения: | Re: [7.0] show full processlist |
Phricker писал(а): Крайне смущают Qcache lowmem prunes. Думаю попробовать переписать стандартные сервисы чтобы для инета убрать кеширование подобных запросов. Чтобы он их не помещал в кеш и соответственно не удалял в дальнейшем. Код: SELECT * FROM inet_accounting_period_12 WHERE contractId=193734 AND (timeTo IS NULL OR timeTo>='2016-05-27 23:23:39') ORDER BY timeFrom
|
Автор: | skn [ 28 май 2016, 03:05 ] |
Заголовок сообщения: | Re: [7.0] show full processlist |
1) SELECT 1 это запросы которые генерирует connectionPool, он таким образов проверяет живо ли соединение с базой 2) а что выдает запрос Код: EXPLAIN SELECT COUNT(cid) FROM contract_module LEFT JOIN module ON module.id = contract_module.mid LEFT JOIN contract ON contract.id = contract_module.cid WHERE module.name = 'ipn' and (contract.date1 is null or contract.date1 <= now() ) and (contract.date2 is null or contract.date2 >= now() ) 3) сколько времени выполняются запросы Код: SELECT COUNT(cid) FROM contract_module LEFT JOIN module ON module.id = contract_module.mid LEFT JOIN contract ON contract.id = contract_module.cid WHERE module.name = 'ipn' and (contract.date1 is null or contract.date1 <= now() ) and (contract.date2 is null or contract.date2 >= now() ) Код: SELECT mid, COUNT(cid) FROM contract_module LEFT JOIN contract ON contract.id = contract_module.cid WHERE (contract.date1 is null or contract.date1 <= now() ) and (contract.date2 is null or contract.date2 >= now()) GROUP BY mid
|
Автор: | Phricker [ 28 май 2016, 03:05 ] |
Заголовок сообщения: | Re: [7.0] show full processlist |
skn писал(а): 2) а что выдает запрос Код: EXPLAIN SELECT COUNT(cid) FROM contract_module LEFT JOIN module ON module.id = contract_module.mid LEFT JOIN contract ON contract.id = contract_module.cid WHERE module.name = 'ipn' and (contract.date1 is null or contract.date1 <= now() ) and (contract.date2 is null or contract.date2 >= now() ) ![]() skn писал(а): 3) сколько времени выполняются запросы Код: SELECT COUNT(cid) FROM contract_module LEFT JOIN module ON module.id = contract_module.mid LEFT JOIN contract ON contract.id = contract_module.cid WHERE module.name = 'ipn' and (contract.date1 is null or contract.date1 <= now() ) and (contract.date2 is null or contract.date2 >= now() ) SQLyog - Exec 0,257 sec. Total 0,258 sec skn писал(а): Код: SELECT mid, COUNT(cid) FROM contract_module LEFT JOIN contract ON contract.id = contract_module.cid WHERE (contract.date1 is null or contract.date1 <= now() ) and (contract.date2 is null or contract.date2 >= now()) GROUP BY mid SQLyog - Exec 1,019 sec. Total 1,019 sec |
Автор: | skn [ 28 май 2016, 03:20 ] |
Заголовок сообщения: | Re: [7.0] show full processlist |
а время такого запроса Код: SELECT mid, COUNT(cid) FROM contract LEFT JOIN contract_module ON contract.id = contract_module.cid WHERE (contract.date1 is null or contract.date1 <= now() ) and (contract.date2 is null or contract.date2 >= now()) GROUP BY mid; и Код: EXPLAIN SELECT mid, COUNT(cid) FROM contract LEFT JOIN contract_module ON contract.id = contract_module.cid WHERE (contract.date1 is null or contract.date1 <= now() ) and (contract.date2 is null or contract.date2 >= now()) GROUP BY mid;
|
Автор: | Phricker [ 28 май 2016, 10:58 ] |
Заголовок сообщения: | Re: [7.0] show full processlist |
skn писал(а): Код: SELECT mid, COUNT(cid) FROM contract LEFT JOIN contract_module ON contract.id = contract_module.cid WHERE (contract.date1 is null or contract.date1 <= now() ) and (contract.date2 is null or contract.date2 >= now()) GROUP BY mid; Два раза подряд ![]() ![]() skn писал(а): Код: EXPLAIN SELECT mid, COUNT(cid) FROM contract LEFT JOIN contract_module ON contract.id = contract_module.cid WHERE (contract.date1 is null or contract.date1 <= now() ) and (contract.date2 is null or contract.date2 >= now()) GROUP BY mid; ![]() |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |