
PostgreSQL之体系结构
文章平均质量分 72
涉及PostgreSQL数据库逻辑结构中模式、表、触发器等的方方面面。
瀚高PG实验室
瀚高PG实验室(Highgo PG Lab)依托于瀚高DBA运维团队及瀚高数据库PG内核研发团队,旨在深入研究PostgreSQL技术、使用技巧、内核探秘、PG教学等,并进行分享。欢迎大家关注、交流。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
patroni+etcd开启SSL认证(三个节点证书一致 使用openssl命令)
本文主要介绍Patroni架构中如何开启etcd的ssl证书认证。原创 2024-08-13 14:51:48 · 916 阅读 · 0 评论 -
createuser的使用说明
创建一个新的PostgreSQL用户。只有超级用户和具有CREATEROLE特权的用户才能创建新用户,因此createuser必须被以上两种用户调用。如果你希望创建一个新的超级用户,你必须作为一个超级用户连接,而不仅仅是具有CREATEROLE特权。作为一个超级用户意味着绕过数据库中所有访问权限检查的能力,因此超级用户地位不能轻易被授予。createuser是SQL命令CREATE ROLE的一个包装器。在通过这个工具和其他方法访问服务器来创建用户之间没有实质性的区别.原创 2024-07-23 15:51:19 · 909 阅读 · 0 评论 -
pglogical扩展的基本用法介绍
本文翻译了pglogical扩展的官方文档,介绍了pglogical扩展的各类管理函数及使用限制,详情请看下文.原创 2024-07-23 14:31:51 · 1180 阅读 · 0 评论 -
HAProxy系列文章三《Patroni+ETCD+PG14+Keepalived+HAProxy的安装部署》
本文在前文的基础上,通过引入Keepalived实现HAProxy的高可用,增强高可用架构的稳定性。原创 2024-05-17 15:08:51 · 746 阅读 · 0 评论 -
HAProxy系列文章二《Patroni+ETCD+PG14+HAProxy的安装部署》
本文主要介绍Patroni架构下单点HAProxy的安装部署,通过单点HAProxy实现数据库的负载均衡。本文为HAProxy系列文章之一,其他相关文章请点击文档下方的相关文档链接进行详细查看,文章内不在赘述。原创 2024-05-15 11:13:51 · 1589 阅读 · 0 评论 -
HAProxy系列文章一《什么是HAProxy》
本文主要介绍什么是HAProxy,HAProxy的工作原理以及部分配置参数详解。本文为HAProxy系列文章之一,其他相关文章请点击文档下方的相关文档链接进行详细查看,文章内不在赘述。原创 2024-05-15 10:12:37 · 1171 阅读 · 0 评论 -
dynamic hash
了解动态hash,作为快速查找的工具,在pg内部应用场景很多,比如共享内存,表查询,最新代码分支GUC options也都用到了这一结构,记一下hash创建、查找的过程。原创 2023-07-26 17:51:11 · 337 阅读 · 0 评论 -
虚拟文件描述符VFD
了解VFD原创 2023-07-24 15:14:20 · 504 阅读 · 0 评论 -
深入了解zhparser
Zhparser是一个PostgreSQL扩展,用于中文全文搜索。它实现了一个基于简单中文分词(SCWS)的中文解析器。SCWS 是 Simple Chinese Word Segmentation 的首字母缩写(即:简易中文分词系统)。这是一套基于词频词典的机械式中文分词引擎,它能将一整段的中文文本基本正确地切分成词。词是 中文的最小语素单位,但在书写时并不像英语会在词之间用空格分开,所以如何准确并快速分词一直是中文分词的攻关难点。原创 2023-05-15 13:44:06 · 1322 阅读 · 0 评论 -
pg如何进行小版本升级
本文以pg14.2升级至pg14.6为例,向各位读者介绍pg小版本升级的方法及步骤。原创 2023-01-10 11:07:10 · 1357 阅读 · 0 评论 -
pg12新特性-新增 pg_promote() 函数用于激活备库
pg12新特性,新增 pg_promote() 函数用于激活备库原创 2022-06-13 17:20:16 · 841 阅读 · 1 评论 -
pg12中pg_dump/pg_dumpall新增选项介绍
本文主要用于介绍与pg10.5相比,pg_dump/pg_dumpall命令的新增选项介绍。原创 2022-06-02 15:31:53 · 720 阅读 · 0 评论 -
瀚高数据库优化解决方案
本文转自微信公众号“瀚高数据库售前团队”文章https://mp.weixin.qq.com/s/iYwAAc6HWPt2bJbCIbKKfg声明:本文章内容仅用于学习、交流,未经瀚高数据库售前团队允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的,利用此文所提供的信息而造成的任何直接或间接的损失,均由使用者本人负责。前言一个信息系统从前期的规划,到具体的建设,再到最终建成,往往耗时数月甚至数年时间。信息系统建成后,伴随着业务的发展会面临着系统的不断迭代,如旧业务的升级、新需求的加转载 2022-05-31 14:40:51 · 1238 阅读 · 0 评论 -
rhel 7&&Postgresql 如何开启大页Huge Pages
对于Postgres,开启Huge Pages的好处,这里不详细阐述了。以下是官方文档里,开启huge page 的方法:https://www.postgresql.org/docs/9.6/static/kernel-resources.html$ head -1 $PGDATA/postmaster.pid //确定下postmaster的id4170$ grep ^V原创 2018-01-08 16:34:27 · 1409 阅读 · 0 评论 -
xmin、xmax、cmin、cmax
这四个字段在多版本实现中用于控制数据行是否对用户可见。PostgreSQL会将修改前后的数据都存储在相同的结构中,分为以下几种情况。新插入一行时,将新插入行的xmin填写为当前的事务ID,xmax填0。修改某行时,实际上操作是插入一行,旧行上的xmin不变,旧行上的xmax改为当前的事务ID,新行上的xmin填为当前事务ID,新行上的xmax填为0。删除一行时,把被删除行上的xmax填原创 2018-01-24 22:47:04 · 3712 阅读 · 1 评论 -
Postgres的吞吐过程(Throughput approach)
接下来的文章里会有详细解释说明。原创 2018-01-08 18:31:18 · 388 阅读 · 0 评论 -
fsync和 full_page_writes
先看一下PG官网关于这两个参数的介绍: fsync (boolean) If this parameter is on, the PostgreSQL server will try to make sure that updates are physically written to disk, by issuing fsync() system calls or various eq原创 2018-02-01 14:51:47 · 1215 阅读 · 0 评论 -
postgresql 关于GBK和utf-8字符集问题
postgresql中没有GBK字符集。oracle有。字符集之间的转换可以通过如下方式实现:convert(要转换的字符串, 目标字符集, 源字符集)例如:highgo=# select convert('abcdefg', 'UTF8', 'GBK');By 徐云鹤原创 2018-01-09 22:21:34 · 16481 阅读 · 0 评论 -
PostgreSQL10之pg_partitioned_table视图
PostgreSQL10 新增pg_partitioned_table动态视图。该视图可以直观查看存储的分区表信息。NameTypeReferencesDescriptionpartrelidoidpg_class.oidThe OID of thepg_classentry for this part原创 2018-01-09 22:58:40 · 2637 阅读 · 0 评论 -
PostgreSQL中的log, xlog和clog
pg_log$PGDATA/pg_log是数据库运行活动日志的默认保存目录,它包括错误信息,查询日志以及启动/关闭数据库的信息。当PostgreSQL启动失败时,这里应该是你第一个应该查看的信息。一些Linux发行版以及其他的软件包管理系统会将这个日志目录移到某些地方,比如:/var/log/postgresql你可以在pg_log目录里自由地删除、重命名、压缩或者移动文件而不会有原创 2018-02-02 22:37:12 · 4681 阅读 · 1 评论 -
pg_stat_activity视图
The pg_stat_activity view will have one row per server process, showing information related to the current activity of that process.highgo=# \d pg_stat_activity (9.5.7)datid原创 2018-01-22 11:18:44 · 2825 阅读 · 0 评论 -
recovery_min_apply_delay
默认情况下,备用服务器将尽快从主服务器恢复WAL记录。有时间延迟的数据副本可能是有用的,为纠正数据丢失错误提供了机会。此参数允许您将恢复延迟一段固定的时间,如果未指定单位,则以毫秒为单位进行测量。例如,如果将此参数设置为5分钟,则只有在备用系统时间至少比主服务器报告的提交时间多五分钟时,备用服务器才会重播每个事务提交。服务器之间的复制延迟可能超过此参数的值,在这种情况下不会添加任何延迟。请注意原创 2018-01-22 11:16:45 · 855 阅读 · 0 评论 -
\o和\! 命令了解
\! [ command ] 跳到一个单独的shell或者执行shell命令command。参数不会被进一步解释,shell将会 原封不动地看到参数。特别要说明的是,变量替换规则和反斜线转义在这里不适用。\o 或 \out [ filename ] \o 或 \out [ | command ] 安排把未来的查询结果保存到文件filename 中或者用管道导向到shell命令command。 如果原创 2017-12-28 15:34:43 · 6482 阅读 · 0 评论 -
default_statistics_target参数
default_statistics_targetdefault_statistics_target为没有通过ALTER TABLE SET STATISTICS设置的列特定目标设置表列的默认统计目标。 较大的值会增加执行ANALYZE所需的时间,但可能会提高规划人员估算的质量。该参数告诉 PostgreSQL 应该抽样多少数据来填充存储元数据的表。默认值为100,PostgreSQL 会读取 d原创 2017-12-28 15:30:45 · 1625 阅读 · 0 评论 -
archive_mode参数
archive_mode 当启用archive_mode时,通过设置archive_command将已完成的WAL段发送到归档存储。除了off,disable,还有两种模式:on,always。在正常操作期间,两种模式之间没有区别,但是当设置为always的情况下,WAL archiver在存档恢复或待机模式下也被启用。在always模式下,从归档还原或流式复制流的所有文件都将被归档(再次...原创 2018-02-08 16:15:40 · 5294 阅读 · 0 评论 -
postgresql的oid
行对象标识符(对象ID),这个字段只有在创建表时使用了“withoids”或配置参数“default_with_oids”的值为真时才出现,这个字段的类型是oid(类型名与字段名同名)PostgreSQL在内部使用对象标识符(oid)作为系统表的主键。系统不会给用户创建的表增加一个oid字段。oid类型用一个四字节的无符号整数实现,不能提供大数据范围内的唯一性保证,甚至在单个大表中也不行。因原创 2018-01-03 22:51:02 · 9541 阅读 · 0 评论 -
postgresql的ctid
ctid表示数据行在它所处的表内的物理位置,ctid字段的类型是tid。尽管ctid可以快速定位数据行,每次vacuum full之后,数据行在块内的物理位置就会移动,即ctid会发生变化,所以ctid不能作为长期的行标识符,应该使用主键来标识一个逻辑行。查看ctid,示例如下:mydb=# selectctid,idfrom t1 ;ctid|id-------+--原创 2018-01-03 22:50:37 · 9291 阅读 · 0 评论 -
checkpoint_completion_target值的设置(二)
高checkpoint_completion_target值带来的优缺点 优点: • I/O操作占用资源比例逐渐趋于平缓。避免或减少了数据库运行中突然卡住不动的情况。 • 磁盘吞吐量趋于平缓,减少和减小了I/O峰值的出现。 • 等待时间减小,提高客户体验 缺点: • 如果宕机,则恢复时间长 • Shared_buffer比较大,写入频繁的数据库,这个值设置的过大是个原创 2017-12-27 15:07:55 · 729 阅读 · 0 评论 -
checkpoint_completion_target值的设置(一)
checkpoint_completion_target是postgresql数据库中一个至关重要的参数,主要与参数checkpoint_timeout(checkpoint_timeout默认值为5min)配合使用。举个简单的例子来说:情况一:•checkpoint_completion_target=0.5•checkpoint_timeout原创 2017-12-27 14:50:49 · 3136 阅读 · 1 评论 -
pg_settings 视图
我们知道postgresql参数配置是在$PGDATA下的postgresql.conf文件中,当然有时候也会在postgresql.auto.conf文件中,后者优先级更高。 除此以外,在数据库中可以通过视图pg_settings查看。mydb=# \xExpanded display is on.mydb=# select * from pg_settings ;-[ RECORD 1原创 2018-01-11 14:08:45 · 1880 阅读 · 1 评论 -
关于postgresql和oracle对于换行处理的不同之处
对于换行操作,postgresql和oracle在处理方式上是有区别的。在postgresql查询:highgo=# select 'a''a'; ?column?---------- a'a(1 row)highgo=# select 'a' 'a';错误: 语法错误 在 "'a'" 或附近的LINE 1: select 'a' 'a';原创 2018-02-23 09:43:54 · 648 阅读 · 0 评论 -
max_standby_streaming_delay
max_standby_archive_delay (integer) When Hot Standby is active, this parameter determines how long the standby server should wait before canceling standby queries that conflict with about-to原创 2018-03-16 14:52:55 · 2265 阅读 · 0 评论 -
Pg extention pg_buffercache
目录文档用途详细信息文档用途了解pg_buffercache扩展详细信息1.介绍PostgreSQL额外支持模块之pg_buffercache pg_buffercache模块是pg内核原生支持的模块。完全编译后,其会存在于扩展目录中。pg_buffercache提供了一种实时检测共享缓冲区的方法。 这个模块提供了一个C函数:pg_buffercache_pages,它...原创 2020-05-08 09:21:48 · 502 阅读 · 0 评论 -
max_standby_streaming_delay(三)
highgo=# show max_standby_streaming_delay ; max_standby_streaming_delay----------------------------- 30s(1 row)highgo=# alter system set max_standby_streaming_delay TO -1;ALTER SYSTEMhighgo=# \q原创 2018-03-16 14:56:21 · 1243 阅读 · 0 评论 -
pg_buffercache
查看缓冲区缓存的内容: create extension pg_buffercache; select c.relname, count(1) as buffers from pg_class c join pg_buffercache b on b.relfilenode=c.relfilenode inner join pg_database d o原创 2018-01-02 09:44:02 · 430 阅读 · 0 评论 -
pg_is_xlog_replay_paused()
pg_is_xlog_replay_paused() bool True if recovery is paused. pg_xlog_replay_pause() void Pauses recovery immediately (restricted to superusers by default, ...原创 2018-03-16 14:57:32 · 679 阅读 · 0 评论 -
max_standby_streaming_delay(二)
前面博客提到了max_standby_archive_delay (integer)和max_standby_streaming_delay (integer) 两个参数。 对这两个参数有所了解以后,我们再考虑一下,即使再增大这两个参数,总有上限,而且增大这两个参数会导致主备数据库之间数据存在较多不一致。那么除了增大这两个参数的值外,还有什么解决办法?答案是:hot_standby_feedbac原创 2018-03-16 14:54:33 · 1928 阅读 · 0 评论 -
关于postgreSQL的search_path参数功能及效果
如下是对search_path的一些测试:查询当前search_path:highgo=# show search_path; search_path ----------------"$user",public(1 row)创建一张表:highgo=# create table one (int int);CREATE TABLE查询该表所属模式:highgo=# \dt L...原创 2017-11-02 00:15:40 · 8415 阅读 · 0 评论 -
PostgreSQL禁用全表扫描
PostgreSQL可以通过一些设置来禁用全表扫描(FULL SCAN/Seq Scan)注意:设置此功能后不是完全避免全表扫描,而是只要有不通过全表扫描能得出结果的就不走全表扫描。如果什么路都不通,那肯定得全表扫描,不然怎么获取数据。而且并不是不走全表扫描性能就一定好。下面展示下这个功能:查询表结构:highgo=# \d test Table test C...原创 2018-03-02 18:01:28 · 4965 阅读 · 6 评论 -
Postgres 之 TOAST技术
TOAST简介首先,Toast是一个名字缩写,全写是The OverSized Attribute Storage Technique(超尺寸字段存储技术)顾名思义,是说超长字段在Postgres的一个存储方式;Postgres采用的存储默认是每个页面存储固定8Kb大小的数据,并且元组不允许跨页面存储,所以并不能直接存储大字段数据;Toast就是为此应运而生,它会将大字段值压缩或者分散为多个物理行...原创 2018-03-17 19:09:15 · 3065 阅读 · 0 评论