processed_event_parameters долго выполняются запросы
processed_event_parameters долго выполняются запросы
Подскажите, может у кого возникала такая проблема, очень долго выполняются запросы:
SELECT processed_event_parameters.string_value AS "string_value" FROM processed_event_parameters WHERE (processed_event_parameters.processed_event_id = 22341 AND processed_event_parameters.name = 131950) AND processed_event_parameters.deleted = 0;
Выполнение запросов происходит секунд по 60-70. Запросов сыпется достаточно много. В mysql размер таблицы 403 тысячи записпей. В следствии этого очень сильно грузится база данных и не работает интерфейс платежей, да и сами платежи приходят с задержкой.
Можно ли каким то образом почистить данную таблицу?
Посмотрел кол-во записей в таблице с 15 января по 1 марта = 149000. а с 1 марта по 23 марта = 259744, причем 200 тысяч записей за последние 7 дней. Модуль только один - ОСМП
Тоже не понятно как то....
SELECT processed_event_parameters.string_value AS "string_value" FROM processed_event_parameters WHERE (processed_event_parameters.processed_event_id = 22341 AND processed_event_parameters.name = 131950) AND processed_event_parameters.deleted = 0;
Выполнение запросов происходит секунд по 60-70. Запросов сыпется достаточно много. В mysql размер таблицы 403 тысячи записпей. В следствии этого очень сильно грузится база данных и не работает интерфейс платежей, да и сами платежи приходят с задержкой.
Можно ли каким то образом почистить данную таблицу?
Посмотрел кол-во записей в таблице с 15 января по 1 марта = 149000. а с 1 марта по 23 марта = 259744, причем 200 тысяч записей за последние 7 дней. Модуль только один - ОСМП
Тоже не понятно как то....
-
- Сообщения: 1612
- Зарегистрирован: Пт ноя 10, 2006 15:23
посмотреть, какие там висят индексы на этой таблице. Чтобы индекс использовался максимально эффективно, то он должен иметь перечисленными те поля, которые участвуют в WHERE-фильтре. Причем порядок должен совпадать.
Ну можно еще посмотреть show create table для этой таблички и explain extended select ...
Ну можно еще посмотреть show create table для этой таблички и explain extended select ...
Re: processed_event_parameters долго выполняются запросы
попробуй индекс повесить на processed_event_id, и кинь структуру таблицы.spudd писал(а):Подскажите, может у кого возникала такая проблема, очень долго выполняются запросы:
SELECT processed_event_parameters.string_value AS "string_value" FROM processed_event_parameters WHERE (processed_event_parameters.processed_event_id = 22341 AND processed_event_parameters.name = 131950) AND processed_event_parameters.deleted = 0;
Выполнение запросов происходит секунд по 60-70. Запросов сыпется достаточно много. В mysql размер таблицы 403 тысячи записпей. В следствии этого очень сильно грузится база данных и не работает интерфейс платежей, да и сами платежи приходят с задержкой.
Можно ли каким то образом почистить данную таблицу?
Посмотрел кол-во записей в таблице с 15 января по 1 марта = 149000. а с 1 марта по 23 марта = 259744, причем 200 тысяч записей за последние 7 дней. Модуль только один - ОСМП
Тоже не понятно как то....
Re: processed_event_parameters долго выполняются запросы
Спасибо за совет, попробую и отпишусь.Magnum72 писал(а): попробуй индекс повесить на processed_event_id, и кинь структуру таблицы.
думаю тут надо подождать пока таблица подростет, чтоб наглядно было.Magnum72 писал(а):А если сделать двойной индексspudd писал(а):После чистки базы запросы начали выполнятся порядка 3-5 секунд. После установки индекса на processed_event_id запрос выполняется 0.01 секунды в среднем.
processed_event_id
name
Эксплаин запрса можешь показать ?spudd писал(а):думаю тут надо подождать пока таблица подростет, чтоб наглядно было.Magnum72 писал(а):А если сделать двойной индексspudd писал(а):После чистки базы запросы начали выполнятся порядка 3-5 секунд. После установки индекса на processed_event_id запрос выполняется 0.01 секунды в среднем.
processed_event_id
name
-
- Сообщения: 1612
- Зарегистрирован: Пт ноя 10, 2006 15:23
Делать надо именно двойной индекс, причем поля в индекс совать лучше в том порядке, в каком они идут в where, тогда mysql будет этим индексом пользоваться.
Если индекс есть, но поля указаны в индексе не в том порядке, в каком они идут в Where ... and ... - использовать оно этот индекс не будет. Если есть индекс отдельно на первое условие, то будет использоваться он.
Если индекс есть, но поля указаны в индексе не в том порядке, в каком они идут в Where ... and ... - использовать оно этот индекс не будет. Если есть индекс отдельно на первое условие, то будет использоваться он.
Magnum72 писал(а): Эксплаин запрса можешь показать ?
Код: Выделить всё
mysql> explain SELECT processed_event_parameters.string_value AS "string_value" FROM processed_event_parameters WHERE (processed_event_parameters.processed_event_id = 22341 AND processed_event_parameters.name = 131950) AND processed_event_parameters.deleted = 0;
+----+-------------+----------------------------+------+--------------------+--------------------+---------+-------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+----------------------------+------+--------------------+--------------------+---------+-------+------+-------------+
| 1 | SIMPLE | processed_event_parameters | ref | processed_event_id | processed_event_id | 8 | const | 11 | Using where |
+----+-------------+----------------------------+------+--------------------+--------------------+---------+-------+------+-------------+
1 row in set (0.05 sec)
А тут получается как раз правильно. ведь на внесение платежа создается 11 записей в таблице, а на проверку платежа создается 10 записей.
а вот так получается если создать двойной индекс:
Код: Выделить всё
mysql> explain SELECT processed_event_parameters.string_value AS "string_value" FROM processed_event_parameters WHERE (processed_event_parameters.processed_event_id = 22341 AND processed_event_parameters.name = 131950) AND processed_event_parameters.deleted = 0;
+----+-------------+----------------------------+------+--------------------+--------------------+---------+-------------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+----------------------------+------+--------------------+--------------------+---------+-------------+------+-------------+
| 1 | SIMPLE | processed_event_parameters | ref | processed_event_id | processed_event_id | 12 | const,const | 1 | Using where |
+----+-------------+----------------------------+------+--------------------+--------------------+---------+-------------+------+-------------+
1 row in set (0.01 sec)