postgresql
文章平均质量分 62
postgresql
汪灵骅
资深DBA,oracle ACE
展开
-
pg的mvcc机制
如果回卷前,比较事务id大小即可知道先后顺序,如果发生了回卷,小的id可能比大的id更时间靠后。解决回卷的问题,最早和最新的事务最多差231,超过就会把旧事务换成特殊的事务id,也就是FrozenTransactionId=2,冻结的事务id,再做比较,就会认为正常的事务id比冻结的id更新。所以数据库系统第一个正常的事务ID是从3开始的,然后连续递 增,达到最大值后,再从3开始。第一种:写新数据时,把原数据移到一个单独的位置,如回滚段中,其他用户读数据时,从回滚段中把原数据读出来。原创 2024-04-25 09:22:05 · 710 阅读 · 0 评论 -
pg的两阶段提交
3.各台数据库收到prepare transaction命令后,返回成功,数据库将自己处于如下状态:确保后续被要求commit、rollback的时候可以commit和rollback,2.事务协调器,连接每台数据库,通知他们准备提交(第一阶段的开始),pg中一般是调用。5.在第二阶段,如果有的数据库第一阶段失败,则事务协调器会发送回滚命令“1.各台数据库做操作,不提交事务。应用程序调用事务协调器中的提交方法。如果数据库无法完成此事务,它会直接返回失败给事务协调器。4.事务协调器接收所有数据库的响应。原创 2024-04-25 09:16:51 · 421 阅读 · 0 评论 -
pg用户、角色、权限
INHERIT|NOINHERIT:如果创建的用户拥有某个或某几个角色,这时若指定INHERIT,则表示用户自动拥有相应角色的权限,否则该用户没有相应角色的权限。·IN ROLE role_name [,...]:指定用户成为哪些角色的成员,请注意,没有任何选项可以把新角色添加为管理员,只有使用独立的GRANT命令才行。·LOGIN|NOLOGIN:创建出来的用户是否有LOGIN权限,可以临时禁止用户的LOGIN权限,此时用户无法连接到数据库。当然只有超级用户才能创建超级用户。原创 2024-04-25 09:14:29 · 421 阅读 · 0 评论 -
pg-源码方式本地升级,装高版本make失败
大概率是之前编译过程留下的状态,导致后续编译失败。清理之前的编译结果,然后重新开始编译过程。原创 2024-04-15 10:05:51 · 153 阅读 · 0 评论 -
pg-本地升级完跑收集统计信息脚本失败
因为服务还没起来pg_ctl start -D /pg/pg13/data。原创 2024-04-15 10:03:43 · 289 阅读 · 0 评论 -
pg mvcc(以及clog)
如果回卷前,比较事务id大小即可知道先后顺序,如果发生了回卷,小的id可能比大的id更时间靠后。解决回卷的问题,最早和最新的事务最多差231,超过就会把旧事务换成特殊的事务id,也就是FrozenTransactionId=2,冻结的事务id,再做比较,就会认为正常的事务id比冻结的id更新。所以数据库系统第一个正常的事务ID是从3开始的,然后连续递 增,达到最大值后,再从3开始。第一种:写新数据时,把原数据移到一个单独的位置,如回滚段 中,其他用户读数据时,从回滚段中把原数据读出来。原创 2024-04-08 15:38:22 · 869 阅读 · 0 评论 -
pg index-only scans散记
为加快vacuum清理速度,并且降低对io的影响,pg8.4.1之后为每个数据文件夹了"xx_vm"文件,称为可见性映射表文件,简称VM文件。,如果可见,就不同访问行来判断可见性了。这种查询的执行计划被称为index-only scans。不用再去表上查一遍了。而pg9.2之后通过可见性映射表(visibility map)(xx_vm)。如果对部分事务可见,部分不可见,那也会是index-only scans。pg索引上没有mvcc信息,即使select的列全是索引列,pg9.2之前,也要去表上查一次。原创 2024-04-03 09:12:22 · 254 阅读 · 0 评论 -
pg重启服务报错无权限
建议给data路径 770或者750权限,我给了777权限,反而不行。原创 2024-04-01 10:31:55 · 293 阅读 · 0 评论 -
pg物理块的存储结构
行指针中表示行内容的偏移量是15bit,能表示的最大偏移量是 215=32768,因此在PostgreSQL中,块的最大大小是32768,即32KB。字段数,其中低11位表示这行有多少个列。其 他的位则是HOT(Heap Only Touples)技术及行可见性的标志位。用于标识行当前的状态,比如行是否具有OID,是否有空属性,共有16位,每位都代表不同的含义。行上的xmin、xmax、cmin、cmax和CLOG日志 一起用于控制行的可见性。是一个数组,用于标识该行上哪些字段(列)为空。原创 2024-03-29 16:52:01 · 610 阅读 · 0 评论 -
pg声明式分区(常规)(pg 10及以后支持)
product_id int not null, --产品编号。sale_date date not null,--销售日期。buyer_contact text --买家的联系方式。price numeric(12,2), --单价。amount int not null, --数量。buyer varchar(40),--买家名称。原创 2024-03-29 10:10:38 · 1326 阅读 · 0 评论 -
pg部分基础元命令
h create user 等等。表、视图、索引、序列。原创 2024-03-20 13:44:40 · 197 阅读 · 0 评论