![](https://img-blog.csdnimg.cn/20210902090245501.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
PostgreSql 学习笔记
文章平均质量分 69
pg 自学笔记~
脑子进水养啥鱼?
这个人很懒,还没添加简介。
展开
-
PostgreSQL vacuum freeze
数据库使用 32 位事务号,最大容纳 42 亿左右的事务号,事务号是循环使用的。当前事务号过去的 21 亿事务属于过去的事务号,当前事务号往前的 21亿 属于未来的事务号,未来的事务号对当前事务是不可见的。当事务号处于未来事务时,就会导致该事务不可见(事务 ID 回卷),为了预防此类情况发生,数据库事务号在达到阈值时 autovacuum 会自动冻结(freeze)重置事务 ID 为 2(冻结的事务id,比任何普通的事务 ID 都旧),来防止事务 ID 回卷。原创 2024-08-20 14:30:10 · 292 阅读 · 0 评论 -
PostgreSql 索引使用技巧
查询数据库中未使用过的索引,确认业务确实用不上后可删除。原创 2023-12-26 14:25:13 · 868 阅读 · 0 评论 -
PostgreSql 并行
当服务器有多核 cpu 时,PostgreSQL 会根据默认配置,在合适的条件下自动进行并行操作,除非主动关闭了相关并行参数。原创 2023-12-26 14:19:16 · 663 阅读 · 0 评论 -
PostgreSql 序列
在 PostgreSQL 中,序列用于生成唯一标识符,通常用于为表的主键列生成连续的唯一值。原创 2023-12-12 14:35:05 · 1285 阅读 · 0 评论 -
PostgreSql 设置自增字段
序列类型是 PostgreSQL 特有的创建一个自增列的方法。包含 smallserial、serial和 bigserial 类型,它们不是真正的类型,只是为了创建唯一标识符列而存在的方便符号。原创 2023-12-12 14:33:23 · 735 阅读 · 0 评论 -
PostgreSql 报错ERROR: cannot cast type smallint to boolean
smallint 类型需先转为 int 类型,再转为布尔类型。原创 2023-12-07 16:24:39 · 774 阅读 · 0 评论 -
PostgreSql 字符串匹配
PostgreSQL 提供了三种独立的实现模式匹配的方法:SQL LIKE 操作符、更近一些的 SIMILAR TO 操作符(SQL:1999 里添加进来的)和 POSIX 正则表达式。虽然大部分的正则表达式搜索都能被很快地执行,但是正则表达式仍可能被人为地设置成需要任意长的时间和任意量的内存进行处理,如果必须这样做,建议加上语句超时限制。使用 SIMILAR TO 模式的搜索具有同样的安全性危险,LIKE 搜索比其他两种选项简单得多,要更安全些。原创 2023-12-07 15:59:05 · 906 阅读 · 0 评论 -
PostgreSql 规则
其它数据库系统定义活动的数据库规则,通常是存储过程和触发器。在 PostgreSQL 中,这些东西可以通过函数和触发器来实现。规则系统(更准确地说是查询重写规则系统)与存储过程和触发器完全不同。它把查询修改为需要考虑规则,并且然后把修改过的查询传递给查询规划器进行规划和执行。它非常强大,并且可以被用于许多东西如查询语言过程、视图和版本。PostgreSQL 规则系统允许我们定义针对数据库表中插入、更新或者删除动作上的替代动作。比如当在一个给定表上执行给定命令时,一条规则会导致执行额外的命令。原创 2023-12-05 17:41:20 · 530 阅读 · 1 评论 -
PostgreSql HOT 技术
因为多版本的原因,当 PostgreSQL 中更新一行时,实际上原数据行并不会被删除,只是插入了一个新行。如果表上有索引,而更新的字段不是索引的键值时,由于新行的物理位置发生了变化,仍然需要更新索引,这将导致性能下降,为了解决这一问题,PostgreSQL 自 8.3 版本之后引入了一个名为“Heap-Only Tuple”的新技术,简称 HOT。原创 2023-12-05 11:33:26 · 338 阅读 · 0 评论 -
PostgreSql SQL 入门
SQL(Structured Query Language)中文全称为”结构化查询语句“,在 1986 年成为 ANSI(American National Standards Institute 美国国家标准化组织)的一项标准,在 1987 年成为国际标准化组织(ISO)标准。SQL 是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。简单理解就是对我们数据库和数据库中的表进行”增删改查“操作的编程语言。原创 2023-06-15 17:01:28 · 3771 阅读 · 0 评论 -
PostgreSql 备份恢复
在 recovery_target、recovery_target_lsn、recovery_target_name、recovery_target_time 和recovery_target_xid 中, 最多只能使用一个。当指定时间点恢复时,启动数据库后默认为只读状态,此时可查询数据进行检查,若不是想要的数据,可继续往后推进(只能向上次恢复的时间点后推进,不能向之前倒推)允许其他并发备份运行,既包括那些使用同样的 API 开始的备份,也包括那些用 pg_basebackup 开始的备份。原创 2023-08-14 10:04:27 · 1723 阅读 · 0 评论 -
PostgreSql 参数配置
pfilespfileASCII文本文件ASCII文本文件ASCII文本文件二进制文件手动编辑手动编辑手动编辑、alter system 修改alter system 修改重启库或重载配置文件生效用 pfile 重启库生效重启库或重载配置文件生效立即生效或重启库生效示例如下。原创 2023-08-08 09:54:28 · 2568 阅读 · 0 评论 -
PostgreSql 日期时间输出风格及顺序
风格为 ISO 和 German 时,时间显示结果不受排序影响。风格为 SQL 和 POSTGRES 时,时间显示结果中的 月、日 受排序影响。原创 2023-08-08 09:53:23 · 1739 阅读 · 0 评论 -
PostgreSql 启停
【代码】PostgreSql 启停。原创 2023-08-03 11:32:20 · 1559 阅读 · 0 评论 -
PostgreSql pg_ctl 命令
控制 PostgreSQL 服务的工具。原创 2023-08-03 11:25:19 · 2486 阅读 · 0 评论 -
PostgreSql 进程及内存结构
PostgreSQL 启动后会生成一块共享内存,共享内存主要用作数据块的缓冲区,以便提高读写性能。WAL 日志缓冲区 和 CLOG(CommitLog)缓冲区也存在于共享内存中。PostgreSQL 数据库运行时,使用如下命令可查询数据库进程,正对应上述结构图。原创 2023-07-31 17:22:27 · 1432 阅读 · 0 评论 -
PostgreSql 锁
在中提到,多个用户访问相同数据时可能出现脏读,不可重复度,幻读,更新丢失的问题,为解决这些问题,定义了不同的隔离级别,而隔离级别的具体实现,依靠的就是数据库锁冲突的机制,在数据库中,不同事务在同一时刻不能对同一对象持有相互冲突的锁,PostgreSQL 提供了多种锁模式用于控制对表中数据的并发访问,大多数情况下数据库会在事务运行的过程中自动的给相关对象加锁解锁,以保证事物的正常运行及数据的一致性。原创 2023-07-31 09:45:35 · 2055 阅读 · 0 评论 -
PostgreSql 事务
在日常操作中,对于一组相关操作,通常需要其全部成功或全部失败。在关系型数据库中,将这组相关操作称为事务。事务具有的四个特性简称为 ACID。原创 2023-07-26 15:48:34 · 1534 阅读 · 0 评论 -
PostgreSql 用户及权限管理
ALTER DEFAULT PRIVILEGES 允许设置将被应用于未来要创建的对象的特权(它不会影响分配给已经存在的对象的特权)。当前,只能修改用于模式、表(包括视图和外部表)、序列、函数和类型(包括域)的特权。其中,可设置权限的函数包括聚集函数和过程函数。当这个命令应用于函数时,单词 FUNCTIONS 和 ROUTINES 是等效的。(推荐使用 ROUTINES,因为它是用来囊括函数和过程的一个标准术语。在较早的 PostgreSQL 发行版中,只允许单词 FUNCTIONS。原创 2023-07-17 17:21:54 · 15238 阅读 · 0 评论 -
PostgreSql 表空间
PostgreSQL 中的表空间允许数据库管理员在文件系统中定义用来存放表示数据库对象的文件的位置。一旦被创建,表空间就可以在创建数据库对象时被引用,如创建数据库、表、索引和添加索引时指定表空间。管理员可以利用表空间控制 PostgreSQL 的磁盘布局,这么做至少有如下两个用处。原创 2023-07-12 17:59:26 · 2005 阅读 · 0 评论 -
PostgreSql 查询表所在表空间
【代码】PostgreSql 查询表所在表空间。原创 2023-07-11 18:17:21 · 1281 阅读 · 0 评论 -
PostgreSql 触发器
PostgreSQL从9.3 版开始支持一种称为"Event Trigger"的触发器,这种触发器主要用于弥补PostgreSQL 以前版本不支持 DDL 触发器的不足。由于事件触发器涉及的权限较大,比如能禁止 DDL 操作等,所以只有超级用户才能创建和修改事件触发器。目前,事件触发器支持以下 3 种 DDL 事件。:DDL开始执行前被触发。:一个DDL执行完成后被触发。sql_drop:删除数据库对象前被触发。原创 2023-07-11 13:54:37 · 6801 阅读 · 0 评论 -
PostgreSql 表
UNLOGGED表在使用上与普通表没有区别,仅仅在插入、删除、更新数据时不产生WAL日志,所以做这些DML操作的性能会更高。另外需要注意的是,数据库异常宕机时,UNLOGGED表的数据可能会丢失。原创 2023-07-07 11:33:07 · 1075 阅读 · 0 评论 -
PostgreSql 限制
参考:https://www.postgresql.org/docs/current/limits.html原创 2023-07-07 11:29:08 · 1480 阅读 · 0 评论 -
PostgreSql 模式
模式(Schema)是数据库中的一个概念,可以将其理解为一个命名空间或目录,不同的模式下可以有相同名称的表、函数等对象而不会产生冲突。提出模式的概念是为了便于管理,只要有权限,各个模式的对象可以互相调用。在 PostgreSQL 中,一个数据库包含一个或多个模式,模式中又包含了表、函数以及操作符等数据库对象。原创 2023-07-06 09:32:55 · 2073 阅读 · 0 评论 -
PostgreSql 数据库操作
要创建一个数据库,你必须是一个超级用户或者具有特殊的 CREATEDB 特权。默认情况下,新数据库将以标准系统数据库 template1 为模板进行创建。可以通过写 TEMPLATE name 指定一个不同的模板。特别地,通过写 TEMPLATE template0 可以创建一个原始的数据库(其中没有用户定义的对象存在并且系统对象没有被更改),它将只包含你的 PostgreSQL 版本所预定义的标准对象。:要创建的数据库名。原创 2023-07-05 18:05:27 · 1373 阅读 · 0 评论 -
PostgreSql 逻辑结构
PostgreSql 文件目录结构:原创 2023-06-29 11:00:37 · 1330 阅读 · 0 评论 -
PostgreSql 数据类型
字符串函数及操作符:https://blog.csdn.net/songyundong1993/article/details/131416803?数学函数及操作符:https://xiaosonggong.blog.csdn.net/article/details/131416741。布尔类型操作符:https://xiaosonggong.blog.csdn.net/article/details/131416704。原创 2023-06-27 14:49:52 · 1580 阅读 · 0 评论 -
PostgreSql 字符串函数及操作符
一、标准SQL字符串函数和操作符函数返回类型描述示例结果string||stringtext字符串连接‘Post’||‘greSQL’PostgreSQLbit_length(string)int字符串中的二进制位数的个数bit_length(‘jose’)32char_length(string)int字符串中的字符个数char_length(‘数据库’)3convert(string using conversion_name)te原创 2023-06-27 14:41:09 · 1472 阅读 · 0 评论 -
PostgreSql 数学函数及操作符
dp” 表示double precision。|二进制右移|16>>3|2。原创 2023-06-27 14:41:02 · 836 阅读 · 0 评论 -
PostgreSql 布尔类型操作符
一、AND、OR 运算真值表aba AND ba OR bTRUETRUETRUETRUETRUEFALSEFALSETRUETRUENULLNULLTRUEFALSEFALSEFALSEFALSEFALSENULLFALSENULLNULLNULLNULLNULL二、NOT 运算真值表aNOT aTRUEFALSEFALSENULLNULLNULL原创 2023-06-27 14:37:54 · 166 阅读 · 0 评论 -
PostgreSql psql 用法
psql 是 PostgreSQL 中的一个命令行交互式客户端工具,类似 Oracle 中的命令行工具 sqlplus,它允许用户交互地键入 SQL 语句或命令。此外,它还提供了一些快捷命令和多种类似 Shell 的特性来实现书写脚本,便于对大批量任务的自动化操作。虽然 psql 的功能与 sqlplus 差不多,但使用起来远比 sqlplus 简便,如可以用上下方向键,把上一条和下一条 SQL 命令翻出来,还有单击 Tab 键自动补全功能。原创 2023-06-25 10:46:18 · 4480 阅读 · 1 评论 -
PostgreSql pg_restore 用法
pg_restore 是一个用来从 pg_dump 创建的非文本格式文件中恢复 PostgreSQL 数据库的工具。原创 2023-03-27 09:42:20 · 3225 阅读 · 1 评论 -
PostgreSql 视图
视图(View)本质上是一个存储在数据库中的查询语句。视图本身不包含数据,也被称为虚拟表。我们在创建视图时给它指定了一个名称,然后可以像表一样对其进行查询。原创 2023-02-27 13:43:08 · 4878 阅读 · 0 评论 -
PostgreSql 关键字
PosetgeSQL 中标识符和关键词必须以一个字母(也可以是带变音符的字母和非拉丁字母)或一个下划线开始。后续字符可以是字母、下划线、数字或美元符号($)。注意根据 SQL 标准的规定,美元符号是不允许出现在标识符中的,因此它们的使用可能会降低应用的可移植性。SQL标准不会定义包含数字或者以下划线开头或结尾的关键词,因此这种形式的标识符是安全的,不会与标准的未来扩展发生冲突。原创 2023-02-17 11:07:54 · 2751 阅读 · 0 评论 -
PostgreSql 索引
索引主要被用来提升数据库性能,不当的使用会导致性能变差。PostgreSQL 提供了多种索引类型: B-tree、Hash、GiST、SP-GiST 、GIN 和 BRIN。每一种索引类型使用了一种不同的算法来适应不同类型的查询。默认情况下,CREATE INDEX 命令创建适合于大部分情况的 B-tree 索引。在使用上,除了常见的单列索引,还有多列索引、唯一索引、表达式索引、部分索引、覆盖索引等。原创 2023-02-08 16:52:34 · 4970 阅读 · 0 评论 -
PostgreSql like 不走索引
测试发现 like 使用后缀通配符(%)时不走索引。原创 2023-01-20 09:49:18 · 2282 阅读 · 1 评论 -
PostgreSql 认证方式-Idnet 认证
ident 认证方法通过从一个 ident 服务器获得客户端的操作系统用户名并且用它作为被允许的数据库用户名(和可选的用户名映射)来工作。它只在 TCP/IP 连接上支持。“Identification Protocol(标识协议)”在 RFC 1413 中描述。实际上每个类 Unix 操作系统都带着一个默认监听 TCP 113 端口的 ident 服务器。ident 服务器的基本功能是回答类似这样的问题:“哪个用户从你的端口X发起了连接并且连到了我的端口Y?”。原创 2022-09-20 10:06:51 · 559 阅读 · 0 评论 -
PostgreSql 认证方式-Peer 认证
Peer 认证方法通过从内核获得客户端的操作系统用户名并把它用作被允许的数据库用户名(和可选的用户名映射)来工作。这种方法只在本地连接上支持。Peer 认证只在提供getpeereid()函数、SO_PEERCRED套接字参数或相似机制的操作系统上可用。这些 OS 当前包括Linux、大部分的BSD包括OS X以及Solaris。原创 2022-09-20 10:02:48 · 938 阅读 · 0 评论 -
PostgreSql 批量修改数据库下所有表 owner
【代码】PostgreSQL 批量修改数据库下所有表 owner。原创 2022-08-26 15:21:30 · 3043 阅读 · 0 评论