数据库事务,简单说是指执行一系列操作时要么全部执行,要么全部不执行的连贯性,也可以说是多个操作的原子性。Drupal8使用事务实现关键操作,事务操作离不开锁机制。

    乐观锁:不锁定,通过自旋方式检查自身是否修改成功,成功则更改,不成功则尝试。
    悲观锁:获取锁,同时只能有一个操作同一个事务。

    Drupal8使用悲观锁,借助数据库自身的事务性实现锁机制,相关表(semaphore)。Drupal8实现事务锁的方式很好理解,当进行事务操作时,尝试在semaphore表插入一行数据,若成功则获取锁进行事务操作,若失败则放弃事务申请进行等待下次申请。