2016-08-01 442 views
0

我试图在包含2000万行的表中索引日期时间字段。该列的多数(99%)行为空。之后,由于这个原因CPU利用率高达100%。我无法找出相同的确切原因。Mysql Innodb在大多数为空值的列上建立索引

+0

可能的重复[是否mysql的索引为空值?](http://stackoverflow.com/questions/289001/does-mysql-index-null-values) – MikeJRamsey56

回答

0

作为优化,InnoDB“延迟”了索引的更新。可能发生的是这个延迟操作正在发生,导致CPU飙升。

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

+0

我一旦CPU飙升就删除索引。在我再次创建索引之前,我需要确定根本原因。任何指针调试?任何估计它的延迟索引更新完成? – Gargee

+0

20M行 - 必须扫描它们,创建并分类文件,然后写回磁盘等。请向我们展示您使用的命令和“SHOW CREATE TABLE”。 –

+0

分钟/小时。取决于很多东西 - 表的大小,'innodb_buffer_pool_size'的设置,旋转驱动器与固态硬盘等 –