【问题标题】:Sybase locking strategySybase 锁定策略
【发布时间】:2012-11-21 16:59:34
【问题描述】:

Adaptive Server 提供以下锁定方案:

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

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

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

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

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

为什么不直接设置为 2147483647?

【问题讨论】:

标签: transactions locking sap-ase


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      • 2023-03-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多