1

我在我们的一些数据库服务器上使用来自 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 来防止这个问题。现在不再推送此日志,但索引基数再次被删除。

测试解决方案:

  1. 我尝试通过执行来修复索引

    ANALYZE table [table_name]
    

    它有效。但是现在几天后,同样的问题又回来了。

  2. 禁用 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;
    

桌子每天多次在重负荷下工作一个小时。

4

0 回答 0