mysql INNODB插入非常慢

数据库的模式如下。

CREATE TABLE `items` ( `id` mediumint( 8 ) unsigned NOT NULL AUTO_INCREMENT , `name` varchar( 45 ) NOT NULL , `main_type` tinyint( 4 ) NOT NULL , `rarity` tinyint( 4 ) NOT NULL , `stack_size` smallint( 6 ) NOT NULL , `sub_type` tinyint( 4 ) NOT NULL , `cost` mediumint( 8 ) unsigned NOT NULL , `ilvl` smallint( 6 ) unsigned NOT NULL DEFAULT '0', `flavor_text` varchar( 250 ) NOT NULL , `rlvl` tinyint( 3 ) unsigned NOT NULL , `final` tinyint( 4 ) NOT NULL DEFAULT '0', PRIMARY KEY ( `id` ) ) ENGINE = InnoDB DEFAULT CHARSET = ascii; 

现在,在这个表上插入需要0.22秒。 我不知道为什么要做这么长的单行插入。 读数真的非常快,像0.005秒。 使用这里的示例configurationdev mysql mysql innodb它的平均值为0.002〜0.005秒。 为什么要花一百多倍的时间做一个单一的插入对我来说没有意义。 我的电脑如下。 操作系统:Debian SID x86-x64,Mysql 5.1,内存:4GB ddr2,cpu 2.0Ghz双核心,硬盘7200RPM 32MBcaching640GB。

为什么SELECT * FROM items花费了将近100倍的时间; vs INSERT INTO items …; 对我来说永远不会有任何意义。 它仍然是一个只有70行的小桌子,即使它有0行也花了很长时间。

编辑:此外,这个表格有很多其他的表通过ID链接到自己。 有一些链接到它,并做更新=级联; 在删除=级联;。 我相信这是这里最大的问题。 如果是这样的话,我可以进去改变它,并在删除它们时从各种小东西中删除。 插入速度似乎是〜0.2秒,无论我正在做items的插入,或者我也在另一个表上有一个外键链接到主。

那么,我的第一个猜测是你的InnoDB可能已经坏了。 你可以检查是否没有

  • 触发器会在插入时执行缓慢的操作
  • 正在进行的进程将locking表
  • 指向这个表的外键/约束

完全审核数据库的最好办法是从mysqldump命令读取模式转储。