- Код: Выделить всё
1173002 [main] INFO -
OpenTable: select * from dpbase.listclorg where fwid =0
Во время обработки этого запроса mysqld загружает одно ядро процессора на 99%.
- Код: Выделить всё
~ $ top -n 1 -u mysql -b
...
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
9023 mysql 20 0 177m 6352 1256 S 99 0.7 34:02.25 mysqld
- Код: Выделить всё
mysql> SHOW PROCESSLIST;
+----+---------+-----------------+---------+---------+------+--------------+--------------------------------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+---------+-----------------+---------+---------+------+--------------+--------------------------------------------+
| 2 | DPADMIN | localhost:43289 | dpadmin | Query | 1589 | Sending data | select count(fisgrp) from dpbase.listclorg |
| 8 | root | localhost | dpbase | Query | 0 | NULL | SHOW PROCESSLIST |
+----+---------+-----------------+---------+---------+------+--------------+--------------------------------------------+
2 rows in set (0.00 sec)
Экспериментальным путём выяснено, что за продолжительное время (программа оставлялась на ночь) запрос выполнялся и список контрагентов нормально отображался в DebetPlus. Если попытаться его обновить, или ещё каким-нибудь образом заставить перерисоваться этот список, то выполняется злополучный запрос "select count(fisgrp) from dpbase.listclorg" и "тормоза" повторяются снова.
Список контрагентов импортирован из dbf-файла, импорт говорит, что импортировано ~400 контрагентов. Для чистоты эксперимента специально импортировал информации по минимуму - только название предприятия и больше ничего.
Система: Gentoo linux 2.6.36-gentoo-r5
CPU: AMD Athlon II x2 x86_64
MySQL: 5.1.51
DebetPlus: официальный, свежескачанный с сайта
Вопрос: как избавиться от этих тормозов? Добавить какие-нибудь дополнительные индексы к участвующим в запросе таблицам? Чесно говоря, не понимаю до конца, с чем они связаны.
Update 2011-03-12 18:04
После обработки первого запроса, в терминале появились следующие тормозные запросы:
- Код: Выделить всё
3857305 [main] INFO -
getSnap - 2596415: select count(fisgrp) from dpbase.listclorg
3858077 [main] INFO -
OpenTable: select * from dpbase.listclorg where (fwid>0) and fisgrp<>0 and fwid <>0 order by fleftkey
Судя по всему, тормоза вообще свойственны любым операциям с таблицей "listclorg".