Tengo la siguiente tabla InnoDB:Mysql Inserte lenta
+-----------+-----------+------+-----+-------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-----------+------+-----+-------------------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| doc_id | char(32) | NO | | NULL | |
| staff | char(18) | NO | | NULL | |
| timestamp | timestamp | NO | MUL | CURRENT_TIMESTAMP | |
+-----------+-----------+------+-----+-------------------+----------------+
Con estas teclas:
+--------------+------------+-----------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |
+--------------+------------+-----------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| staff_online | 0 | PRIMARY | 1 | id | A | 277350 | NULL | NULL | | BTREE | |
| staff_online | 1 | timestamp | 1 | timestamp | A | 277350 | NULL | NULL | | BTREE | |
| staff_online | 1 | staff_timestamp | 1 | timestamp | A | 277350 | NULL | NULL | | BTREE | |
| staff_online | 1 | staff_timestamp | 2 | staff | A | 277350 | NULL | NULL | | BTREE | |
+--------------+------------+-----------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
Acabo de notar que in mysql-slow.log
a veces tengo una consulta INSERT en esta tabla que tiene más de 1 segundo
INSERT INTO `staff_online` (`doc_id`, `staff`, `timestamp`) VALUES ('150b60a0ab8c5888bdbbb80bd8b7f8a2', 'asia', '2011-01-29 16:52:54')
Estoy realmente desconcertado por qué lleva tanto tiempo. ¿Cómo puedo acelerarlo?
BTW: Cada día hay ~ 80 INSERTOS lentos y 40 ACTUALIZACIONES lentas como esta.
¿Cuántas filas hay en la tabla y está seguro de que todas las inserciones son lentas? –
Hay 277259 filas y solo algunas inserciones son lentas (raras). – kalkin
Parece que tiene dos índices, uno por 'timestamp' y otro por' timestamp, staff'. Este último es suficiente para buscar por 'timestamp', puede descartar el primero. – 9000