项目需要,把股票数据写数据库,暂时在试mysql,
replace了300万条数据进同一个表中(每行10个字段,全float数值型),
程序当中是开了事务处理的,
根据mysql的Com_commit和Com_begin整个处理过程只增加了1来看,肯定是开事务操作了,
但是真的实在是太慢了,整个过程用了50分钟
数据库是localhost,所以应该不是网速问题,
我看handler_commit也被调了足足300万次,是不是不应该这样,明明已经开启事务处理了啊!这个值整个过程难道不是只应该增加1吗!

解决方案 »

  1.   


    mysql默认是开启 autocommit的,也就是autocommit = 1,所以语句会自动提交。
      

  2.   


    com_commit是在显式提交的时候,才会增加计数。而 handler_commit 有300万次,说明内部有实际提交了 300万次,也就是隐式的提交了300万次,这个收到 autocommit = 1的影响。
      

  3.   

    按下法检查自动提交是否打开。mysql> SELECT @@autocommit;
    +--------------+
    | @@autocommit |
    +--------------+
    |            1 |
    +--------------+
      

  4.   

    所以你们都认为handler_commit这么高是因为autocommit 没有关闭?可是我终端登录后autocommit 查出来是0,难道统一用户名用程序去自动连接这个值会不同?