There is not enough procedure cache to run this procedure, trigger, or SQL batch. Retry later, or ask your SA to reconfigure SQL

本文分享了在Sybase数据库中解决因内存不足导致查询失败的问题,并提供了详细的配置参数调整建议,包括maxmemory、defaultdatacache等关键设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

sybase数据库文章:

笔者在sybase数据库中,打算在40万条的表中进行没有索引的数据检索,结果死机,怀疑tempdb的大小不足,将tempdb数据库设备大小增加到100M后,提示如下结果:

  There is not enough procedure cache to run this procedure, trigger, or SQL batch. Retry later, or ask your SA to reconfigure SQL Server with more procedure cache.

经网上搜索,其原因是内存不足!

解决方法:

在数据库服务的“configure”中修改total mermory :将其值增加10倍,重新启动数据库后,再执行查询结果成功!

ASE对资源的使用设计的比较精简,浪费的资源很少。在安装完ASE后其中的所有参数default 是比较低的,不能满足企业级用户的需要。

第一步,你必须要根据数据量和用户数,还有应用的特点对ASE的参数做出合理的调整。

通常的做法是:
max memory = physical memory * 70-80%
default data cache = max memory * 50%
procedure cache size = max memory * 20-30%

number of user connections = n (default = 25)
number of lock = n * 单个用户所需的最大锁数 * 120%
(一般这个比较难估计,syabse的资深工程师给我的参考值:有用户配到180万,对于你的10G的数据量我估计先配 100000)
number of open objects = 10000
number of open indexed = 10000

这样的配置基本能正常使用了,具体怎么配置可以到sybase官方网站下载手册,英文好的看洋文,也有中文的。

然后,如果发现性能不如你预期的好,就需要发挥你的DBA才能来调优了。对于调优,我也没有独门秘笈,这里需要运用的知识较多,这次就不细说了。
ASE提供有一些工具可以帮助你找到影响性能的瓶颈:
用法很简单:
sp_sysmon "00:03:00"
这会显示3分钟内所有的计数信息,有四大类 18 项。
其中第一项'kernel'信息,显示这段时间内cpu的使用率,io的繁忙度。这很有帮助。

我再费点口舌:以后sp_configure的输出信息不需要发出来了,没什么大用。给sp_sysmon信息就行了。

提醒一下:对数据库的大小安排,tempdb大小,log的大小分配都可以通过利用并行io提高ASE性能。
给的通常的公式:
数据库大小=DB
tempdb = DB * 20% (经验值)
log size = DB * 20%
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值