不考虑结果的正确性,只考虑这两次更新本身是否是有效的。比如一个线程将id为3的记录的addr域修改成aa,另一个线程将id为3的记录的addr域修改成bb,两个线程同时执行,不管结果是aa还是bb,都视为正确。但前提是这两个更新都是执行过的,也就是说如果开启了日志的话,可以在日志中看到两次更新。
另外不同的线程向同一个表同时插入不同的记录的话,只考虑记录被成功插入的话,应该完全不会出问题吧?就是不会出现有某个进程的记录没有插入到数据库中。
怎么说呢,我想问的大概就是一次只影响一条记录的单条SQL语句是否是具有原子性的。另外一次影响多条记录的单条SQL语句具有原子性么?

解决方案 »

  1.   

    单条sql当然是原子性的  影响多条记录的单条sql也是原子性的这个就是关系数据库的特性
      

  2.   


    假如某条SQL语句A同时影响id为1,2,3的三行记录,另一条同时执行的SQL语句B影响id为2的记录。B会与A同时执行么?还是B会在A执行前或者执行后执行?
      

  3.   

    我觉得没有所谓的同时进行,及时你是多线程的。但是mysql内部在执行sql时也需要排队的。可以用show full processlist查看