增加打开对象的值数量的原因是什么?
What are the reasons of increasing the values number of open objects?
sybase数据库中打开的对象数增加的很厉害
并出现此错误:
Increase the config parameter 'number of open objects' to avoid descriptor reuse.
最初“打开对象”的值是 100000
sp_monitorconfig "open objects"
go
Name Num_free Num_active Pct_act Max_Used Reuse_cnt Instance_Name
number of open objects 1223 90380 95.25 92380 9269
我将值从 100000 更改为 160000,但该值仍在增加。
有什么办法可以知道增加的对象是什么?
值增加的原因是什么以及如何停止以这种方式增加?
当我看到这个问题(打开对象的描述符使用量不断增加)时,我将问题追溯到生成大量准备好的语句的应用程序(例如,而不是重新使用为重复的 DML 语句准备语句,应用程序为每个 DML 语句创建一个新的准备语句)。
在 Sybase(现在的 SAP)ASE 中,准备好的语句被转换为 'lightweight procedures'(又名 LWP;想想 'temporary procedures'),这又需要它们自己的描述符。
要确定这是否是 LWP 问题:
- 授予 sybase_ts_role 您的登录名
- 运行
dbcc traceon(3604)
- 运行
dbcc des
注意:dbcc des
将生成 LOT 的输出,因此请务必将其捕获到文件中!!
在 'dbcc des' 输出中,LWP 显示了以下属性:
- 存在于登录的临时数据库中
- 有负对象 ID
- 有类似 *dddddddddddddd_hhhhhh 的名称(其中 'd' == 十进制数字,'h' == 十六进制数字) 或 ...
- 可能有类似 *aadddddddddd_dddddddddaa* 的名称('d' == 十进制,'a' == 字母字符)
- objssystat = O_PROC
- objsysstat2 = O2_LWP
要查找有问题的连接...您可以从 LWP 名称(dbcc des
输出)或从 master..monCachedProcedures
列(查看对于名称为 *sq##########ss*
和 *ss#########ss*
的 proc ... 看起来像 system-/auto-generated names).
注意:根据 ASE 版本(11?12?15?16?),LWP 名称格式可能会有所不同,因此您可能需要进行一些挖掘才能找到关联的 spid
。
对于 spid
是名称一部分的 LWP,spid 可能是 (dbcc des
) 对象名称的前 5 位数字;所以接下来我们看到 spid
= 61
*00061000000606_9d5317
*00061000000626_a149eb
*00061000000606_9d5317
*00061000000589_63ea4e
sybase数据库中打开的对象数增加的很厉害 并出现此错误:
Increase the config parameter 'number of open objects' to avoid descriptor reuse.
最初“打开对象”的值是 100000
sp_monitorconfig "open objects"
go
Name Num_free Num_active Pct_act Max_Used Reuse_cnt Instance_Name
number of open objects 1223 90380 95.25 92380 9269
我将值从 100000 更改为 160000,但该值仍在增加。 有什么办法可以知道增加的对象是什么? 值增加的原因是什么以及如何停止以这种方式增加?
当我看到这个问题(打开对象的描述符使用量不断增加)时,我将问题追溯到生成大量准备好的语句的应用程序(例如,而不是重新使用为重复的 DML 语句准备语句,应用程序为每个 DML 语句创建一个新的准备语句)。
在 Sybase(现在的 SAP)ASE 中,准备好的语句被转换为 'lightweight procedures'(又名 LWP;想想 'temporary procedures'),这又需要它们自己的描述符。
要确定这是否是 LWP 问题:
- 授予 sybase_ts_role 您的登录名
- 运行
dbcc traceon(3604)
- 运行
dbcc des
注意:dbcc des
将生成 LOT 的输出,因此请务必将其捕获到文件中!!
在 'dbcc des' 输出中,LWP 显示了以下属性:
- 存在于登录的临时数据库中
- 有负对象 ID
- 有类似 *dddddddddddddd_hhhhhh 的名称(其中 'd' == 十进制数字,'h' == 十六进制数字) 或 ...
- 可能有类似 *aadddddddddd_dddddddddaa* 的名称('d' == 十进制,'a' == 字母字符)
- objssystat = O_PROC
- objsysstat2 = O2_LWP
要查找有问题的连接...您可以从 LWP 名称(dbcc des
输出)或从 master..monCachedProcedures
列(查看对于名称为 *sq##########ss*
和 *ss#########ss*
的 proc ... 看起来像 system-/auto-generated names).
注意:根据 ASE 版本(11?12?15?16?),LWP 名称格式可能会有所不同,因此您可能需要进行一些挖掘才能找到关联的 spid
。
对于 spid
是名称一部分的 LWP,spid 可能是 (dbcc des
) 对象名称的前 5 位数字;所以接下来我们看到 spid
= 61
*00061000000606_9d5317
*00061000000626_a149eb
*00061000000606_9d5317
*00061000000589_63ea4e