这一切都是由数据服务器去进行操作的,任何数据库操作,他都是有锁的,比如操作完一条SQL后再执行下一条SQL,所以你如果在2个PC上同时对一个数据库执行同一个记录操作,看上去是同步的,但其实也是逐步操作的,不需要考虑那么多

解决方案 »

  1.   

    那你就可以在程序里控制了,直接用代码控制锁,lock(object){数据库操作}就可以了
      

  2.   

    不需要的
    2PL的意思就是分两步 第一步加锁 第二部解锁
    所以你可以写一个java类 来定义读操作和写操作
    并建立一个状态数组来记录对相应对象的操作状态
    根据Wikipedia的规则来说 除非读读操作会是Shared lock意外 其他都是Exclusive lock
    所以你可以检查每一个状态 在对于一个对象做读操作前检查状态,如果可以继续就把状态改为Shared Lock
    对于写操作 一样 如果是S(Shared)或者U (Unlock)状态就可以把状态改为E (Exclusive) 然后进行写操作。多线程并发的意思其实是实现并发操作, 看你怎么写了 如果是java做的话就可以多线程才操作。但多线程是模拟多个query, 但只有一个Transactions Server连接Database system和Clients之间