切换导航
首页
技术问答
编程语言
前端开发
移动开发
开发工具
程序设计
行业应用
CMS系统
服务器
频道导航
▸ PHP
▸ Java
▸ Java SE
▸ Python
▸ C#
▸ C&C++
▸ Ruby
▸ VB
▸ asp.Net
▸ Go
▸ Perl
▸ netty
▸ Django
▸ Delphi
▸ Jsp
▸ .NET Core
▸ Spring
▸ Flask
▸ Springboot
▸ SpringMVC
▸ Lua
▸ Laravel
▸ Mybatis
▸ Asp
▸ Groovy
▸ ThinkPHP
▸ Yii
▸ swoole
▸ HTML
▸ HTML5
▸ JavaScript
▸ CSS
▸ jQuery
▸ Bootstrap
▸ Angularjs
▸ TypeScript
▸ Vue
▸ Dojo
▸ Json
▸ Electron
▸ Node.js
▸ extjs
▸ Express
▸ XML
▸ ES6
▸ Ajax
▸ Flash
▸ Unity
▸ React
▸ Flex
▸ Ant Design
▸ Web前端
▸ 微信小程序
▸ 微信公众号
▸ iOS
▸ Android
▸ Swift
▸ Hybrid
▸ Cocos2d-x
▸ Flutter
▸ Xcode
▸ Silverlight
▸ cocoa
▸ Cordova
前端之家
Postgre SQL
PostgreSQL数据库内核分析 笔记(这本书没有怎么很好的看,主要就是一些数据结构、概念和流程的文字介绍)
PostgreSQL数据库内核分析 笔记(这本书没有怎么很好的看,主要就是一些数据结构、概念和流程的文字介绍)
2020-06-18
Postgre SQL
前端之家
前端之家
收集整理的这篇文章主要介绍了
PostgreSQL数据库内核分析 笔记(这本书没有怎么很好的看,主要就是一些数据结构、概念和流程的文字介绍)
,
前端之家
小编觉得挺不错的,现在分享给大家,也给大家做个参考。
Postgre
sql
数据库
内核分析
跳转
至:
导航
、
搜索
目录
1
系统概述
2
体系结构
3
存储管理
4
索引
5
查询编译
6
查询执行
7
事务处理与并发控制
8
数据库安全
9
附录A 用Eclipse开发和调试
@H_
403
_41@
系统概述
初始化
数据库
:./initdb --no-locale -D ../data
./pg_ctl start -D ../data
数据库
命令:initdb createuser dropuser createdb dropdb pg_dump pg_restore pg_ctl vacuumdb p
sql
p
sql
元命令:\? \o \l \q \c \dt \d \di \i (
sql
);
体系结构
主要系统表及其依赖关系
pg_namespace(nspname,nspowner,nspacl)
pg_tablespace(spcname,spcowner,spclocation,spcacl)
pg_database
pg_class
pg_type
pg_attribute
pg_index
系统视图:pg_cursors pg_group pg_indexes pg_locks pg_roles pg_rules ...
数据集簇
表/索引:超过1G分裂,filenode.1 ...
如果有些
属性
药存储大数据,那么就会有关联的TOAST表
PG_DATA中的子目录和
文件
:PG_VERSION base global pg_clog pg_tblspc ...
postgres.bki
initdb的执行过程
系统
数据库
:template1 template0 postgres
进程结构:Postmaster
Postgres
SysLogger PgStat AutoVacuum BgWriter WalWriter PgArch
Postmaster
MemoryContext
GUC配置参数
信号处理:SIGHUP_handler pmdie reaper(清理
退出
的子进程)
辅助进程启动
辅助进程
WalWriter:段编号从0开始,不能循环使用
PgArch(WAL日志归档):直接
调用
shell命令?k
Postgres
exec_simple_query
存储管理
外存管理:表
文件
、空闲空间、虚拟
文件
描述符(VFD)、大数据
8.2+ 可见性映射VM 空闲映射FSM
堆
文件
:表
文件
+元组之间不关联,{普通、临时、序列、TOAST}
物理结构:PageHeaderData Linp<N> ... Freespace .. Tuple<N> Special_space
“HOT技术”
一条元组的每个版本都有对应版本的索引 ==〉...
标记
删除
磁盘管理(SMGR)
MdfdVec:vfd、segno、chain
VFD机制
LRU池(VfdCache)
FSM
p66 fp_next_slot
fsm_search 最大堆二叉树?
VM:作为一个
提示
加快VACUUM速度
大数据:
TOAST:存储变长数据?如VARCHAR等,需超过2KB;线外/压缩2种存储机制
LOB
内存管理
MemoryContext:AllocSet
高速缓存:SysCache/RelCache
缓冲池
IPC
表操作和元组操作
同步扫描(多个扫描时利用共享缓冲)
VACUUM机制
Lazy:
标记
无效为可用
Full
ResourceOwner资源跟踪
感觉这里的描述非常混乱
索引
索引方式
部分索引?CREATE INDEX idx ON student(name) WHERE (id>1 AND id<255);
表达式索引?CREATE INDEX idx ON student(lower(name))
pg_am:每个元组
包括
了该索引类型提供的
访问
函数
(pg_proc.oid)?
B-Tree索引
每个非最右节点:High-Key
BTWriteState:记录整个索引创建过程中的信息
对每一层
生成
一个BTPageState,其btps_next指向父节点(?)
填充因子:... WITH (fillfactor=70);
扫描索引
Hash索引
4种页:
Meta
(0#) bucket overflow(桶里的元素) bitmap(管理前两者的使用情况)
GiST
Consistent(E,q) Union(P) Same(E1,E2)
Penalty(E1,E2)
PickSplit(P) Compress(E) Decompress(E)
GISTInsertStack?
GIN
compare、extractValue、extractQuery、consistent(类似于hashtable的equals?)、comparePartial
TSearch2
查询
编译
查询
分析
查询
重写
查询
规划:
查询
树链表 => 执行计划链表
在路径
生成
过程中,每
生成
一个中间关系,要估算出大小、路径及代价
DP、GA
基本关系访问路径
索引扫描路径
TID(元组的物理地址?)
生成
可优化的MIN/MAX聚集计划
生成
普通计划
扫描:顺序/索引
连接:嵌套循环、Hash、归并
其他:Append、Result、物化
生成
完整计划(+聚集/排序)
整理计划树
代价估计
遗传算法
查询
执行
非可优化语句
可优化语句
计划节点
控制:Result Append BitmapAnd/Or RecursiveUnion
扫描:Seq Index BitmapHeap BitmapIndex Tid Subquery Function Values Cte WorkTable
物化:Material Sort Group Agg Unqiue Hash SetOp Limit WindowAgg
连接:类型(Inner Left/Right/Full_Outer Semi Anti)、操作
其他子
功能
元组操作
表达式计算
投影
事务处理与并发控制
TBlockState
2PC
3种锁
SpinLock
LWLock
RegularLock
锁管理机制
死锁
等待图(WFG)
MVCC(这里讲解似乎不够清晰)
日志管理:XLOG/CLOG
SLRU缓冲池
SUBTRANS日志管理器?
MULTIXACT日志管理器:记录组合事务ID?
数据库
安全
附录A 用Eclipse开发和调试
上一篇:关于PostgreSql的指定中文排序问题
下一篇:PostgreSQL数据库学习手册之libpq
猜你在找的Postgre SQL相关文章
PosegreSQL基础回顾(第 4 章 SQL语法)
来源:http://www.postgres.cn/docs/11/ 4.1.1. 标识符和关键词 SQL标识符和关键...
作者:前端之家 时间:2020-11-21
PosegreSQL基础回顾(第 8 章 数据类型)
来源:http://www.postgres.cn/docs/11/ 8.1. 数字类型 数字类型由2、4或8字节的...
作者:前端之家 时间:2020-11-21
PosegreSQL基础回顾(第 5 章 数据定义)
来源:http://www.postgres.cn/docs/11/ 5.1. 表基础 SQL并不保证表中行的顺序。...
作者:前端之家 时间:2020-11-21
PosegreSQL基础回顾(第 6 章 数据操纵、第 7 章 查询)
来源:http://www.postgres.cn/docs/11/ 6.4. 从修改的行中返回数据 有时在修改行...
作者:前端之家 时间:2020-11-21
PosegreSQL基础回顾(第 13 章 并发控制)
来源:http://www.postgres.cn/docs/11/ 13.2.1. 读已提交隔离级别 读已提交是Po...
作者:前端之家 时间:2020-11-21
PostgreSQL安装和使用
青岛OJ系统用的关系型数据库是PostgreSQL,为此对PostgreSQL大致了解下。 今天的主要话题围...
作者:前端之家 时间:2020-11-01
PostgreSQL整体架构
作者:前端之家 时间:2020-08-07
为什么选择PostgreSQL而不是MySQL
David Bolton是一名独立开发者,他使用PostgreSQL和MySQL都已有超过十年的时间。近日,他撰...
作者:前端之家 时间:2020-08-07
为什么选择PostgreSQL而不是MySQL
David Bolton是一名独立开发者,他使用PostgreSQL和MySQL都已有超过十年的时间。近日,他撰...
作者:前端之家 时间:2020-08-07
专访唐成:从小工到专家,PostgreSQL的修炼之道
唐成,拥有十几年数据库、操作系统、存储领域的工作经验。目前任沃趣科技首席数据库架构师...
作者:前端之家 时间:2020-08-07
编程分类
MySQL
MsSQL
Oracle
Sqlite
Postgre SQL
Mariadb
MongoDB
NoSQL
HBase
JDBC
最新文章
• PosegreSQL基础回顾(第 4
• PosegreSQL基础回顾(第 8
• PosegreSQL基础回顾(第 5
• PosegreSQL基础回顾(第 6
• PosegreSQL基础回顾(第 13
• PosegreSQL基础回顾(第 9
• PostgreSQL安装和使用
• PostgreSQL整体架构
• 为什么选择PostgreSQL而不
• 为什么选择PostgreSQL而不
热门标签
更多 ►
undo日志
persistent-c
mysql-error-
postal-code
sql-match-al
mysql-5.6
mysql-8.0
database-tri
安装路径
系统错误
data_dir
丢失文件
主从同步
sql_mode
数据库目录
匿名用户
character_se
ID归零
数据库位置
查询表
重复字段
查询字段
截断日志
SUSPECT
7391
Remote Serve
Linked Serve
玄学问题
登录不上
开启远程访问