4

Adaptive Server 提供以下锁定方案:

  • Allpages locking,即锁定数据页和索引页
  • 数据页锁定,仅锁定数据页
  • 数据行锁定,仅锁定数据行

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

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

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

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

为什么不直接将其设置为 2147483647?

4

2 回答 2

1

当有很多进程访问数据库时,数据页和数据行锁定会更好,并且有相当多的 WRITE/UPDATE 操作需要独占锁定。使用所有页面锁定,更多页面被一个操作锁定(比受写操作影响的页面更多),因此可以阻止想要访问不受写操作影响的数据的进程。

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

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

如果该表具有数据行锁定,则写入进程将获取五个锁(这意味着更多内存)并将其余五行留在页面上以供任何其他进程读取/写入

于 2013-08-25T19:36:30.880 回答
0

Locks use memory, so setting to the maximum value could cause your ASE instance to run out of available memory. SAP Sybase has some performance and tuning documentation that may help you figure out how to better tune your application, and server.

于 2012-11-21T19:36:16.077 回答