作为针对数据导入处理性能和错误(锁定表已满)的衡量标准,可能需要调整常规内存堆 (gmheap) 和锁定表大小 (locksiz) 参数。
事实上,您可以使用终端和管理门户来检查当前分配了多少通用内存堆。
★终端用
// 一般メモリヒープサマリUSER> w $system .Config.SharedMemoryHeap.GetUsageSummary() 4992226 , 6029312 , 59441152
ObjectScriptObjectScript
通用内存堆摘要以使用量、分配量和配置量(字节)的形式显示返回值。
使用量是分配的锁表、进程表等实际使用的量。
分配量是gmheap区域中锁表、进程表等分配的量。
配置量为gmheap(KB)+IRIS系统附加区,即当前最大可用量(实际通用内存堆区值)。
如上所述,配置数量与配置参数 gmheap 的独立值不匹配。
这是因为IRIS自动将内部使用的内存区域添加到配置参数gmheap中来配置通用内存堆区域。详情请参阅下面的文档。
您可以使用以下命令获取锁表的使用情况:
返回值显示为可用量、用户可用量和已用量(字节)。详情请参阅这篇文章。
%SYS > w ##class (SYS. Lock ).GetLockSpaceInfo() 16772624 , 16764624 , 4592
ObjectScriptObjectScript
★用于管理门户
您可以从“系统操作”>“系统使用情况”>“共享内存堆使用状态”进行检查。
对于整个通用内存堆来说,
“Total SMH Pages Use”项中的“Alulated SMH/ST”表示分配量(字节)。
关于锁表
“Lock Table”项中的“SMH/ST in use”表示锁表使用量(字节)。
用户可用性必须通过从 locksiz 值中减去该值来计算。
更改 gmheap 涉及重新启动 IRIS 实例。
要查找当前 gmheap 中可以设置的最大 locksiz 值,请执行以下操作:
无需重新启动即可单独更改 Locksiz。
%SYS > write ##class (SYS. Lock ).GetMaxLockTableSize() 16777216
ObjectScriptObjectScript
如果要指定的locksiz大于通过GetMaxLockTableSize()获取的值,则需要将差值添加到gmheap并设置它。
在这种情况下,新设置将在 IRIS 实例重新启动后生效。
【注意力】
在版本 2023.1 及更高版本中, 共享内存堆 (gmheap)和用于锁的共享内存 (locksiz)的默认值已更改为“0”。 单击此处查看发行说明
*2022.2 中,gmheap=37,568(KB),locksiz=65,536(字节)。
根据配置的Global缓冲区大小(数据库缓存大小)应用最有效的设置。
如果用户未设置Global缓冲区大小,则它将从可用的系统内存中构造。
与以前的版本一样,用户仍然可以使用特定值覆盖这些默认值。