前言
几条PG读书笔记,并谈谈个人浅见,欢迎讨论。
我去年出差略多,于是在路上把目前主要的两本PostgreSQL书大概翻了翻,做了些笔记,谈点个人看法。
以下简称PG,反正都懂。文内对PG有误解或说错的地方还请批评指正。
第一部分笔记,基于《PostgreSQL修炼之道》一书为主。该书唐成著,2015年出版。此时PG的最新版本应该是9.4。本文亦有基于其他资料。
注:以下“唐老师”指唐成老师,“张老师”指张文升老师。
1. AUTOCOMMIT关键字
事务自动提交模式关键字AUTOCOMMIT,只能大写,小写不行,大小写混合也不行。
唐老师: AUTOCOMMIT,是指psql默认autocommit是on的,我见过的多数人喜欢自动提交。如果觉得这样不安全,可以在.psqlrc中一次性配置好,就不同改了。
点评:这个是小事,但用起来稍微有点不太方便。
2. 什么时候开始表分区
建议当表大小超过PG可用的物理内存时,就开始做表分区。不太了解这个建议是怎么得来的...
唐老师:这个表具体多大该建分区,不同人有不同的认识。通常如果超过内存大小,cache的作用就很弱了。所以超过了物理内存大小,一定应该分区了。
实际上,目前机器的内存都比较大,如512G,实际上表远远没有到512G大小就应该建分区。我个人认为超过32GB,就应该建成分区表。
点评:个人看法,表分区并不是必要的,要综合考虑这个表的宽度(行平均长度)、事务活跃度、数据分布情况,不一而同。
3. 最大事务ID不能超过INT32
事务ID不能超过4字节(32-bit)整数,而且还存在回卷的问题。
唐老师:关于事物ID 32bit的问题,实际上不是把32bit改成64bit就解决问题了。个人认为如果只是改成64bit,实际上没有太大用处。
P