在過去的幾天裏,我觀察到一個簡單的更新查詢執行得非常糟糕。更新時間範圍從2.5秒到15秒。查詢已工作性能極限(< 1秒)在過去的一年半之內,但突然開始出現在最後兩天的性能下降。任何見解將不勝感激。使用NOW()執行非常緩慢的MySQL更新
update user.auth_token
set last_access_time = NOW()
where token = '488f4f040090f1cb749e09a514d3dd3d';
該表只包含9行並具有以下定義。
CREATE TABLE `auth_token` (
`user_name` varchar(45) NOT NULL,
`token` varchar(45) DEFAULT NULL,
`last_access_time` datetime DEFAULT NULL,
`creation_time` datetime NOT NULL,
`token_type` varchar(45) NOT NULL,
UNIQUE KEY `token_UNIQUE` (`token`),
KEY `fk_user_name_idx` (`user_name`),
CONSTRAINT `fk_user_name` FOREIGN KEY (`user_name`)
REFERENCES `user` (`name`)
ON DELETE CASCADE ON UPDATE CASCADE
)
ENGINE=InnoDB DEFAULT CHARSET=utf8;
MySQL的版本是5.5.50-0ubuntu0.14.04.1-log
更新 解釋輸出如下:
id, select_type, table, type, possible_keys, key, key_len, ref, rows, Extra
'1', 'SIMPLE', 'auth_token', 'const', 'token_UNIQUE', 'token_UNIQUE', '138', 'const', '1', ''
任何更多的數據將不勝感激。例如EXPLAIN計劃。任何額外的索引?表的統計數據? –
請添加查詢的執行計劃,「NOW」不應減慢查詢速度。 – sagi
性能問題應該包括'EXPLAIN ANALYZE'和一些關於表格大小,索引,當前時間表現,期望時間等的信息。'Slow'是一個相對術語,我們需要一個真正的值來比較。 \t \t [** MySQL **](http://dba.stackexchange.com/questions/15371/how-do-i-get-the-execution-plan-for-a-view) –