Sybase:行内/行外LOB如何影响阻塞

时间:2018-11-28 17:32:24

标签: locking sybase sybase-ase clob lob

在我们的sybase ASE 15.7 db中,我们有一个包含4列的表

uid int
id varchar 32
version varchar 32
xml text

分别在uid和id上的两个索引;数据行锁定;约130行数据

我们还有2k的页面大小; xml长度最小1012 /最大5176 / avr1837。目前不在行LOB

问题在于,有时简单的插入操作需要10到15秒钟,而我却很难理解原因。

  1. 有人可以提供任何理论吗?
  2. 行内LOB会提供帮助吗?大概有2000个大小?
  3. 通常,行内/行外如何影响锁定?

1 个答案:

答案 0 :(得分:0)

我想您需要测试它听起来很明显,但是它是进行此类更改的关键。关于文本列的事情实际上是在表的末尾有大量数据,这些数据可以成为争用和阻止的焦点。

也就是说,在您的特定示例中,平均行大小非常​​接近Sybase服务器页面大小的最大大小(1962字节)。您不能在2k页服务器上将其设置为2000,因为它大于您的页大小(以字节为单位)。

实际上,您必须将其设置为1894,这是最大行大小减去其他列的大小,但这可能有点接近最大值,因此这取决于ID和版本列的填充程度。

您也没有指定使用哪种类型的索引,即聚集索引还是非聚集索引,因为如果它们不是非聚集索引,那么它仍然是一个堆表,并且可能会受到最后一页链争用的影响。您也不会量化表的行数或其他任何有关插入速度太慢的原因(例如事务量等)的信息,因此请考虑将此信息添加到您的帖子中(例如查询计划等),或者ID是否像插入等等的热点。

行内LOB可以很好地处理正确的数据。