我在Percona的某些数据库服务器上使用TokuDb。 我设置了数据库,添加了第一块数据,并且每件事情都运行正常。
过了一段时间并添加了数百万条目,我注意到db性能的重大损失。事实证明,一些表的索引的基数为零。 这不会同时影响多个表,而是影响多个表。
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
表格容纳了大约1,100万行
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;
表格在重负荷下每天多次,如同一小时。