2010-11-02 76 views
1

我有innodb表(它们全都在同一个文件中,并且这个文件变得非常大,大约8GB) 当我在一张表中插入一行时(这个表包含关于100万条记录),这个插入语句大约需要30秒! 有无论如何改善这个问题? 任何想法是高度赞赏mysql innodb插入语句需要很长时间

CREATE TABLE userdata (userno blob NOT NULL, amount double(11,2), active enum('0','1') default '0', used enum('0','1') default '0', ActionTime timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, Bonus enum('0','1') default '0', UserType enum('Perm','Temp') NOT NULL default 'Perm', serial_number bigint(20) NOT NULL default '0', PRIMARY KEY (userno(50)), KEY AIX (active), KEY UIX (used), KEY Id (userno(20),active), KEY UI (userno(50)), KEY SNI (serial_number)) ENGINE=InnoDB DEFAULT CHARSET=latin1 
+3

Сould请您发布表的定义是什么?表中有索引,外键约束和触发器吗?请运行'SHOW CREATE TABLE mytable'并发布其输出。 – Quassnoi 2010-11-02 10:29:47

+1

也看看硬件部分。你可以尝试增加内存吗?有没有其他CPU密集型进程运行服务器?如果是这样,您可以将这些CPU密集型进程移到另一台服务器上吗目前有多少用户正在访问数据库? – PradeepGB 2010-11-02 10:43:03

+0

并向我们展示my.cnf文件。 – 2010-11-02 10:48:18

回答

1

BLOBPRIMARY KEY是不是最好的主意。

你能不能改变它的数据类型为INT

+0

我是这么认为的,,,,我试图得到尽可能多的想法,可能 – Alaa 2010-11-02 11:04:17

+0

我参与在这个系统中,我必须解决这个问题 – Alaa 2010-11-02 11:04:44

+0

我觉得你的疼痛,当你有机会,你应该已经运行:-) – Jaydee 2010-11-02 12:16:07