2016-08-01 84 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'的設置,旋轉驅動器與固態硬盤等 –