小编Ros*_*oss的帖子

Percona 5.7 tokudb 查询性能不佳 - 选择了错误的(非聚集)索引

我有一个大约有 8.5m 行的表格。该表是 tokudb,它具有下面描述的索引。在尝试运行如下更新语句时,我遇到了令人沮丧的性能:

 update retail.lw_item_discovery 
 set price = 'X', 
     prev_price = 'Y', 
     last_updated = '2016-04-13', 
     last_price_change = '2016-04-13' 
 where market = 'XX' 
   and sku = '123456'
Run Code Online (Sandbox Code Playgroud)

执行此更新需要 40 秒以上的时间。还有其他类似的更新经常发生,但是这台机器的 I/O 子系统并没有受到丝毫压力(RAID SSD),并且还有大量可用的 RAM。

EXPLAIN 产量:

 update retail.lw_item_discovery 
 set price = 'X', 
     prev_price = 'Y', 
     last_updated = '2016-04-13', 
     last_price_change = '2016-04-13' 
 where market = 'XX' 
   and sku = '123456'
Run Code Online (Sandbox Code Playgroud)

基于此 - 它选择PRIMARY索引而不是其他索引之一,例如cl_unique_idx在前两个位置的 where 语句中具有两列的索引。所以我很难过为什么计划者选择了PRIMARY而不是导致性能如此糟糕。以下是索引列表:

+----+-------------+-------------------+------------+-------+------------------------------------------------------------+---------+---------+------+------+----------+------------------------------+
| id | select_type | table             | partitions | …
Run Code Online (Sandbox Code Playgroud)

mysql locking percona-server update tokudb

2
推荐指数
1
解决办法
1300
查看次数

标签 统计

locking ×1

mysql ×1

percona-server ×1

tokudb ×1

update ×1