PostgreSQL修炼之道
文章平均质量分 83
PostgreSQL修炼之道学习笔记
auspicious航
无畏年少青春,迎风潇洒前行。
展开
-
PostgreSQL修炼之道之数据库优化(十八)
当一个操作需要多次写元数据或一次写元数据一次写数据时,操作中的多个步骤通常不是原子性的,要保证一致性就必须要有类似数据库中的事务的概念。文件系统中除记录文件内容信息外,还记录了一些元数据(如目录树、文件名、文件的块分配列表),以及和文件相关的一些属性(如文件名、文件的创建时间等),还有磁盘的空间分配信息(如哪些块已被分配、哪些块是空闲的)。当向一个文件的末尾添加数据时,文件会扩大,如果元数据记录了该文件的扩大,但新数据没有实际写入,就会导致新扩大的数据块中存在垃圾数据,这有可能导致问题产生。原创 2023-06-25 17:32:46 · 942 阅读 · 0 评论 -
PostgreSQL修炼之道之高可用性方案设计(十七)
当使用同步流复制时,如果主库与从库之间的网络中断或从库出现问题,主库也会被hang 住,而此时只有一个主库和一个从库,那么是无法做高可用方案的。PostgreSQL的解决方案是使用两个从库,只要有一个从库是正常的,主库就不会 hang 住。原创 2023-06-01 11:09:19 · 649 阅读 · 0 评论 -
PostgreSQL修炼之道之高可用性方案设计(十六)
从解决数据同步问题的方式来看,高可用方案可以分为以下几种。共享磁盘的失效切换或磁盘的底层复制方案:使用共享存储,如SAN存储,一台机器失败后,把SAN存储输出的磁盘挂到另一台机器上,然后把磁盘上的文件系统挂起来后完成切换。WAL日志同步或流复制同步的方案:PostgreSQL自身提供了这种方案,通过这个机制,可以搭建主从数据库,当主数据库失败时,把从数据库提升为主库,继续对外提供服务。基于触发器的同步方案:使用触发器记录数据变化,然后同步到另一台数据库上。原创 2023-06-01 10:59:14 · 790 阅读 · 0 评论 -
PostgreSQL修炼之道之Postgres-XC的安装(十五)
上面列出的可执行程序并没有Coordinators 和 Datanodes的主程序,实际上Coordinators和Datanodes的主程序都是postgres,只是通过不同的启动参数来表示不同的角色。Postgres-XC项目托管在sourceforge网站上,其网址为: http://sourceforge.net/projects/postgres-xc/,可以到此网站下载Postgres-XC的源码包,然后编译安装。下载下来的源码包与PostgreSQL的源码包很相似,安装方法也很相似。原创 2023-05-30 21:26:47 · 748 阅读 · 0 评论 -
PostgreSQL修炼之道之PostgreSQL中执行计划的配置项(十四)
在PostgreSQL中有一些以“ENABLE_”开头的参数,这些参数提供了影响查询优化器选择不同执行计划的方法。有时,如果优化器为特定查询选择的执行计划并不是最优的,可以设置这些参数强制优化器选择一个更好的执行计划来临时解决这个问题,但一般不会在postgresql中改变这些参数值的默认值。这些参数的详细说明见表。可能需要改变的是“random_page_cost”,如果在读数据时,数据基本都命中在内存中,这时随机读和顺序读的差异不大,可能需要把“random_page_cost”的值调得小一些。原创 2022-10-09 14:01:53 · 688 阅读 · 0 评论 -
PostgreSQL修炼之道之PostgreSQL中执行计划(十三)
在关系型数据库中,一般使用explain命令来显示SQL的执行计划,只是不同的数据库中,这个命令的具体格式会有一些差别。ANALYZE选项通过实际执行的SQL来获得相应的执行计划。因为它真正被执行,所以可以看到执行计划每一步花掉了多少时间,以及它实际返回的行数。VERBOSE选项用于显示计划的附加信息。这些附加信息有:计划树中每个节点输出的各个列,如果触发器被触发,还会输出触发器的名称。该选项值默认为FALSE。COSTS选项显示每个计划节点的启动成本和总成本,以及估计行数和每行宽度。原创 2022-10-09 13:53:01 · 679 阅读 · 0 评论 -
PostgreSQL修炼之道之服务管理(十二)
PostgreSQL的配置参数是在postgresql.conf文件中集中管理的,这个文件位于数据库实例的目录下($PGDATA)。#这是一个注释配置文件中可以使用“#”注释。所有配置项的参数名都是大小写不敏感的,参数值有以下五种类型。布尔:布尔值都是大小写无关的,可以是 on、off、true、false、yes、no、1、0。整数:数值可以指定单位。如一些内存配置的参数可以指定KB、MB、GB等单位。所有配置项的参数名都是大小写不敏感的,参数值有以下五种类型。原创 2022-09-22 14:51:12 · 372 阅读 · 0 评论 -
PostgreSQL修炼之道之PostgreSQL的核心架构(十一)
在刷新太慢的情况下,若有新的查询或更新需要使用内存来保存从磁盘中读取的数据块,由于没有空闲空间来存储这些数据块,就需要把内存腾出来,即先把一些内存中的脏页写到磁盘中,这样就会导致查询或更新需要等更长的时间,自然也就降低了性能。即使机器突然宕机或数据库异常退出,导致一部分内存中的脏数据没有及时地刷新到文件中,在数据库重启后,通过读取WAL日志,并把最后一部分的WAL日志重新执行一遍,就可以恢复到宕机时的状态。此时,旧的数据只是被标识为删除状态,只有在没有并发的其他事务读到这些旧数据时,它们才会被清除掉。原创 2022-09-21 11:24:20 · 690 阅读 · 0 评论 -
PostgreSQL修炼之道笔记之触发器与表空间等(十)
有时我们需要把不同的表放到不同的存储介质或不同的文件系统下,这时就需要使用表空间。在 PostgreSQL中,表空间实际上是为表指定一个存储的目录。在创建数据库时可以为数据库指定默认的表空间。创建表和索引时可以指定表空间,这样表、索引就可以存储到表空间对应的目录下了。通俗的说,视图就是由查询语句定义的虚拟表。对用户来说,看到的视图就如同一张真的表。从视图中看到的数据可能来自数据库中的一张或多张表,也可能来自外部,这主要取决于视图的查询语句是如何定义的。使用视图一般有以下几个原因。原创 2022-09-21 10:13:56 · 506 阅读 · 0 评论 -
PostgreSQL修炼之道之模式与表的介绍(九)
模式(schema)是数据库中的一个概念,可以将其理解为一个命名空间或目录。不同的模式下可以有相同名称的表、函数等对象且互相不冲突。提出模式的概念是为了便于管理,只要有权限,每个模式(schema)的对象可以互相调用。在PostgreSQL中,一个数据库包含一个或多个模式,模式中又包含了表、函数及操作符等数据库对象。在 PostgreSQL 中,不能同时访问不同数据库中的对象,当要访问另一个数据库中的表或其他对象时,需要重新连接到这个新的数据库,而模式没有此限制。原创 2022-09-20 14:44:05 · 1514 阅读 · 0 评论 -
PostgreSQL修炼之道之逻辑结构管理(八)
在一个PostgreSQL数据库系统中,数据的组织结构可以分为以下三层:(1)数据库:一个PostgreSQL数据库服务下可以管理多个数据库,当应用连接到一个数据库时,一般只能访问这个数据库中的数据,而不能访问其他数据库中的内容(除非使用dblink 等其他手段)。(2)表、索引:一个数据库中有很多表、索引。一般,在 PostgreSQL中表的术语为“Relation ”,而在其他数据库中则叫“Table”。(3)数据行:每张表中有很多行数据。原创 2022-09-14 15:48:30 · 725 阅读 · 0 评论 -
PostgreSQL修炼之道之数据类型(七)
PostgreSQL数据库的数据类型分别有:布尔类型、数值类型、字符串类型、二进制数据类型、位串类型、日期/时间类型、枚举类型、几何类型、网络地址类型、复合类型、XML类型、JSON类型、Range类型、数组类型、伪类型、其他类型等。原创 2022-09-06 14:07:51 · 418 阅读 · 0 评论 -
PostgreSQL修炼之道之psql的使用技巧和注意事项(六)
如果在启动psql的命令行中加“-E”参数,就可以把psql中各种以 “\” 开头的命令执行的实际SQL打印出来。如果想在已运行的psql中显示某一个命令实际执行的SQL,但显示完后又想关闭这个功能,该怎么办?这时可以使用“\set ECHO_HIDDEN on | off”命令。.........原创 2022-08-31 10:08:12 · 352 阅读 · 0 评论 -
PostgreSQL修炼之道之psql工具的使用介绍(五)
psql是PostgreSQL中的一个命令行交互式客户端工具,类似Oracle中的命令行工具sqlplus,但它使用起来远比 sqlplus方便。它允许你交互地键入SQL或命令,然后把它们发出给PostgreSQL服务器,再显示SQL或命令的结果。而且,输入的内容还可以来自于一个文件。此外,它还提供了一些元命令和多种类似shell的特性来实现书写脚本,以及对大量任务的自动化工作。当然,初学者也可以使用PostgreSQL中图形化的客户端工具(如pgadminIII)来实现上述功能。......原创 2022-08-31 09:59:14 · 681 阅读 · 0 评论 -
PostgreSQL修炼之道之SQL语言入门(四)
TRUNCATE TABLE是DDL语句,即数据定义语句,相当于用重新定义一个新表的方法把原先表的内容直接丢弃了,所以TRUNCATE TABLE执行起来很快,而DELETE是DML语句,可以认为DELETE是把数据一条一条地删除,若要删除很多行数据,就会比较慢。从执行结果看,两者实现了相同的功能,但两者实现的原理是不一样的。其中“SELECT”是关键字,表示要查询,后面跟多个列名,各列之间使用逗号分隔。. SELECT语句可以把数据从一张表插入到另一张表中,这个语句属于DML语句。.........原创 2022-08-30 09:26:26 · 266 阅读 · 0 评论 -
PostgreSQL修炼之道之SQL语言入门(三)
SQL命令一般分为DQL、DML、DDL几类。DQL:数据查询语句,基本就是SELECT查询命令,用于数据查询。DML : Data Manipulation Language的简称,即数据操纵语言,主要用于插人、更新、删除数据,所以也分为INSERT、UPDATE、DELETE三种语句。DDL : Data Definition Language 的缩写,即数据定义语言,主要用于创建、删除,以及修改表、索引等数据库对象语言。...原创 2022-08-29 16:45:56 · 301 阅读 · 0 评论 -
PostgreSQL修炼之道之PostgreSQL安装与配置(二)
要解决这类问题,只能采用从源码安装的方法,在执行./configure命令时指定较大的数据块,一般也需要指定较大的WAL日志块和WAL日志文件的大小。其中,参数“listen_addresses”表示监听的IP地址,默认是在“localhost”处监听,也就是“127.0.0.1”的IP地址上监听,这会让远程的主机无法登录这台数据库,如果想从其他的机器上登录这台数据库,需要把监听地址改成实际网络的地址,一种简单的方法是,把这个地址改成“*”,表示在本地的所有地址上监听。如果没有启动,点击启动。.......原创 2022-08-29 14:16:12 · 1933 阅读 · 0 评论 -
PostgreSQL修炼之道之PostgreSQL简介(一)
PostgreSQL数据库是目前功能最强大的开源数据库,支持丰富的数据类型(如JSON和JSONB类型、数组类型)和自定义类型。而且它提供了丰富的接口,可以很容易地扩展它的功能,如可以在GiST框架下实现自己的索引类型等,它还支持使用C语言写自定义函数、触发器,也支持使用流行的语言写自定义函数,比如其中的PL/Perl提供了使用Perl语言写自定义函数的功能,当然还有PL/Python、PL/Tcl,等等。.........原创 2022-08-29 13:38:04 · 678 阅读 · 0 评论