云数据库 GaussDB-内存:work_mem
work_mem
参数说明:设置内部排序操作和Hash表在开始写入临时磁盘文件之前使用的内存大小。ORDER BY,DISTINCT和merge joins都要用到排序操作。Hash表在散列连接、散列为基础的聚集、散列为基础的IN子查询处理中都要用到。
对于复杂的查询,可能会同时并发运行好几个排序或者散列操作,每个都可以使用此参数所声明的内存量,不足时会使用临时文件。同样,好几个正在运行的会话可能会同时进行排序操作。因此使用的总内存可能是work_mem的好几倍。
该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
取值范围:整型,64~2147483647,单位为KB。
默认值:
256MB(128核CPU/1024G内存,104核CPU/1024G内存,96核CPU/1024G内存,96核CPU/768G内存);128MB(64核CPU/512G内存,60核CPU/480G内存,32核CPU/256G内存,16核CPU/128G内存);64MB(8核CPU/64G内存);32MB(4核CPU/32G内存);16MB(4核CPU/16G内存)
设置建议:
依据查询特点和并发来确定,一旦work_mem限定的物理内存不够,算子运算数据将写入临时表空间,带来5-10倍的性能下降,查询响应时间从秒级下降到分钟级。
- 对于串行无并发的复杂查询场景,平均每个查询有5-10关联操作,建议work_mem=50%内存/10。
- 对于串行无并发的简单查询场景,平均每个查询有2-5个关联操作,建议work_mem=50%内存/5。
- 对于并发场景,建议work_mem=串行下的work_mem/物理并发数。
- 对于BitmapScan的哈希表也会受到work_mem的限制,但不会被严格管控下盘。完全Lossify的情况下,哈希表每占用1MB的内存,对应一次BitmapHeapScan的16GB的页面(Ustore为32GB),达到work_mem上限后,会按此比例随数据访问量线性增长。
- GaussDB内存_云数据库GaussDB内存_高斯数据库内存-华为云
- RDS for MySQL变更实例的CPU和内存规格_CPU和内存_CPU过高_MySQL内存
- GaussDB使用技巧_高斯数据库下载_高斯数据库使用技巧_华为云
- GaussDB数据库云备份_华为GaussDB_高斯数据库云备份
- GaussDB视频教程_gaussdb查看表结构语句_高斯数据库视频教程_华为云
- GaussDB MPP_高斯数据库查看建表语句_高斯数据库 MPP_华为云
- GaussDB数据库安全_GaussDB收费吗_高斯数据库安全
- GaussDB数据库考试_GaussDB认证_高斯数据库考试_华为云
- GaussDB数据库概念_openGauss_华为高斯数据库概念
- GaussDB学习_gaussdb教程_高斯数据库学习_华为云