- 博客(934)
- 资源 (4)
- 收藏
- 关注
原创 PostgreSQL 16 Administration Cookbook 读书笔记:第8章 Monitoring and Diagnosis
数据库下与计算机硬件与存储发生关联,横向与网络发生关联。因此仅监控数据库是不够的。
2025-07-23 10:07:38
1003
原创 PostgreSQL 事务ID环绕问题
但由于事务 ID 的大小有限(32 位),因此长期运行的集群(超过 40 亿个事务)将遭遇事务 ID 回绕:XID 计数器会回绕为零,过去的事务会突然变成未来的事务 — — 这意味着它们的输出变得不可见。因此,一旦使用特定的普通 XID 创建了行版本,那么在接下来的 20 亿个事务中,无论我们讨论的是哪个普通 XID,该行版本都会看起来像是“过去”的。为了防止这种情况,PostgreSQL 保留了一个特殊的 XID,FrozenTransactionId,它不遵循普通 XID 比较规则,并且。
2025-07-23 10:05:46
1027
原创 PostgreSQL 16 Administration Cookbook 读书笔记:第7章 Database Administration
讲的是ALTER TYPE命令。示例针对。也适用。
2025-07-18 16:30:01
1086
原创 PostgreSQL 16 Administration Cookbook 读书笔记:第6章 Security
PG 文档中没有专门的一章讲安全,散落在各处。可以参考老版本的文档或。略。
2025-07-14 17:55:50
718
原创 PostgreSQL 16 Administration Cookbook 读书笔记:第5章 Tables and Data
如果大于零,则为该列中不同值数量的估计值。PG内置的range类型包括int4range,int8range,numrange,tsrange,tstzrange 和 daterange。其实安全性也是增强的,还有模块化和兼容性(毕竟数据库的更换比前端开发语言和框架的更换评率小)。exclude约束确保如果使用指定的运算符在指定的列或表达式上比较任意两行,则这些运算符比较中至少有一个将返回 false 或 null。注意,SYSTEM是基于block的,BERNOULLI是基于tuple的。
2025-07-13 12:28:46
644
原创 PostgreSQL 16 Administration Cookbook 读书笔记:第4章 Server Control
带-D选项的就是postmaster进程。💡 每个postmaster进程有且仅有一个数据目录。......
2025-07-11 08:01:24
883
原创 PostgreSQL 16 Administration Cookbook 读书笔记:第3章 Server Configuration
服务器编码和语言环境尤其如此,如果以后需要更改,可能会导致大量的停机时间和工作量。当系统接近上线时,安全性的设置也会更加困难。它还提供对每个参数的一些 SHOW 命令无法直接获取的信息的访问,例如最小值和最大值。pg_available_extension_versions包含extension的多个版本。💡 简单来说,internal需要重装(reinit),postmaster需要重启(restart),sighup需要重新加载(reload)。可以扩展功能,数据类型,运算符,索引类型。
2025-07-11 08:00:37
1117
原创 PostgreSQL 16 Administration Cookbook 读书笔记:第2章 Exploring the Database
信息模式定义在 SQL 标准中,因此可以预期其可移植且稳定——这与 system catalog 不同,system catalog 是 PostgreSQL 特有的,并且是根据实现问题建模的。创建数据库集群包括创建数据库数据所在的目录、生成共享目录表(属于整个集群而非任何特定数据库的表),以及创建 template1 和 postgres 数据库。例如分区表,由于PG有特殊的实现,所以从information schema 是无法分辨出来分区的父表和子表的,这需要查询pg_class。
2025-07-10 16:09:53
723
原创 PostgreSQL 16 Administration Cookbook 读书笔记:第1章 First Steps
开源,低TCO,30多年持续开发,符合SQL:2023标准,高度可扩展,多模。
2025-07-10 16:09:22
894
原创 开始读 PostgreSQL 16 Administration Cookbook
这本书的全名为:PostgreSQL 16 Administration Cookbook: Solve real-world Database Administration challenges with 180+ practical recipes and best practices。前面已经有Learning PostgresSQL第二版打底了,现在就通过这本Cookbook中的recipe来实践和加强一下。以下为章节列表,读书笔记已经发布的会附上URL。
2025-07-09 22:15:03
335
原创 迁移Oracle SH 示例 schema 到 PostgreSQL
所有的脚本都在Github上了,下一篇我们迁Customer Orders 示例 schema。
2025-07-09 19:28:37
755
原创 迁移Oracle HR 示例 schema 到 PostgreSQL
现在开始一点实战。其中最小和最简单的是HR,我们就从他开始。我们也按以上顺序来迁移,并且文件名与Oracle保持一致。
2025-07-08 09:03:26
752
原创 读书笔记:An Introduction to Set Theory
集合: 无重复值,无序,成员包含,集合包含,子集,超集空集、全集、幂集运算符,特别是 UNION、INTERSECT、MINUSClosure;其他属性(交换性等)集合与逻辑之间的基本关系。
2025-07-06 08:25:52
645
原创 Learning PostgresSQL读书笔记: 第19章 Useful Tools and Extensions
本章最重要的是备份和恢复。
2025-07-04 13:00:54
1077
原创 Learning PostgresSQL读书笔记: 第18章 Logical Replication
要成功解码WAL,WAL中需要有额外的信息,类似于Oracle的supplemental logging。这是通过表的REPLICA IDENTITY设置实现的。记录指定索引所涵盖列的旧值,这些列必须唯一、非部分、不可延迟,并且仅包含标记为 NOT NULL 的列。既然逻辑复制不能复制DDL命令,而DDL命令又是不可避免的,如何处理这些DDL变化?逻辑复制不是逐字节的块拷贝,而是对WAL进行解码得到SQL,再在备端应用。例如,已经在复制发布中的表增加了一列,那么你必须在备端也增加这一列。
2025-07-03 08:01:51
1035
原创 Learning PostgresSQL读书笔记: 第16章 Configuration and Monitoring
您也可以在连接请求数据包中为特定会话设置这些设置(例如,通过 libpq 的 PGOPTIONS 环境变量),但前提是连接用户是超级用户或已被授予相应的 SET 权限。但是,这些设置在会话启动后不会改变。pg_blocking_pids返回阻止具有指定进程 ID 的服务器进程获取锁的会话的进程 ID 数组,如果不存在这样的服务器进程或该服务器进程未被阻止,则返回空数组。pg_stat_all_tables 视图将为当前数据库中的每个表(包括 TOAST 表)包含一行,显示有关对该特定表的访问的统计信息。
2025-07-02 16:11:22
1062
原创 Learning PostgresSQL读书笔记: 第15章 Backup and Restore
PostgreSQL 数据库应定期备份。虽然备份过程本质上很简单,但清晰地了解底层技术和假设至关重要。SQL 转储(逻辑备份)文件系统级备份(物理备份)持续归档。
2025-07-02 16:09:43
817
1
原创 Learning PostgresSQL读书笔记: 第14章 Logging and Auditing
日志收集器(logging collector),它是一个后台进程,用于捕获发送到 stderr 的日志消息并将其重定向到日志文件。这种方法通常比记录到 syslog 更有用,因为某些类型的消息可能不会出现在 syslog 输出中。此参数只能在服务器启动时设置。日志收集器即输出中的on(1 row)(36 rows)
2025-07-01 13:38:52
894
原创 如何让虚拟机在 Vagrant VirtualBox 中互相通信
需求来自于:想用Vagrant创建2个VirtualBox虚机,然后建立数据库复制关系。因此需要让这两个虚机可以相互通信(网络联通)。
2025-07-01 08:23:06
1134
原创 Learning PostgresSQL读书笔记: 第13章 Query Tuning, Indexes, and Performance Optimization
略。
2025-06-30 08:17:19
1176
原创 Learning PostgresSQL读书笔记: 第12章 Extending the Database – the Extension Ecosystem
无论叫extension,plug-in还是add-on,都是相对于core而言,都是用来做功能扩充的。这对于PG这样的开源系统尤为重要,因为这提供了一个标准,任何人都可以对PG做贡献,以构建良好的生态系统。根据官方文档PostgreSQL 的设计目标是易于扩展。因此,加载到数据库中的扩展可以像内置功能一样运行。源代码附带的 contrib/ 目录包含几个扩展。其他扩展是独立开发的,例如 PostGIS。甚至 PostgreSQL 复制解决方案也可以由外部开发。
2025-06-30 08:16:35
1167
原创 Learning PostgresSQL读书笔记: 第11章 Transactions, MVCC, WALs, and Checkpoints
文档见这里。事务是所有数据库系统的基本概念。事务的核心在于它将多个步骤捆绑成一个“全有或全无”的操作(原子性)。步骤之间的中间状态对其他并发事务不可见(隔离性),并且即使发生某些故障导致事务无法完成,所有步骤也不会对数据库产生任何影响(原子性)。一致性和持久性隐藏在整体语义中。书中的这段话总结更为简洁:总而言之,ACID 属性意味着数据库必须能够处理整个工作单元(原子性),以永久的方式存储数据(持久性),而不会对数据进行混合更改(一致性),并且以并发操作的方式执行,就好像它们是单独执行的一样(
2025-06-28 10:07:11
825
原创 Learning PostgresSQL读书笔记: 第10章 Users, Roles, and Database Security
默认情况下,角色会继承其所属角色的权限。但是,要创建默认不继承权限的角色,请使用 CREATE ROLE name NOINHERIT。或者,也可以使用 WITH INHERIT TRUE 或 WITH INHERIT FALSE 来覆盖单个授权的继承。
2025-06-28 10:06:16
661
原创 Learning PostgresSQL读书笔记: 第9章 Partitioning
总的来说,表越小,缓存在shared buffer的几率就越大,性能就越好。💡 PostgreSQL 的分区表必须在创建时就定义分区策略,不能通过 ALTER TABLE 直接修改表的分区结构。这两个表basilea和basilea_partitioned记录数是一样的,前者未分区,后者范围分区。💡 哈希分区表中的空值始终转到余数为 0 的分区。继承是面向对象的概念。列表分区和范围分区可以有默认分区,哈希分区则无。💡 分区表是逻辑表,而具体的分区则是物理表。删除分区表时,附带的物理分区也一并删除。
2025-06-27 19:49:55
700
原创 Learning PostgresSQL读书笔记: 第8章 Triggers and Rules
本章将讨论以下内容:• 探索 PostgreSQL 中的规则• 管理 PostgreSQL 中的触发器• 事件触发器。
2025-06-27 19:49:00
759
原创 Learning PostgresSQL读书笔记: 第7章 Server-Side Programming
END;类似于oracle中的过程的definer和invoker权限。例如,pg_stat_activity 视图每个服务器进程有一行,显示与该进程当前活动相关的信息。但用user01执行时,部分报权限错误。(6 rows)query textAS $$SELECTpid,queryFROM$$💡 以上代码使用做的格式化。
2025-06-26 07:19:19
948
原创 Learning PostgresSQL读书笔记: 第6章 Window Functions
generate_series函数文档见这里。0246810(6 rows)我们学习了如何使用 ROW_NUMBER ()、FIRST_VALUE ()、LAST_VALUE ()、RANK ()、DENSE_RANK ()、LAG ()、LEAD ()、CUME_DIST () 和 NTILE () 函数。我们还了解了使用 ROWS BETWEEN 和 RANGE BETWEEN 子句创建聚合函数之间的区别。
2025-06-26 07:17:26
245
原创 Learning PostgresSQL读书笔记: 第5章 Advanced Statements
只要不存在独立错误,即使在高并发情况下,也能保证两者之一的结果。如果指定了limit,则返回的行数不会超过该limit(但如果查询本身产生的行数较少,则返回的行数可能会更少)。如果子查询未返回任何行,则 EXISTS 的结果为“false”。“UPSERT” 是 DBMS 的一个特性,它允许 DML 语句以原子方式插入一行,或者在已经存在的行的基础上,更新现有的行,同时几乎不再考虑并发性。如果同时出现 OFFSET 和 LIMIT,则在开始计算返回的 LIMIT 行之前,会跳过 OFFSET 行。
2025-06-25 07:40:20
845
原创 Learning PostgresSQL读书笔记: 第3章 Managing Users and Connections
PG的用户对象包括user和group。前者是个体的人或应用,后者是共享相同权限的用户组群。user和group统称为role。或者也可以称为user role和group role。role包括连接属性和数据库权限,两者相互独立。role可以嵌套。💡 role是在cluster一级定义的。而权限实在database一级定义的。
2025-06-24 07:49:16
255
原创 Learning PostgresSQL读书笔记: 第2章 Getting to Know Your Cluster
💡 缺省端口为5432。略。
2025-06-24 07:48:29
655
原创 Learning PostgresSQL读书笔记: 第1章 Introduction to PostgreSQL
本章介绍了PG的简史,基本术语和安装。
2025-06-23 20:13:52
839
原创 开始读Learning PostgresSQL第二版
这本书的全名为:Learn PostgreSQL: Use, manage, and build secure and scalable databases with PostgreSQL 16, 2nd Edition。以下为章节列表,读书笔记已经发布的会附上URL。框架还可以,内容全面。
2025-06-23 20:12:47
620
原创 在同一服务器上安装多个postgreSQL数据库
但是这套PG的版本是13,有点老。因此我需要再安装一套PG 16,以下为过程。先关闭PG 13,以避免端口冲突。,已经在Oracle Linux 9上安装了一套PG。否则客户端版本为13,而服务端版本为16。
2025-06-18 08:57:16
375
原创 Oracle 数据库 23ai 新特性:Use Case Domain
用例域是轻量级使用说明符,具有可选的数据库端强制执行功能,应用程序可以使用它来集中记录预期的数据使用情况。作为高级字典对象,用例域包括与表列相关的内置使用属性,例如默认值、检查约束、排序规则、显示和排序格式以及标注。使用集中式域信息,应用程序可以标准化操作,而无需依赖应用程序级元数据。例如,您可以使用用例域来屏蔽信用卡号或格式化电话号码和货币值。作为数据库对象,用例域属于架构并提供通用列定义,而无需修改基础列数据类型。用例域将表列的一些常见特征封装到可重用的对象中,该对象可以在其他表列上重用。
2025-05-28 08:55:08
1143
原创 Oracle NLS_LANG 常见问题
字符集只是对符号数值的一种约定。计算机无法识别“A”或“B”,它只知道该符号的(二进制)数值,该数值由其操作系统 (OS) 或终端硬件(固件)使用的字符集定义。计算机只能处理数字,因此需要字符集。例如,“ASCII”(旧的 7 位字符集)、“ROMAN8”(UNIX 上的 8 位字符集)或“UTF8”(多字节字符集)。代码页是 Windows/DOS 编码方案的名称,对于 Oracle NLS,您可以将其视为字符集。您还需要区分字体 (FONT) 和字符集/代码页。
2025-05-26 15:09:30
1082
原创 QQ相册不能上传超过10分钟的视频:使用ffmpeg切割视频
这是硬限制,交钱也不行,和文件尺寸也无关。那么唯一的方法就是切割视频。切割视频最方便的还是命令行,我使用的是linux下的ffmpeg。
2025-05-19 18:27:22
283
原创 一页概览:统一数据保护方案
2010年左右手绘,用的是公司的信纸,签字笔,马克笔。方案为统一数据保护。其实解释备份软件加备份硬件(支持重复数据删除)的联合解决方案。
2025-04-29 22:53:47
200
Oracle自治数据库自动分区报告
2022-11-16
同名微信号,发布长沙的视频
2024-02-22
TA创建的收藏夹 TA关注的收藏夹
TA关注的人