数据库中悲观锁小结
实际上,悲观并发控制实际上是“先取锁再访问”的保守策略,为数据处理的安全提供了保证。但是在效率方面,处理加锁的机制会让数据库产生额外的开销,还有增加产生死锁的机会;
另外,在只读型事务处理中由于不会产生冲突,也没必要使用锁,这样做只能增加系统负载;还有会降低了并行性,一个事务如果锁定了某行数据,其他事务就必须等待该事务处理完才可以处理那行数据。
一般来说,我们可以针对粒度对其进行进一步分类,分为表锁和行锁:
行锁为给某一行上锁(如果是 X 锁则类似于修改某一篇文章);
表锁则为给一个表加上锁(如果是 X 锁则类似于为了更换博客系统而将整个博客下线了),通常用在 DDL 语句中,如 DELETE TABLE,ALTER TABLE 等,由于表锁影响整个表的数据,并发性不如行锁好。