0

我在我的服务器上看到间歇性负载峰值,这与 MySQL 的慢查询日志中的一堆条目相对应:

# Time: 140326 21:00:40
# User@Host: admin[admin] @ localhost []
# Query_time: 14.713922  Lock_time: 0.000035 Rows_sent: 0  Rows_examined: 0
SET timestamp=1395867640;
INSERT INTO `jos_session` ( `session_id`,`time`,`username`,`gid`,`guest`,`client_id` ) VALUES ( 'sb39o10gdjhtacbkajeal0tp54','1395867625','','0','1','0' );

现在,对我来说,这样一个简单的查询可能需要这么长时间,这似乎很疯狂。所以,我认为这是由于短时间内请求太多,或者其他一些请求锁定了表,或者类似的事情。所以,我的问题是...... MySQL 是否可以将表锁定为插入?我应该寻找什么样的东西来找到这些慢查询的原因?我想这不仅仅是这个小表实际上需要很长时间来执行插入。特别是当我在没有发生高负载的情况下进行类似的插入时,根本不需要时间。

如果有帮助:

+--------------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------------+----------+----------------+---------+
| Name         | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time         | Update_time | Check_time | Collation       | Checksum | Create_options | Comment |
+--------------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------------+----------+----------------+---------+
| ijkt_session | InnoDB |      10 | Compact    |   52 |            315 |       16384 |               0 |        49152 |   4194304 |           NULL | 2014-03-31 13:22:22 | NULL        | NULL       | utf8_general_ci |     NULL |                |         |
+--------------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------------+----------+----------------+---------+

我想真正的问题是,InnoDB 表会发生什么可能导致单行的简单插入需要很长时间?即使这张桌子很大,它一点也不,它很小......我在想象某种巨大的失控索引,它正在跟踪曾经存在的每条记录,或者类似的东西......?还是我认为单个插入不可能花费很长时间?

4

0 回答 0