重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

PostgreSQL中系统目录和系统管理的示例分析

这篇文章主要介绍PostgreSQL中系统目录和系统管理的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

创新互联建站专注于竞秀网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供竞秀营销型网站建设,竞秀网站制作、竞秀网页设计、竞秀网站官网定制、成都小程序开发服务,打造竞秀网络公司原创品牌,更为您提供竞秀网站排名全网营销落地服务。

之前讲到如何停止用户正在执行的session,这里PG 提供了不同的方式来终止。这里扩展一下为什么要停止用户的连接。

可以总结出以下原因

1  用户的查询时间较长,已经影响到正常的系统运作,例如vacuum相关的操作。

2  需要进行删除数据库的操作,但是目前需要进行处理的数据库正在被某些线程占用,所以需要清理这些连接的session

3  由于意外,应用程序大量建立与数据库的连接,并达到最大值,需要临时清理一些连接,在进行应用程序处理异常时,进行一些缓解性的操作。并释放相关的浪费的内存。

PG 提供了pg_terminate_backend(pid) 和 pg_cancel_backend(pid) 两钟方式的操作, 这两种方式最大的不同在于, pg_terminate_backend 会将应用程序与PG的连接断开,应用会报失去连接的错误,而pg_cancel_backend则仅仅停止当前的正在执行的事务,而不会将应用程序和数据库之间做一个了断。

这里举例,如果要删除一个数据库,而这个数据库一直有用户连接,即使不断使用pg_terminate_backend 进行操作,还是不能清理相关的连接。

停止test 库

UPDATE pg_database set datallowconn = 'false' WHERE datname = 'test';

PostgreSQL中系统目录和系统管理的示例分析

通过设置数据库的是否允许连接的状态,来阻止新的连接,再次连接到禁止连接的数据库上就会报错。

所以一件事情,如果系统的来学习,则会发现更多的问题,更多的答案。

在上面的关于数据库连接和断开连接的事情告一段落后,下面就来到了,数据库的配置方面的事情

书中提到,如何获取PostgreSQL 的设置的参数的三种方式

1 通过postgresql.conf 配置文件来获得

2 通过select current_setting('配置的名字‘) 

3 通过show work_mem 的方式来提供

书里没有提出,此处为扩展,虽然三种方式都可以获得PG的配置值,但实际上postgresql.conf 读出是系统的未曾改变的启动后未改变初始值,如果在系统运行期间改变了可以改变的参数值,则通过postgresql.conf 是无法显示的。

修改部分系统值是可以通过 set_config 来做到的

例如

方式1 ,仅仅对当前运行的语句有效

PostgreSQL中系统目录和系统管理的示例分析

方式2 对当前的session 有效

PostgreSQL中系统目录和系统管理的示例分析

其实两个方式不同的就是 set_config 后的参数true or false ,选择false 则表明在整个session都生效。在打开一个进程,则还是和postgresql.conf 配置文件的值一致。

PostgreSQL中系统目录和系统管理的示例分析

当然书中也提示,不是所有的配置都能通过set_config 来进行调整,需要重新启动的值是不能通过  set_config 进行调整的。

PostgreSQL中系统目录和系统管理的示例分析

如何快速的获取postgresql中的系统的配置值,也可以通过下面的语句来做到

SELECT name, current_setting(name), source FROM pg_settings
WHERE source IN ('configuration file');

PostgreSQL中系统目录和系统管理的示例分析

当然查看数据库的容量也是日常系统管理的一个重要的工作

SELECT pg_database.datname, pg_size_pretty(pg_database_size(pg_database.datname)) AS size FROM pg_database;

PostgreSQL中系统目录和系统管理的示例分析

SELECT tablename, pg_size_pretty(pg_total_relation_size(schemaname||'.'||tablename)) FROM pg_tables WHERE schemaname ='public';

PostgreSQL中系统目录和系统管理的示例分析

上面的方式有点类似于oracle 统计schema 中的表的大小,postgresql和sql server 一样,既有一个instance 下多个库的概念也有一个库下多个schema的概念, ORACLE 和 MySQL 在这两个概念中都有缺失,这里就不扩展了。

常用的PG如何查看当前库的索引的问题

SELECT indexrelid::regclass, pg_size_pretty(pg_relation_size(indexrelid::regclass)) FROM pg_index WHERE indexrelid::regclass::text like 'idx%';

PostgreSQL中系统目录和系统管理的示例分析

这里需要统一索引的建立的名字的方式,就更能准确的统计所有符合条件的内存的展现和大小了。

以上是“PostgreSQL中系统目录和系统管理的示例分析”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联行业资讯频道!


网站名称:PostgreSQL中系统目录和系统管理的示例分析
标题URL:http://cqcxhl.cn/article/pgsioi.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP