奇怪下面这个sql 执行到一半的时候  (alog有350万 , linux mysql5.0.45)
delete from alog where atime< subdate(curdate(), 1);
我cancel了 ,  1  登录mysql show processlist ,发现这个delete的状态是 killed ,但要等半个小时才能消失,此时在线库什么都不能干;
    如何快速让他消失 ,  (我用kill几次是势失败的)2  在线库,1小时后,看这个alog 这个表 发现记录一条没有丢, 好古怪。 按道理无论如何还是有的啦???  (这个delete 是否是 有回滚的功能 中途退出会自动回滚 ??)

解决方案 »

  1.   

    没办法,innodb需要回滚。
    是的回滚了
      

  2.   

    反复思考 
    mysql的大表 不适合那个  delete这样的 sql 最好limit 100000 这样做  方便回退
    否则出现问题真不好书
      

  3.   

    破坏了事务!事务就是,要么全执行,要么全不执行。如果不需要事务,你也没必要选innodb
      

  4.   

    [21:17:19] bruce: 7:55---9:15 那个delete 总共执行1小时20分 
    我是执行30分左右关闭 ,关闭也花了半小时 (这么长的时间也是innodb回滚的过程 所以时间很长)y原因找到现在新问题问楼上 :insert into a
    select * from b  (b表有300万) 这个插入速度 要远远快于delete 。为什么  (insert仅仅需哟 10多分 数据跟上面是一样 )???            (请问insert 能够回滚吗 ???)
      

  5.   

    刚测试  insert 350万 花了21:16---21:36 
    20分  insert 能够回滚 。