2008年(239)
分类:
2008-06-17 23:26:33
事务在处理数据时申请锁,在事务结束后释放锁。如果系统中有很多个事务,或者单个事务需要执行大批量的数据处理,系统中就会存在大量的锁。随着锁数量的增加,系统需要花费大量的CPU资源、内存空间来管理锁。在锁的数目达到一定的数量之后,系统的性能就受到严重影响。
为避免太多的锁,数据库系统采用锁升级(lock escalation)机制,用来减少系统中锁的数目。系统为锁升级设定一个阀值。一个事务拥有的锁超过这个阀值后,系统就将该事务的锁级别升级到一个更高的层次。例如:事务拥有记录锁,在记录锁的数目超过阀值后,系统就将该事务的记录锁升级到表锁。使用一个表锁代替所有的记录锁,从而使锁的数目减少。
锁的升级,虽然降低了系统的资源开销,但要影响到系统的并发处理能力。数据库管理员如果在系统中发现锁的升级,就应当考虑调整系统或者应用程序。