【问题标题】:Mysql Innodb indexing on a column with majority null valuesMysql Innodb 在具有大多数空值的列上建立索引
【发布时间】:2016-08-01 22:48:55
【问题描述】:

我尝试在包含 2000 万行的表中索引日期时间字段。该列的大多数 (99%) 行为空。之后,CPU 利用率因此飙升至 100%。我无法找出相同的确切原因。

【问题讨论】:

标签: mysql indexing query-optimization innodb


【解决方案1】:

作为一种优化,InnoDB 会“延迟”索引的更新。可能发生的事情是这种延迟操作正在发生,导致 CPU 达到峰值。

有关更多信息,请搜索“InnoDB 更改缓冲”。

【讨论】:

  • 我在 CPU 飙升后删除了索引。在再次创建索引之前,我需要确定根本原因。任何调试指针?估计它的索引更新会延迟完成吗?
  • 20M 行 -- 它们必须被扫描,创建和排序文件,然后写回磁盘等。请告诉我们您使用的命令和SHOW CREATE TABLE
  • 分钟/小时。取决于很多事情——表的大小、innodb_buffer_pool_size 的设置、旋转驱动器与 SSD 等
  • 使用的算法:CREATE INDEX name-index on table-name(column-name) algorithm=inplace
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多