PostgreSQL存储引擎之heap tuple结构
本小节主要介绍heap tuple的物理结构,并说明各个字段的意义。具体什么作用,之后详细介绍。
PostgreSQL存储引擎之page结构
下图就是page的结构图,8K的空间包括一个头部Page Header,若干个Item,每个Item指向一条记录(Tuple),有些Page在初始化的时候,就page的末尾,预留出空间作为Special用,Btree索引页使用,heap page没有这部分,直接就是tuple。当然了,有些Page不需要Special空间,就没有预留。
PostgreSQL插件hook机制
介绍了插件hook机制,及相关加载调用流程,供以后开发插件使用。
PostgreSQL server端接收连接后fork进程
main->PostmasterMain->ServerLoop: for(;;){ ... //会阻塞在这,监视文件描述符的变化 selres = select(nSockets, &rmask, NULL, NULL, &timeout); if (selres&nbs
PostgreSQL状态变迁
typedef enum DBState { DB_STARTUP = 0, DB_SHUTDOWNED, DB_SHUTDOWNED_IN_RECOVERY, DB_SHUTDOWNING, DB_IN_CRASH_RECOVERY, DB_IN_ARCHIVE_RECOVERY, DB_IN_PRODUCTION }&nb
PostgreSQL启动恢复通过checkpoint open wal文件
StartupLOG:: ->record = ReadCheckpointRecord(xlogreader, ControlFile->checkPoint, 1, true) ->record = ReadRecord(xlogreader, ControlFile->checkPoi
PG启动流程StartupXlog函数回放日志前处理
启动恢复函数是StartupXLOG,该函数从pg_control文件中读取checkpoint记录,然后从checkpoint记录的redo点开始进行恢复。本章节先列个框架,后续详细解析。
死锁案例三
死锁案例二
MySQL5.6.33,隔离级别是RR。表结构及数据:Create table t1(id int not null primary key auto_increment,c1 int,c2 int,c3 int, unique key(c1),unique key(c2));insert into t1(c1,c2,c3) values(1,3,4),(6,6,10),(9,9,14);3、死锁日志----------------...
死锁案例一
MySQL5.6.33,隔离级别是RR。表结构及数据:点击(此处)折叠或打开CREATE TABLE `t0` ( `id` int(11) NOT NULL AUTO_INCREMENT, `c` int(11) NOT NULL DEFAULT '0', `d` int(11) NOT NULL DEFAULT '0',...
InnoDB purge原理--哪些undo log可purge
InnoDB purge原理-readview和trx关系
InnoDB undo log原理
InnoDB undo tablespace使用及原理
Undo log是InnoDB MVCC事务特性的重要组成部分,对记录做了变更操作时会产生undo记录,默认存储到系统表空间中,但是从5.6开始,可以使用独立的undo表空间。大多数对记录的变更insert、update、delete。Insert操作在事务提交前只对当前事务可见,因此产生的undo日志可以在事务提交后直接删除(没有对刚插入的数据有可...
MySQL5.6 create table原理分析
MySQL5.6之前的版本DDL是非原子的。也就是说对于复合的DDL,比如DROP TABLE t1, t2;执行过程中如果遇到server crash,有可能出现表t1被DROP掉了,但是t2没有被DROP掉的情况。即便是一条DDL,比如CREATE TABLE t1(a int);也可能在server crash的情况下导致建表不完整,有可能在建表失败的情况下遗留.frm或者.ibd文件。从...
PostgreSQL的几个概念
其逻辑结构最上层是实例,
myloader原理解析
myloader.png
InnoDB update原理解析
update.png
InnoDB delete原理解析
delete.png
InnoDB insert 原理解析
insert.png