Greeplum 系列(八) 数据维护
一、事务管理
begin(start transaction) # 开始事务
savepoint # 保存事务回滚点
rollback # 回滚事务
end(commit) # 结束事务
二、回收空间和分析
(1) 过期记录来源
- 事务ID管理:在每个数据库每2百万个事务的时候,对每张表执行VACUUM是很有必要的。
- 系统目录维护:大量的CREATE和DROP命令会导致系统表的迅速膨胀,以至于影响系统性能。
- MVCC事务并发模型:已经删除或者更新的记录仍然占据着磁盘空间。
- 如果数据库有大量的更新和删除操作,将会产生大量的过期记录。
所以需要定期的运行 VACUUM 命令可以删除过期记录,回收空间。
vacuum tb01;
vacuum full; # 回收所有过期记录,但是耗时长,生产环境中不建议使用
(2) 配置子空间映射
过期的记录会被存放在叫做自由空间映射的地方,超出自由映射空间的过期记录所占用的空间无法回收(除非删除表);
自由映射空间的设置参数(一般不用配制):max_fsm_pages、max_fsm_relations
(3) 查询优化器
GP 使用基于成本的查询优化器,使用 analyze 命令收集查询优化器需要的统计信息,可以和 vaccum 一起使用。
vaccum analyze tb_cp_02;
三、日常重建索引
- 对于 B-tree 索引,新重建的索引比存在较多更新的索引更快
- 重建索引可以回收过期的空间
- 在 GP 中,删除索引然后创建通常比 REINDEX 更快
- 当更新数据时,Bitmap 索引不会被更新
四、管理 GPDB 日志文件
(1) 数据库服务日志文件
GP 在 Master 和所有 Segment 实例上开启了日志文件按天滚动,服务器日志文件存放在每个实例数据目录的 pg_log 目录下。格式:gpdb-YYYY-MM-DD_TIME.csv
通过 gplogfilter 工具来查找匹配指定标准的日志数据
gplogfilter –n 3
gplogfilter + gpssh 工具组合在所有 segment 节点进行查找
gpssh –f seg_host_file
=> gplogfilter –n 3 /data/primary/*/pg_log/gpdb*.csv
(2) 程序日志文件
缺省位于 ~/gpAdminLogs 目录下。命令方式:<script_name>_
<timestamp>:<utility>:<host>:<user>:[INFO|WARN|FATAL]:<message>
五、系统数据字典
所有的系统数据字典存放在 pg_catalog 模式下,标准的 PostgreSQL 系统数据字典为pg_*
GP特有的字典目录:
gp_configuration
gp_distribution_policy
gp_distributed_log
gp_id
gp_version_at_initdb
gp_master_mirroring
gp_pgdatabase
在 psql 中列出所有的系统字典:dtS
在 psql 中列出所有的系统视图:dvS
每天用心记录一点点。内容也许不重要,但习惯很重要!