我最近看到遗留系统上的存储过程偶尔出现问题,显示如下错误消息:
服务器消息:编号10901,严重级17: 此查询需要 X 辅助扫描 描述符,但目前有 仅 Y 辅助扫描描述符 可用。要么提高价值 '辅助扫描描述符的数量' 配置参数或试试你的 稍后查询。
其中 X 略低于 Y 。 Sybase手册有用地告诉我,我应该重新设计我的表以使用更少的辅助扫描描述符(如何?!),或增加系统上可用的数量。奇怪的是,它已经运行了好几年,唯一改变的是我们修改了几列的数据类型并添加了一个索引。任何人都可以对此有所了解吗?
答案 0 :(得分:2)
您没有说出您所使用的Sybase版本,但以下内容适用于ASE 12.5以上版本。
我怀疑这是新索引的添加,它抛弃了该存储过程的查询计划。你试过跑吗
update statistics *table_name*
对吗?如果失败,您可以通过运行找出您拥有的扫描描述符数量
sp_monitorconfig "aux scan descriptors"
然后通过运行
来增加它sp_configure "aux scan descriptors", x
其中x是您需要的扫描描述符数。
如果您希望减少商店程序正在使用的扫描描述符数量,那么根据here您必须
重写查询,或使用临时表将其分解为多个步骤。对于仅数据锁定表,如果有许多表扫描,请考虑添加索引。
但如果没有查看查询计划,则无法提供更具体的建议。
答案 1 :(得分:1)
这是提交CR的Sybase 12.5.2中的缺陷,请参阅this list中的问题361967。它被修补为12.5.3及以上版本。