疑问:哪部分花的时间更长。环境 java +mysql (linux)
业务:java代码 SET   AUTOCOMMIT=0
connect(..)
try{
preparestatement("update or delete 某个 大sql语句");   ------时间点1commit;----提交                                               时间点2
}如果异常 回滚这段代码执行有2个时间 ,一个是 在mysql缓存或者jdk缓存里执行的时间.上面的时间点1
另外一个是整个更新从缓存提交到mysql的时间点2.现在不方便调试java,想知道 是 时间点1 还是 时间点2 花的时间更多些?

解决方案 »

  1.   

    当未提交时,插入,更新,删除的数据只可以在只次连接中看到(确实存在).重新连接mysql查看,则查看不到.
    2.在进行数据库操作时,常要用try..catch.若引入事务,则在catch中,要执行: con.rollback();-->才有实际意义.   推理 :
    从 缓存提交到 db 的时候, 需要进行数据完整性的检查 ,比如 索引 外键等的约束。
    似乎 时间点2 花的时间要多。
      

  2.   

    在每个操作语句的前后都打印出当前时间
    select now();
      

  3.   

    时间点1 花的时间长。 COMMIT只是通过数据库把事务从日志写入到磁盘,这个是由后台去操作的。
      

  4.   

    set AUTOCOMMIT=0;
    set @atime=0;
    select now();
    update `a` set name='1222';
    select name from a limit 1;
     
    select now();---------------------这里 时间花的巨大 
    commit;
    select now();---------------------几乎不花时间跟推测相反。  第一个时间点时间是漫长的
    | now()               |
    +---------------------+
    | 2010-10-14 07:57:51 |
    +---------------------+
    1 row in setQuery OK, 277319 rows affected
    Rows matched: 277319  Changed: 277319  Warnings: 0+---------------------+
    | now()               |
    +---------------------+
    | 2010-10-14 07:58:00 |---------------花1分左右
    +---------------------+
    1 row in setQuery OK, 0 rows affected+---------------------+
    | now()               |
    +---------------------+
    | 2010-10-14 07:58:00 |------------几乎没哟花时间
    +---------------------+
    1 row in set看来还是根据实际情况来分析 才是 
      

  5.   

    你操作sql的时间长,发出commit的命令后,对客户端就已经是完成了,数据库会进行日志的写操作。