
文章转载自公众号:AustinDatabases
作者:carol11
PostgreSQL的好处就在于扩展,一个好的扩展可以让PostgreSQL功能犹如变形金刚一样。上次说了几个extension,这期说说我们在生产上必须安装的几个extension。
1 pg_stat_statements
这是一个必要安装的PostgreSQL的extension的插件,通过这个插件可以访问PostgreSQL最近访问数据库的语句的统计信息,通过这个信息可以插件来收集和统计。在PostgreSQL中PostgreSQL的核心插件之一。
要使用这个插件需要在share_preload_libraries='pg_stat_statements'添加内容需要一些附加的配置
track_activity_query_size=2048 将能保存SQL的长度变长防止大的SQL被截断无法分析
pg_stat_statements.max=10000 在pg_stat_statements中最多保留多少统计信息
pg_stat_statements.track=all 记录所有的SQL包含函数中的SQL,如果选择top则内部的SQL不被跟踪
pg_stat_statements.track_utility = on 如果为on则记录DDL和DCL语句
pg_stat_statements.save = on 重启数据库后是否还保留信息

在使用后,可以直接通过他来查询系统中所有运行的语句,如果保留的条数调整的比较大,保留的语句的时间会比较长,尤其对于业务频繁的数据库,这点是重要的。
2 pg_prewarm
pg_prewarm是一个辅助数据库在重启后预热重启前的数据,防止在重启后,数据库内存中并没有数据进行数据预读,这样的情况下,系统在第一次查询数据的时候后会比较慢,等待数据LOAD仅内存中。一般商业数据库都可以进行将上次关机前内存的情况在下次开机的时候在LOAD到内存中。
相关数据的文件会在autoprewarm.blocks文件中保存

文件中记录物理的数据页面的位置,在开机会将这些数据读入到内存中

同时在shared_preload_libraries写入pg_prewarm,重启机器就可以了

3 Passwordcheck
在安全方面可以使用passwordcheck来保证在建立账号的情况下,账号的密码会被这个插件进行检查。不符合密码的要求的账号建立会被拒绝。

4 pg_repack
pg_repack作为postgresql标准的扩展,pg_repack实际上是vacuum full在线的解决方案,pg_repack最重要的点在于他不需要在处理表时需要对表加载exclusive lock。

并且需要在处理的数据库中创建extension
create extension pg_repack;
pg_repack的命令主要在外部运行,其中可以对整个PostgreSQL的数据库进行操作,也可以针对单独的表进行操作。

在我们对单表进行repack的情况下可以看到
1 操作中会将要操作的表的数据insert到repack的一个临时表中
2 另一个会对表添加lock share锁,此时表的查询是不会被阻拦的


此时数据表是可以被查询的,但如果是要进行DDL的操作是不可以的

要操作pg_repack需要注意几个问题
1 要操作pg_repack的数据库必须在数据库内部建立extension pg_repack,否则会报错

2 你要操作的数据库中的表必须有主键,或者唯一索引
否则在操作的过程中会出现

3 不建议用pg_repack处理带有trigger的表
pg_repack可以操作的对象
1 pg_repack 可以对数据库整体进行操作
2 pg_repack 可以对指定的数据库的指定表进行操作
3 pg_repack 可以将PostgreSQL的所有索引迁移到另外一个表空间
4 pg_replack 可以迁移某一个index到一个单独的表空间中
以上四个extension可以在postgresql中作为必选的四个estension来支持postgresql的工作。





新闻|Babelfish使PostgreSQL直接兼容SQL Server应用程序

更多新闻资讯,行业动态,技术热点,请关注中国PostgreSQL分会官方网站
https://www.postgresqlchina.com
中国PostgreSQL分会生态产品
https://www.pgfans.cn
中国PostgreSQL分会资源下载站
https://www.postgreshub.cn


点击此处阅读原文
↓↓↓




