POSTGRESQL 之快速上手 安装及基本概念

今天又看见POSTGRESQL 大佬(就职阿里巴巴),年前又发布了南方大部分单位开始紧俏的POSTGRESQL DBA的职位,并准备迅速培养POSTGRESQL DBA ,供应饥渴的市场的信息。另外微软终于出手了,购买了最初始研发POSTGRESQL 的公司,公司名大家自己搜吧,看来微软坐不住了,要扩大产品线了,甲骨文都没着急,你着急啥。

突然有一个想法,一直知识的潮流是 国外--》国内  , 南方--》北方,一线城市--》 二线城市,这样一个规律。 借用张爱玲的名言,出名要趁早,在这个急速变化的社会,不知道什么时候能赶上某班车,能不能赶上就要看个人的造化了。

POSTGRESQL 其中有一些概念和架构,虽然对于操作没有特别的帮助,但了解后,会对整个数据库的操作有一个更高层次的帮助。所以想写一个关于POSTGERSQL 的系列,一起赶上这趟车。并借用其他数据库的知识,来做一个对比,如果有错误的地方,还请大家指正,共同进步。

——————————————————————————————

首先,要上车,的有个环境吧,这里选择最新的11版本,进行源码安装。这里是最简单的安装,不是最优安装,具体最优安装后续推出,有些东西源码安装后是不能改变的,所以一下安装仅仅支持测试,不建议在生产上直接来,需要根据生产的数据量等等因素来配比如何 POSTGRESQL

1 请准备 CENTOS 7 

2 请自己落实POSTGRESQL 用户账号和密码 (这里假设你对LINUX 是有了解的并能自己操作)

3 下载源码包  https://www.postgresql.org/ftp/source/v11.0/

4 建立POSTGRESQL 账号

5 在POSTGRESQL 的账号下解压文件

6  安装依赖包

sudo yum -y install gcc*

sudo yum -y install -y readline-devel

sudo yum install zlib-devel

7 开始编译

./configure

8 make install

9 初始化数据库

/usr/local/pgsql/bin/initdb -D /pgdata/data
启动数据库
/usr/local/pgsql/bin/postgres -D /pgdata/data >logfile 2>&1 &
创建数据库
/usr/local/pgsql/bin/createdb test
连接数据库
/usr/local/pgsql/bin/psql test

如果不出问题你应该已经连接到数据库了
下面一些命令你就可以做了

——————————————————————————————

Postgresql 中所有的对象(表,库,VIEW, PROCEDURE 等等)都有对象的标识符号, oid。 

这些对象和ID 之间的对应关系,都保存在 PG_DATABASE 和 PG_CLASS 表中。

下面是POSTGRESQL 一个 database cluster的基本架构图,(自己画的)

在POSTGRESQL 中有一个概念叫  DATABASE CLUSTER,不要误读,其实这个概念和 MYSQL SQL SERVER 中一个INSTANCE 中包含多个 DATABASES 的概念一样,并非CLUSTER。

而PG中也有重要的配置文件:

分别是

pg_hba.conf     权限控制文件

pg_ident.conf   用户验证MAP

postgresql.conf  系统配置文件 

在默认的系统配置下,数据库的数据文件在达到 1GB 后会自动产生新的文件。truncate table  相当于清除了文件,下图,清除后,文件的relfilenode编码已经变了,说明产生了新的文件。

同时POSTGRESQL 也有TABLE SPACE的概念,可以建立TABLE SPACE (和ORACLE的很类似),但不同的是,你不在需要指定文件归属于那个TABLE SPACE,只需要建立空间即可,指明TABLE SPACE 的OWNER。系统会自动建立文件,以OID 为名。一个库下的每个表,或索引都可以有自己的TABLE SPACE (逻辑上可以,但实际上这样做比较麻烦)。 大家可以根据磁盘的性能,来将重要的表 ,索引归属到一个TABLE SPACE。同时建立TABLE SPACE 还有选择项可以选择,可以通过设置浮点数字来让数据库在查询时更清楚,数据文件所处的磁盘性能如何,并更具有倾向性的使用索引或全表扫描,这在其他数据库中是没有类似设置,具体请查看POSTGRESQL 相关文档,设置不当适得其反。

每个PG的页面是顺序组成的,有相关的编号,而每个页面中也有元组(数据块)的位置和偏移量,以及HEAD 到 元组的指针,等,所以要读取数据值需要知道 PAGE NUMBER +  TUMPLE NUMBER 就能找到相关数据。(自己画的,如需,请注明出处)

当然元组是不能超过页面的进行跨页面进行存储的,所以就有了 TOAST 方式来存储一个比页面还大的数据(请查看相关文档)。相关TOAST 逻辑上可以存储1G的数据。

每个表上可以查看每个元组的PAGE NUMBER 和 元组指针号,这和ORACLE 又是很类似,每个页面也都有 ROWNUMBER。

所以都可以快速的访问到数据。

—————————————————————————————

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值