LINUX.ORG.RU
ФорумAdmin

mysql 99% cpu

 


0

1

привет, ЛОР, ситуация такая:

1) в таблице logs около 300 к записей
2) есть скрипт, который делает только 1 запрос: «update logs set status='Deliv' where id=XXXXXX
3) к этому скрипту обращаются извне со скоростью где-то 100 запросов в секунду раз в 10-15 минут
4) mysql жрёт 99% CPU в течение получаса.

что можно сделать с этой проблемой?

★★★★★

SHOW INDEX FROM logs;
SHOW CREATE TABLE logs;

MrClon ★★★★★
()

создать индекс по id?

anonymous
()

http://storage9.static.itmages.ru/i/14/0609/h_1402316916_6130302_47e393ac57.png

mysql> SHOW INDEX FROM logs;
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| logs  |          0 | PRIMARY  |            1 | id          | A         |       40810 |     NULL | NULL   |      | BTREE      |         |               |
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
1 row in set (0.00 sec)

mysql> SHOW CREATE TABLE logs;
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| logs  | CREATE TABLE `logs` (
  `id` mediumint(9) NOT NULL AUTO_INCREMENT,
  `extension` varchar(25) COLLATE utf8_unicode_ci DEFAULT NULL,
  `date` datetime DEFAULT NULL,
  `destination` varchar(25) COLLATE utf8_unicode_ci DEFAULT NULL,
  `callerid` varchar(25) COLLATE utf8_unicode_ci DEFAULT NULL,
  `direction` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  `time` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
  `route` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  `status` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  `cost` double DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=325485 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci |
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.01 sec)

snoopcat ★★★★★
() автор топика
Последнее исправление: snoopcat (всего исправлений: 1)
Ответ на: комментарий от snoopcat

«МуйСЯМ» при апдейте, инсерте, делете лочит ВСЮ таблицу, сделай инноДБ - будет лочить только ОДНУ изменяемую запись.

deep-purple ★★★★★
()
Ответ на: комментарий от snoopcat

создай новую табулю с идентичной структурой и нужными отличиями, и «инсерт селект» в неё

deep-purple ★★★★★
()
Ответ на: комментарий от snoopcat

Можешь естессно переименовать текеущую чтоб за меньшее кол-во ходов выполнить перенос данных

deep-purple ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.