命令 | 参数 | 作用 |
---|---|---|
gpstate | -b | 显示简要状态信息 |
gpstate | -c | 显示主镜像映射 |
gpstate | -e | 显示具有镜像状态问题的片段,例如查看gprecovery进度 |
gpstate | -f | 显示备用主机standby master的详细信息 |
gpstate | -i | 显示GRIPLUM数据库版本 |
gpstate | -m | 只列出mirror 实例的状态和配置信息,显示镜像实例同步状态 |
gpstate | -p | 显示使用的端口 |
gpstate | -Q | 快速检查主机状态,该命令默认列出数据库运行状态汇总信息,常用于日常巡检 |
gpstate | -s | 显示集群详细信息 |
gpstate | -v | 显示详细信息 |
命令 | 参数 | 作用 | 注意事项 |
---|---|---|---|
gpconfig | -c param_name | 通过在postgresql.conf文件底部添加新设置来改变配置参数 | 谨慎修改配置参数。 |
gpconfig | -v param_name value | 为指定配置参数设置值。该值适用于所有Segment,Master和后备Master | |
gpconfig | -m param_name master_value | 为Master和后备Master设置指定配置参数的值 | |
gpconfig | -masteronly | 仅编辑Master的postgresql.conf文件 | |
gpconfig | -r param_name | 通过注释掉postgresql.conf文件中的项删除配置参数 | |
gpconfig | -l | 列出所有gpconfig支持的配置参数(list) | |
gpconfig | -s param_name | 显示配置参数在集群中的所有实例上的值 | |
gpconfig | –file param_name | 显示在所有实例上postgresql.conf文件中的配置参数值 | |
gpconfig | –file-compare | 比较当前值与postgresql.conf文件中的值 | |
gpconfig | –skipvalidation | 覆盖系统验证检查,谨慎使用 | |
gpconfig | –verbose | 显示额外的日志信息 |
命令 | 参数 | 作用 | 注意事项 |
---|---|---|---|
gpstart | -a | 快速启动 GreenPlum 数据库 | 直接启动,不提示终端用户输入确认 |
gpstart | -d path | 指定数据目录,默认是$MASTER_DATA_DIRECTORY。 | |
gpstart | -q | 在安静模式下运行,命令输出不显示在屏幕,但写入日志文件。 | |
gpstart | -m | 以维护模式连接到Master进行目录维护;只启动master 实例,主要在故障处理时使用 | |
gpstart | -v | 显示详细启动信息。 |
命令 | 参数 | 作用 | 注意事项 |
---|---|---|---|
gpstop | -a | 快速停止 | 直接停止,不提示终端用户输入确认 |
gpstop | -d | 指定数据目录(默认值:$MASTER_DATA_DIRECTORY) | |
gpstop | -m | 维护模式 | 用于紧急情况的选项,可以立即中止正在进行的事务,但可能导致数据不一致或数据库损坏。不建议在正常情况下使用这些选项;只停止master 实例,与gpstart –m 对应使用 |
gpstop | -q | 在安静模式下运行,命令输出不显示在屏幕,但仍然写入日志文件。 | |
gpstop | -r | 停止所有实例,然后重启系统 | |
gpstop | -u | 重新加载配置文件 postgresql.conf 和 pg_hba.conf | 不停止数据库,只加载pg_hba.conf 和postgresql.conf中运行时参数,当改动参数配置时候使用 |
gpstop | -v | 显示详细启动信息。 | |
gpstop | -M fast | 快速关闭。正在进行的任何事务都被中断。然后滚回去。 | 停止数据库,中断所有数据库连接,回滚正在运行的事务 |
gpstop | -M immediate | 立即关闭。正在进行的任何事务都被中止。不推荐这种关闭模式,并且在某些情况下可能导致数据库损坏需要手动恢复。 | |
gpstop | -M smart | 智能关闭。如果存在活动连接,则此命令在警告时失败。这是默认的关机模式。 | |
gpstop | –host hostname | 停用segments数据节点,不能与-m、-r、-u、-y同时使用 |
命令 | 参数 | 作用 |
---|---|---|
gprecoverseg |
-a |
快速恢复。 [ 以防突然断电或远程断开等情况,一般建议后台运行: nohup gprecoverseg -a & ] |
gprecoverseg |
-i path |
指定恢复文件的路径。 |
gprecoverseg |
-d path |
指定数据目录的路径。 |
gprecoverseg |
-l path |
指定日志文件的路径。 |
gprecoverseg |
-r |
平衡数据。[ 若存在主备切换,则需要在修复完成后进行实例切回 ] |
gprecoverseg |
-s path |
指定配置空间文件的路径。 |
gprecoverseg |
-o path |
指定恢复配置文件的路径。 |
gprecoverseg |
-p |
指定额外的备用机。 |
gprecoverseg |
-F |
将数据文件回滚到之前的状态。相当于全量修复。 使用 -F 参数需要非常小心,因为它是一种强制操作,可能会导致数据的不一致性。 |
gprecoverseg |
-S path |
指定输出配置空间文件的路径。 |
gprecoverseg 优先级顺序 1. gprecoverseg -a --> 2. gprecoverseg --> 3. gprecoverseg -r
只有1和2实在恢复不了,数据无法修复恢复时才会使用[ gprecoverseg -F ]
gpactivatestandby -d path: 指定备库路径,使用数据目录绝对路径,默认:$ MASTER_DATA_DIRECTORY
gpactivatestandby -f: 强制激活备份主机。
gpactivatestandby -v | 显示此版本信息
gpinitstandby -s standby_name: 指定新备库名称。
gpinitstandby -D: debug调试模式。
gpinitstandby -r: 移除备用机。
-- 所有表信息,不包含分区表的子表
SELECT
psut.relid,
psut.relname,
psut.schemaname
FROM
pg_statio_user_tables psut
LEFT JOIN pg_inherits pi ON psut.relid = pi.inhrelid
WHERE
schemaname = 'public'
AND pi.inhparent IS NULL
ORDER BY
2;
-- 所有表信息,包含分区表的子表
SELECT
psut.relid,
psut.relname,
psut.schemaname
FROM
pg_statio_user_tables psut
LEFT JOIN pg_inherits pi ON psut.relid = pi.inhrelid
WHERE
schemaname = 'public'
ORDER BY
2;
-- 查看某个分区表的信息
SELECT
tablename,
partitiontablename,
partitiontype,
partitionboundary
FROM
pg_partitions
WHERE
tablename = 'here_your_table_name'
ORDER BY
partitionboundary DESC;
-- 字节显示 SELECT pg_relation_size('table_name');
SELECT pg_relation_size('here_your_table_name');
-- 显示格式(合理的文件大小单位) SELECT pg_size_pretty(pg_relation_size('table_name'));
SELECT pg_size_pretty(pg_relation_size('here_your_table_name'));
-- 查看全部表的大小
SELECT relname AS relation,
pg_size_pretty (
pg_total_relation_size (C .oid)
) AS total_size
FROM pg_class C
LEFT JOIN pg_namespace N ON (N.oid = C .relnamespace)
WHERE nspname NOT IN (
'pg_catalog',
'information_schema'
)
AND C .relkind <> 'i'
AND nspname !~ '^pg_toast'
ORDER BY pg_total_relation_size (C .oid) DESC
LIMIT 20;
-- 评估表中的数据量
SELECT reltuples::numeric as count
FROM pg_class
WHERE relname='here_your_table_name';
-- 查看表数据分布情况(一张表各segment存储情况)
select gp_segment_id,count(*) from here_your_table_name group by gp_segment_id order by 1;
-- 不会改变分布键,会清理过期空间
ALTER TABLE table_name SET WITH (REORGANIZE=true);
-- 指定新的分布键,会清理过期空间
ALTER TABLE table_name SET WITH (REORGANIZE=true) DISTRIBUTED BY (column_name,column_name);
-- 修改表分布策略为随机分布,但是不移动数据
ALTER TABLE table_name SET WITH (REORGANIZE=false) DISTRIBUTED randomly;
-- 查看所有表的索引信息
SELECT A
.SCHEMANAME,
A.TABLENAME,
A.INDEXNAME,
A.TABLESPACE,
A.INDEXDEF,
B.AMNAME,
C.INDEXRELID,
C.INDNATTS,
C.INDISUNIQUE,
C.INDISPRIMARY,
C.INDISCLUSTERED,
D.DESCRIPTION
FROM
PG_AM B
LEFT JOIN PG_CLASS F ON B.OID = F.RELAM
LEFT JOIN PG_STAT_ALL_INDEXES E ON F.OID = E.INDEXRELID
LEFT JOIN PG_INDEX C ON E.INDEXRELID = C.INDEXRELID
LEFT OUTER JOIN PG_DESCRIPTION D ON C.INDEXRELID = D.OBJOID,
PG_INDEXES A
WHERE
A.SCHEMANAME = E.SCHEMANAME
AND A.TABLENAME = E.RELNAME
AND A.INDEXNAME = E.INDEXRELNAME
AND E.SCHEMANAME = 'public';
-- 查看单表的索引信息
SELECT A
.SCHEMANAME,
A.TABLENAME,
A.INDEXNAME,
A.TABLESPACE,
A.INDEXDEF,
B.AMNAME,
C.INDEXRELID,
C.INDNATTS,
C.INDISUNIQUE,
C.INDISPRIMARY,
C.INDISCLUSTERED,
D.DESCRIPTION
FROM
PG_AM B
LEFT JOIN PG_CLASS F ON B.OID = F.RELAM
LEFT JOIN PG_STAT_ALL_INDEXES E ON F.OID = E.INDEXRELID
LEFT JOIN PG_INDEX C ON E.INDEXRELID = C.INDEXRELID
LEFT OUTER JOIN PG_DESCRIPTION D ON C.INDEXRELID = D.OBJOID,
PG_INDEXES A
WHERE
A.SCHEMANAME = E.SCHEMANAME
AND A.TABLENAME = E.RELNAME
AND A.INDEXNAME = E.INDEXRELNAME
AND E.SCHEMANAME = 'public'
AND E.RELNAME = 'here_your_table_name';
-- 检查索引占用
SELECT schemaname || '.' || relname AS table, indexrelname AS index
, pg_size_pretty(pg_relation_size(i.indexrelid)) AS "index size", idx_scan AS "index scans"
FROM pg_stat_user_indexes ui
JOIN pg_index i ON ui.indexrelid = i.indexrelid
WHERE NOT indisunique
AND idx_scan < 50
AND pg_relation_size(relid) > 5 * 8192
ORDER BY pg_relation_size(i.indexrelid) / nullif(idx_scan, 0) DESC NULLS FIRST, pg_relation_size(i.indexrelid) DESC
LIMIT 10;
-- 查看单表的column列信息
SELECT
*
FROM
information_schema.COLUMNS
WHERE
table_schema = 'public'
AND TABLE_NAME = 'here_your_table_name';
-- 仅查看单表column列名称(逗号分隔)
SELECT
string_agg ( COLUMN_NAME, ',' )
FROM
information_schema.COLUMNS
WHERE
table_schema = 'public'
AND TABLE_NAME = 'here_your_table_name';
-- 查看所有表的列信息
SELECT
*
FROM
information_schema.COLUMNS
WHERE
table_schema = 'public';
-- 查看所有表的列名称,逗号分隔
SELECT
string_agg ( COLUMN_NAME, ',' ),
TABLE_NAME
FROM
information_schema.COLUMNS
WHERE
table_schema = 'public'
GROUP BY
2;
-- 查看segment节点状态
select * from gp_segment_configuration;
-- 查看各segment剩余可用空间 dfspace / 1024 / 1024 表示GB
SELECT dfsegment, dfhostname, dfdevice
, round(dfspace / 1024 / 1024, 2) AS free_disk_GB
FROM gp_toolkit.gp_disk_free
ORDER BY free_disk_MB DESC;
-- greemplum每个数据库占用空间大小
select datname,pg_size_pretty(pg_database_size(datname)) from pg_database;
-- 查看库下面的所有schema占用的磁盘空间
select sosdnsp,round(sosdschematablesize/1024/1024/1024,2) schema_tb_size_GB,round(sosdschemaidxsize /1024/1024/1024,2) as schema_idx_size_GB from gp_toolkit.gp_size_of_schema_disk;
-- 查看schema下所有表和索引 占用的磁盘空间
SELECT soatioid,soatischemaname,soatitablename,round(soatisize/1024/1024/1024,2) as INDEX_SIZE_GB FROM gp_toolkit.gp_size_of_all_table_indexes
order by INDEX_SIZE_MB desc,soatischemaname,soatitablename ;
-- 查看在系统表中被标记为掉线的Segment的信息
SELECT * from gp_toolkit.gp_pgdatabase_invalid;
-- 正在活动的进程
select * from pg_stat_activity where state ='active';
-- 空闲的进程
select * from pg_stat_activity where state ='idle';
-- Kill正在执行的SQL进程
-- 这个函数只能 kill、Select查询,而updae、delete DML不生效
select pg_cancel_backend(进程pid);
-- 可以kill 各种DML(SELECT,UPDATE,DELETE,DROP)操作
select pg_terminate_backend(线程id);
-- 查询对应用户的连接
select client_addr,count(*) as a from pg_stat_activity where usename = 'here_your_user_name' group by client_addr order by a desc ;
SELECT count(*), state FROM pg_stat_activity GROUP BY state;
-- 查看超级管理用户最大连接数
show superuser_reserved_connections;
-- 查看膨胀表
select * from gp_toolkit.gp_bloat_diag order by bdinspname,(bdirelpages-bdiexppages)desc,bdirelname;
表膨胀通常指的是表的物理磁盘空间使用超过了实际需要的大小,导致性能下降和资源浪费,表膨胀问题需要处理,因为它会导致磁盘空间的浪费,减慢查询性能
表重新组织(REORG):这将重新组织表以减少碎片并释放未使用的磁盘空间。
REORG
是一个轻量级的操作,适用于小型的膨胀表。REORGANIZE here_your_table_name;
表重建(REBUILD):这将创建一个新的表,将数据从原始表复制到新表,并替换原始表。这是处理大型膨胀表的更强大选项。
REBUILD here_your_table_name;
VACUUM操作:运行VACUUM操作可以帮助清理并释放未使用的磁盘空间。在运行
REORG
或REBUILD
之前,通常需要运行VACUUM
来减少膨胀表的碎片。VACUUM here_your_table_name;