Beginning PostgreSQL on the Cloud读书笔记 (2) PostgreSql的架构和配置

接着上一篇文章对DBaaS的介绍,这一次介绍Postgresql的基本情况.

PostgreSQL is the world’s most advanced Open Source database.
而mysql是最流行的开源数据库,事实证明,确实postgresql是要强大许多的.

  • 可移植性
    • 由ANSI C开发,高性能并且可以在windows,mac,linux,unix上运行
  • 可靠
    • 遵循ACID,
      • atomicity
        • 原子性,也就是一个失误中的所有操作要么都发生,要么都不发生,比如给人转账
      • consistency
        • 也就是之前的状态A,和我这个事务希望他变成什么状态B,再经过事务后,确实变成了状态B
      • isolation
        • 通过在事务并发的时候,添加锁,来保证事务之间不会互相影响
      • durability
        • 事务完成后,更改是保存在磁盘中的,不会造成回滚
    • 支持事务
      • 失败的事务可以回滚
    • 支持保存点
      • 在事务中创建保存点,并且回滚到这个点
    • 写前日志
      • 通过在写前先写日志来防止机器挂掉
  • 可伸缩
    • 通过多版本的并发控制来防止数据的不一致
    • 支持表分区来提高性能
  • 安全
    • 提供限定主机的访问控制,也就是这能某些机器能够访问这个数据库
  • 可用
    • 支持主从库,这在负载均衡中很有用
    • 在灾难情况下支持流式分库来保证高可用
  • 先进
    • 支持全文搜索
    • 支持触发功能
    • 支持存储过程
    • 支持热备份,时间点恢复
MVVC(Multi-Version Concurrency Control):
通过在读写的时候,对每一个事务生成快照,等一下然后再写入或者读取,使得读不会阻塞写,写不会阻塞读,进而提高并发性能

Write Ahead Logging (WAL)
通过写前日志机制来实现崩溃的恢复.
1. 在每个insert/update/delete操作前都先生成一个记录
2. 在日志被写入磁盘前不认为数据是安全的
3. 在数据库崩溃的时候提供恢复
4. 然后REDO,再执行一次

Postgresql的限制:

  • 整个数据库的大小是没有限制的
  • 单表最大32TB,很大很大了
  • 单行最大1.6TB
  • 单个字段最大1GB
  • 根据列的数据类型,最大支持250-600个字段
  • 每张表的索引数无限制

在这里插入图片描述
postgresql架构如上

postgreql是多进程架构,有三种进程

  • primary (postmaster)

  • per-connection backend process

  • utility (maintenance processes)

  • postmaster

    • 当postgresql启动的时候,postmaster首先启动,是整个数据库的管理员,负责数据库的启动和关闭,负责外部的里连接
    • 分配shared memory.
    • 启动 utility processes.
    • 标记自己的状态
    • 接受来自外部的连接
  • backend process

    • postmaster接受到来自外部的连接,就创建一个backend process,进而进行验证连接的合法性,如果ok,就把这个进程附加到会话中

安装教程就不写了,其他地方到处都是

数据库的配置

postgresql.conf一般在/etc/postgresql/11/main

在这里插入图片描述
可以修改其中的参数,来获得更好的性能和稳定性

连接部分

listen_addresses

默认localhost仅提供本机访问,可以指定可以访问的主机,用逗号隔开,*表示所有主机都可以访问

port

监听的端口,默认5432

max_connections

最大连接数,默认100,随着值的增大,也会小号更多的内存

superuser_reserved_connections

允许最大超级用户连接数,默认为3,且会挤占所有的连接数

安全部分

authentication_timeout

默认一分钟,超过一分钟则验证失败

ssl

连接启用ssl

ssl_ciphers

ssl启用的cipher

内存部分

shared_buffers

很重要的参数.!

进程默认128MB,经验上是调整为内存的25%

temp_buffers (default 8MB)

临时表创建的时候,用于存储临时数据

work_mem (default 1MB):

每一个排序或哈希操作所占用的内存,默认比较保守,如果需要增加,经验上是最大连接数占用内存的25%

maintenance_work_mem(default 16MB)

创建每个索引的时候占用的内存

写前日志设置

wal_buffers (default 64KB):

WAL数据需要的数据,读写繁忙的数据库需要调整到1-16MB

checkpoint_timeout (default 5 minutes):

默认5分钟做一次check point

日志地址

log_directory

log路径

log_filename

用于设置log file的文件名

log_rotation_age

多长时间写下一个log

log_rotation_size

如果log超过这个size就新开一个log

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值