1. 这是InnoDB执行时间:    mysql> call p3();  
    Query OK, 0 rows affected (12 min 2.08 sec)  
2. 这是表结构:    Table: t3  
    Create Table: CREATE TABLE `t3` (  
      `id` int(11) DEFAULT NULL  
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1  
3. 这是p3的存储语句    begin  
    set @i=1;  
    while @i<10000 do  
    insert into t3 values(@i);  
    set @i=@i+1;  
    end while;  
      
    end  1. 这是MyISAM执行时间:    mysql> call p4();  
    Query OK, 0 rows affected (0.23 sec)  
2. 这是表结构:    Table: t4MyISAM  
    Create Table: CREATE TABLE `t4MyISAM` (  
      `id` int(11) DEFAULT NULL  
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8  
3. 这是p4的存储语句    begin  
    set @i=1;  
    while @i<=10000 do  
    insert into t4MyISAM values(@i);  
    set @i=@i+1;  
    end while;  
    end  
为什么InnoDB执行存储过程能这么慢呢???确实MyISAM引擎在执行写操作是很有优势的,但是为什么InnoDB执行存储过程能这么慢呢??? 正常情况下插入InnoDB也不会这么慢啊!!!

解决方案 »

  1.   

    InnoDB 支持事务,使用回滚,另外使用一个文件作为表空间。 MYSQL本身文档也说明了innodb比myisam慢。
      

  2.   

    ++  恩
    我就像问一下为什么插入10000条记录这也没多少啊!怎么用了12分钟,太慢了吧!
    InnoDB默认是采用共享表空间,这个在分区的时候考虑,现在我只是存储了10000条记录而已,共享表空间影响不太大吧!是不是mysql的InnoDB在进行存储过程的时候,会进行以外的什么操作?导致mysql的InnoDB在进行存储过程的时候会很慢
      

  3.   

    把innodb_flush_log_at_trx_commit=0  重启数据  再试试 应该就差不多一样快了
      

  4.   

    这是经典的问题:循环中提交事务导致!循环之前,设置mysql不自动提交即可。