2012-11-21 61 views
2

Adaptive Server提供了以下锁定方案:的Sybase锁定策略

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

我的问题是,如果锁的数量取决于锁定策略。有人说很多锁定是应用程序执行不当或类似的迹象。我的意思是数据行战略将需要比示例数据页更多的锁,因为数据页覆盖了一个锁下的许多行。我不完全确定我的假设。

我目前有200k,这还不够。

最近更改了我的表上的锁定策略,以改善性能,然后我一直在增加锁。

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

为什么不把它设置为2147483647?

+0

这是[标签: sybase-asa]或[tag:sybase-ase]? –

回答

0

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

1

当有许多进程访问数据库时,数据页和数据锁的锁定效果会更好,因为有很多WRITE/UPDATE操作需要进行独占锁定。在All-Pages锁定的情况下,更多的页面被一个操作锁定(多于受写入操作影响的页面),因此可以阻止要访问不受写入操作影响的数据。

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

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

如果表中有数据行锁定,那么笔者过程将需要五把锁(这意味着更多的内存)和叶的页面上五排,其余为任何其他进程进行读/写