Sybase锁定策略

时间:2012-11-21 16:59:34

标签: transactions locking sybase-ase

Adaptive Server提供了以下锁定方案:

  • Allpages锁定,用于锁定数据页和索引页
  • 数据页锁定,仅锁定数据页
  • 数据行锁定,仅锁定数据行

我的问题是,如果锁的数量取决于锁定策略。有人说许多锁是应用程序实现不良的标志或类似的东西。我的意思是数据行策略需要比数据页更多的锁,因为数据页覆盖了一个锁下的许多行。我不完全确定我的假设。

我目前有200k,这仍然不够。

最近将我的表上的锁定策略更改为datarows以提高性能,从那时起我一直在增加锁定。

Sybase文档称该范围在1000-2147483647之间。

为什么不将它设置为2147483647?

2 个答案:

答案 0 :(得分:1)

当有许多进程使用非常多的WRITE / UPDATE操作访问数据库时,Datapages和Datarows锁定会更好,这些操作采用独占锁定。通过All-Pages锁定,更多页面被一个操作锁定(超过受写操作影响的那些页面),因此可以阻止想要访问不受写操作影响的数据的进程。

但是如果该表具有数据页或数据行锁定,则相同的写入过程将仅锁定受影响的数据,从而锁定较少量的数据,从而提供更好的并发性。但是这个编写器进程持有的锁数量更多,因此需要更多的内存。

例如,一个页面有10行,写入过程有5行。如果进程锁定页面,它只需要一次锁定并阻止任何想要读取其余五行中任何一行的进程。

如果该表具有数据行锁定,则编写器进程将采用五个锁(这意味着更多内存),并在页面上剩下五行以供任何其他进程读/写

答案 1 :(得分:0)

锁使用内存,因此设置为最大值可能会导致ASE实例耗尽可用内存。 SAP Sybase有一些performance and tuning documentation可以帮助您弄清楚如何更好地调整应用程序和服务器。