为什么DML只提供解除S封锁的操作,而不提供解除X封锁的操作?
为了防止由恢复引起的更新丢失现象,PXC协议规定:X封锁必须保留到事务终点(COMMIT或ROLLBACK)。因此在DML中,COMMIT或ROLLBACK的语义中包含了X封锁的解除,不用提供解除X封锁的操作。 而对于S封锁而言,它是一种共享型的封锁(读取但不能修改),其数据不可能是未提交的修改,封锁不必等提交后才能解除,因此可以由事务用UNLOCK解除各自对数据的封锁。
免费的网站请分享给朋友吧