【发布时间】:2019-09-20 20:04:01
【问题描述】:
我在向 mysql 中的表插入、选择和更新行时面临严重的性能问题。
我使用的表结构是
CREATE TABLE `sessions` (
`sessionid` varchar(40) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
`expiry` datetime NOT NULL,
`value` text NOT NULL,
`data` text,
PRIMARY KEY (`sessionid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Sessions';
我面临问题的查询是:
INSERT INTO sessions (SESSIONID, EXPIRY, DATA, VALUE) VALUES ('b8c10810c505ba170dd9403072b310ed', '2019-05-01 17:25:50', 'PFJlc3BvbnNlIHhtbG5zPSJ1cm46b2FzaXM6bmFtZXM', '7bKDofc/pyFSQhm7QE5jb6951Ahg6Sk8OCVZI7AcbUPb4jZpHdrCAKuCPupJO14DNY3jULxKppLadGlpsKBifiJavZ/');
UPDATE sessions SET EXPIRY = '2019-05-01 17:26:07' WHERE (SESSIONID = 'e99a0889437448091a06a43a44d0f170');
SELECT SESSIONID, EXPIRY, DATA, VALUE FROM sessions WHERE (SESSIONID = '507a752c48fc9cc3043a3dbe889c52eb');
我尝试解释查询,但无法推断出有关优化表/查询的太多信息。
从慢查询报告所用时间
对于选择平均是 23.45,对于更新是 15.93,对于插入是 22.31.
非常感谢您在确定问题方面的任何帮助。
【问题讨论】:
-
long_query_time的设置是什么?如果它是默认值 10(秒),则它只捕获少数查询。尽管如此,这些还是不合理的高。是否同时进行了备份?ALTER TABLE?还有什么“大”? -
long_query_time 是 10 秒。没有配置备份,我们也没有做任何 DDL 操作。
-
也许数百个这样的查询同时运行?看看你能不能用
SHOW PROCESSLIST;
标签: mysql database database-performance query-performance