多用户数据库处理:并发控制、安全与性能优化
1. 悲观锁与乐观锁
在多用户数据库处理中,锁机制是实现并发控制的关键。悲观锁和乐观锁是两种常见的锁策略。
悲观锁在事务开始前就对相关资源加锁,以防止其他事务干扰。例如,在处理 PRODUCT 表的事务时,会先获取 PRODUCT 的锁,然后读取值、处理事务、执行更新操作,最后解锁。以下是悲观锁处理 PRODUCT 表中 “Pencil” 记录的示例代码:
LOCK PRODUCT;
SELECT PRODUCT.Name, PRODUCT.Quantity
FROM PRODUCT
WHERE PRODUCT.Name = 'Pencil';
Set NewQuantity = PRODUCT.Quantity – 5;
{process transaction – take exception action if NewQuantity < 0, etc.
Assuming all is OK: }
UPDATE PRODUCT
SET PRODUCT.Quantity = NewQuantity
WHERE PRODUCT.Name = 'Pencil';
UNLOCK PRODUCT;
{no need to check if update was successful}
/* *** EXAMPLE CODE - DO NOT RUN *** */
乐观锁则在事务完成后才获取锁。其优点是锁持有时间短,能显著提高吞吐量,尤其是在事务复杂或客户
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



