我在我们的一些数据库服务器上使用来自 Percona 的 TokuDb。我设置了数据库,添加了第一批数据,一切正常。
过了一段时间并添加了数百万个条目后,我注意到数据库性能严重下降。事实证明,某些表的索引的基数为零。这不会同时影响所有表,但主要影响多个表。
mysql错误日志列出了一些这样的问题
TokuDB: Auto running foreground analysis for [table_name], delta_activity 1827 is greater than 30 percent of 0 rows. - failed, likely a job already running.
所以我尝试禁用 auto_analyze 来防止这个问题。现在不再推送此日志,但索引基数再次被删除。
测试解决方案:
我尝试通过执行来修复索引
ANALYZE table [table_name]
它有效。但是现在几天后,同样的问题又回来了。
禁用 auto_analyze 由
set tokudb_analyze_time = 0
系统:
Percona TokuDB 5.7.16-10
表包含大约 1100 万行
CREATE TABLE `table1` ( `field1` char(2) COLLATE utf8_bin NOT NULL, `field2` char(15) COLLATE utf8_bin NOT NULL, `field3` char(15) COLLATE utf8_bin NOT NULL, ... a lot other field2 ... PRIMARY KEY (`field1`,`field2`), KEY `index_1` (`field3`,`field2`,`field1`) USING BTREE, ... other indexes ... ) ENGINE=TokuDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin ROW_FORMAT=TOKUDB_LZMA;
桌子每天多次在重负荷下工作一个小时。