我新搭建的源码安装的mysql数据库,新建了一个innodb的表,但是我发现在用PHP循环插入10000条数据的时候,速度特别慢,基本上只有几十条每秒的速度。我试着用mysql_query('set autocommit=0')来关闭,发现PHP执行了,但是我在数据库命令界面用show variables发现还是开启的?之后我重新搭建了一个数据库,复制那张表,用原来的PHP执行循环插入,速度是几千条每秒。
为什么同样的搭建环境和表结构,速度为差这么多?
PHP执行mysql_query('set autocommit=0'),为什么在mysql命令界面show还是开启的

解决方案 »

  1.   

    用 START TRANSACTION 
    sql....
    commit
    这样试试
      

  2.   

    set autocommit=0是session级别的在配置文件中加一行innodb_flush_log_at_trx_commit=0保证让你插入速度提高100倍
      

  3.   

    'set autocommit=0'仅对当前连接有效。
      

  4.   

    'set autocommit=0'仅对当前的连接有效。
      

  5.   

    如果一个参数有session值和global值,在设置时,没有指定是session还是global,就默认session,查询的结构默认的也是session,除非指定global