数据库的模式如下。
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可能已经坏了。 你可以检查是否没有
完全审核数据库的最好办法是从mysqldump命令读取模式转储。