相关疑难解决方法(0)

如何在大型InnoDB表上提高DELETE FROM性能?

我有一个相当大的InnoDB表,其中包含大约1000万行(并且计数,它预计将变为该大小的20倍).每一行都不是那么大(平均每个131 B),但我不得不删除一大块,这需要很长时间.这是表结构:

 CREATE TABLE `problematic_table` (
    `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
    `taxid` int(10) unsigned NOT NULL,
    `blastdb_path` varchar(255) NOT NULL,
    `query` char(32) NOT NULL,
    `target` int(10) unsigned NOT NULL,
    `score` double NOT NULL,
    `evalue` varchar(100) NOT NULL,
    `log_evalue` double NOT NULL DEFAULT '-999',
    `start` int(10) unsigned DEFAULT NULL,
    `end` int(10) unsigned DEFAULT NULL,
    PRIMARY KEY (`id`),
    KEY `taxid` (`taxid`),
    KEY `query` (`query`),
    KEY `target` (`target`),
    KEY `log_evalue` (`log_evalue`)
) ENGINE=InnoDB AUTO_INCREMENT=7888676 DEFAULT CHARSET=latin1;
Run Code Online (Sandbox Code Playgroud)

从表中删除大块的查询就像这样:

DELETE FROM problematic_table WHERE problematic_table.taxid …
Run Code Online (Sandbox Code Playgroud)

mysql performance innodb

16
推荐指数
2
解决办法
3万
查看次数

标签 统计

innodb ×1

mysql ×1

performance ×1