5.5 查看集群参数详细信息 1
5.5.1 查看每个 segment 的内存配置参数 1
5.5.1.1 查看分配内存信息 1
5.5.1.2 修改内存参数 2
5.5.2 查看 shared_buffers(共享缓冲区)的内存 2
5.5.2.1 查看系统配置的参数 2
5.5.2.2 参数详解 2
5.5.2.3 修改参数 3
5.5.3 查看 max_connections(最大连接数) 3
5.5.3.1 查看最大连接数参数 3
5.5.3.2 参数详解 3
5.5.4 查看 block_size(磁盘块)的大小 3
5.5.4.1 查看磁盘块的大小 3
5.5.4.2 参数详解 4
5.5.5 查看 work_mem 的值 4
5.5.5.1 查看集群中 work_mem 的配置大小 4
5.5.5.2 参数详解 4
5.5.5.3 修改参数 4
5.5.6 查看 statement_mem 的值 5
5.5.6.1 查看集群中 statement_mem 的值 5
5.5.6.2 参数详解 5
5.5.6.3 修改参数 5
5.5.7 查看 gp_workfile_limit_files_per_query 的值 5
5.5.7.1 查看此值的大小 5
5.5.7.1 参数详解 5
5.5.8 查看 gp_resqueue_priority_cpucores_per_segment 的值 6
5.5.8.1 查看此值的大小 6
5.5.8.2 参数详解 6
5.5.8.3 修改参数 6
5.5 查看集群参数详细信息
5.5.1 查看每个 segment 的内存配置参数
5.5.1.1 查看分配内存信息
gpconfig -s gp_vmem_protect_limit
在以上可以看出 segment 使用了系统默认的内存配置 8192MB, 改参数按照机器的内存大小可以适当的调大, 详见计算如下:
1, 计算公式可参考如下:(mem+swap)* 0.9 / 单个节点 segment 数量
2, 例如 master 节点上有 252G 的内存, segment 个数为 2 个, 分配最高的内存为:
252*0.9 / 2 ≈ 110GB(112640 MB)
3, 例如数据节点上有 252G 的内存, segment 个数为 12 个, 分配最高的内存为:
252*0.9/12 ≈ 18GB(18432MB)
5.5.1.2 修改内存参数
登录到 master 节点上执行以下命令即可
gpconfig -c gp_vmem_protect_limit -m 112640 -v 18432
-c : 改变参数的名称
-m : 修改主备 master 的内存的大小一般的和 - v 一块使用
-v : 此值用于所有的 segments,mirrors 和 master 的修改
5.5.2 查看 shared_buffers(共享缓冲区)的内存
5.5.2.1 查看系统配置的参数
$ gpconfig -s shared_buffers
5.5.2.2 参数详解
只能配置 segment 节点, 用作磁盘读写的内存缓冲区, 开始可以设置一个较小的值, 比如总内存的 15%, 然后逐渐增加, 过程中监控性能提升和 swap 的情况. 以上的缓冲区的参数为 125MB, 此值不易设置过大, 过大或导致以下错误
[WARNING]:-FATAL: DTM initialization: failure during startup recovery, retry failed, check segment status (cdbtm.c:1603), 详细的配置请查看
5.5.2.3 修改参数
修改配置
- gpconfig -c shared_buffers -v 1024MB
- gpconfig -r shared_buffers -v 1024MB
5.5.3 查看 max_connections(最大连接数)
5.5.3.1 查看最大连接数参数
$ gpconfig -s max_connections
5.5.3.2 参数详解
此参数为客户端链接数据库的连接数, 按照个人数据库需求配置, 参数详解请查看:
5.5.4 查看 block_size(磁盘块)的大小
5.5.4.1 查看磁盘块的大小
$ gpconfig -s block_size
5.5.4.2 参数详解
此参数表示表中的数据以默认的参数 32768 KB 作为一个文件, 参数的范围 8192KB - 2MB , 范围在 8192 - 2097152 , 值必须是 8192 的倍数, 使用时在 blocksize = 2097152 即可
5.5.5 查看 work_mem 的值
5.5.5.1 查看集群中 work_mem 的配置大小
$ gpconfig -s work_mem
5.5.5.2 参数详解
work_mem 在 segment 用作 sort,hash 操作的内存大小当 PostgreSQL 对大表进行排序时, 数据库会按照此参数指定大小进行分片排序, 将中间结果存放在临时文件中, 这些中间结果的临时文件最终会再次合并排序, 所以增加此参数可以减少临时文件个数进而提升排序效率. 当然如果设置过大, 会导致 swap 的发生, 所以设置此参数时仍需谨慎. 刚开始可设置总内存的 5%
5.5.5.3 修改参数
修改系统配置文件, 重启集群使之生效
gpconfig -c work_mem -v 128MB
或在客户端 session 设置此参数
SET work_mem TO '64MB'
销毁 session 参数为:
reset work_mem;
5.5.6 查看 statement_mem 的值
5.5.6.1 查看集群中 statement_mem 的值
$ gpconfig -s statement_mem
5.5.6.2 参数详解
设置每个查询在 segment 主机中可用的内存, 该参数设置的值不能超过 max_statement_mem 设置的值, 如果配置了资源队列, 则不能超过资源队列设置的值.
5.5.6.3 修改参数
修改配置后重启生效
gpconfig -c statement_mem -v 256MB
5.5.7 查看 gp_workfile_limit_files_per_query 的值
5.5.7.1 查看此值的大小
$ gpconfig -s gp_workfile_limit_files_per_query
5.5.7.1 参数详解
SQL 查询分配的内存不足, Greenplum 数据库会创建溢出文件(也叫工作文件). 在默认情况下, 一个 SQL 查询最多可以创建 100000 个溢出文件, 这足以满足大多数查询.
该参数决定了一个查询最多可以创建多少个溢出文件. 0 意味着没有限制. 限制溢出文件数据可以防止失控查询破坏整个系统.
如果数据节点的内存是 512G 的内存, 表的压缩快的大小 (block_size) 是 2M 的话, 计算为: 512G + 2 * 1000000 / 1024 ≈ 707 G 的空间, 一般的表都是可以的, 一般的此值不需要修改
5.5.8 查看 gp_resqueue_priority_cpucores_per_segment 的值
5.5.8.1 查看此值的大小
$ gpconfig -s gp_resqueue_priority_cpucores_per_segment
5.5.8.2 参数详解
每个 segment 分配的分配的 CPU 的个数, 例如: 在一个 20 核的机器上有 4 个 segment, 则每个 segment 有 5 个核, 而对于 master 节点则是 20 个核, master 节点上不运行 segment 的信息, 因此 master 反映了 CPU 的使用情况
5.5.8.3 修改参数
按照不同集群的核数以及 segment 修改此参数即可, 下面的实例是修改成 8 核
gpconfig -c gp_resqueue_priority_cpucores_per_segment -v 8
来源: https://www.qcloud.com/developer/article/1447227