(本文档仅供参考)
(V97及以上版本)
问题
在数据集查询预览或者报表界面上提示:“ 内存告警: 很抱歉,查询数据量超过【数据集单次查询最大单元格数】系统设置项的阈值,触发系统保护机制,请减少查询数据量或联系管理员修改设置项阈值 ”,要如何解决?
原因
因为数据集单次查询最大单元格数超过了系统默认设置导致的,这时候会触发内存告警。
当前提示内存告警规则:【系统默认设置项中的数据集单次查询最大行数】* 【实际查询数据集的列数】>【系统默认设置项数据集单次查询最大单元格数】
解决方案
该【内存告警】机制是避免用户设置【数据集单次查询最大单元格数】过大,导致服务器内存不够支撑如此大的查询数据量,从而造成服务器内存溢出,引发服务器宕机的情况。
正常情况下,建议是依据【系统运维】--》【系统选项】–》【性能优化】–》点击【自动优化】按钮优化相关设置项,并保存。
若还是提示这样的信息,可以相对继续减少【数据集单次查询最大行数】,保证 【系统默认设置项中的数据集单次查询最大行数】* 【实际查询数据集的列数】<= 【系统默认设置项数据集单次查询最大单元格数】
【数据集单次查询最大行数】此设置的目的是类似于分页查询的逻辑,每次往数据库读取所设置的行数进入到服务器内存,当翻页到所设置的行数加一行时,又会重新往数据库读取所设置的行数进入到服务器内存,以此减少频繁与数据库取数避免数据库压力过大,并且以加快翻页查询的速度。
示例:下图,单次查询最大行数1000,当要查看1001条数据时就重新往数据库读取1000行数据,以此循环,但是如果设置单次查询最大的行数过大,如100000,那么当10万*100列时就远远大于目前最大单元数28000,所以当修改了单次查询的最大行数时,也应该对应改变查询的最大单元格数以达到一致,避免告警信息。并且不建议把单次查询最大行数的数值调整过大,如果当查询数据量过大时,容易造成服务器的内存不足,从而导致内存溢出报错。
补充:
对于电子表格触发的告警逻辑计算为:【电子表格分组/Excel融合分析报表取数最大行数】* 【实际查询数据集的列数】>【系统默认设置项数据集单次查询最大单元格数】
另V97的部分版本找不到上面“电子表格分组/Excel融合分析报表取数最大行数”设置项,如下图:
那此部分版本的计算逻辑为:【数据集最大行数】* 【实际查询数据集的列数】>【系统默认设置项数据集单次查询最大单元格数】
可在高级设置部分查找,如下图: