
内部存储
文章平均质量分 90
Hehuyi_In
Oracle, PostgreSQL DBA,MySQL学习中
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
postgresql源码学习(61)—— FSM的作用与原理
FSM的空间管理中,没有细粒度到数据页的每个比特,而是将最小单元定义为页大小(BLCKSZ)的256分之一,也就是说,在默认8KB数据页的大小下,从FSM的角度观察,它有256个单元。堆中的每个叶子节点都对应一个数据页,叶子节点上记录的是数据页的可用单元的个数,例如,上图中P1中当前包含了6个空闲单元。每个非叶子节点上的记录的则是它的子节点中较大的可用数目。这样一个大根堆的结构,在实际存储的时候是以以为数组的形式保存的,利用完全二叉树中父子节点的关系来进行堆节点的访问。常用的两个操作:查找和更新。原创 2025-03-10 09:33:49 · 2426 阅读 · 0 评论 -
postgresql源码学习(60)—— VFD的作用及机制
postgresql VFD作用、数据结构及实现原理原创 2025-03-02 14:09:13 · 2704 阅读 · 0 评论 -
postgresql源码学习(59)—— 磁盘管理器 SMGR
PostgreSQL 的磁盘管理器(Storage Manager,简称 SMGR)是数据库系统中负责管理底层存储的核心模块。磁盘管理器并非直接操作磁盘上的文件,而是通过VFD(虚拟文件描述符,将在后续学习)实现。抽象存储层,解耦存储逻辑SMGR 提供了一层抽象接口,屏蔽了不同存储类型(如表、索引、TOAST 表等)的底层细节,使上层模块(如执行器、缓冲池)无需关心具体的存储实现。管理文件操作SMGR 负责文件的创建、删除、扩展、截断等操作,确保数据文件能够高效地存储和访问。支持多种存储类型。原创 2025-02-12 00:04:12 · 2043 阅读 · 0 评论 -
postgresql源码学习(55)—— 列中的NULL值是如何存储和判断的?
在pg元组头数据中,有一个t_bits数组,用于存储空值位图。当元组中没有null值的时候,t_bits可以被认为是空的,当元组有null值的列时,t_bits使用一个bit来表示列是否为null。可以看到,表中已删除列会被视为空列。当表中有许多列时,删除列将为每条记录生成额外的t_bit,这将导致存储膨胀。100000,注意实际存储的时候值是颠倒的,所以是000001。为了看t_bits数组更清晰,我们加多几列。10000,颠倒后为00001。,所以第一列非空,与实际一致。判断字段是否为空代码在。原创 2023-05-13 21:53:04 · 4073 阅读 · 1 评论 -
postgresql_internals-14 学习笔记(四)TOAST 超尺寸字段存储技术
pg中的每个行只能存在一个page里,不能跨page存储。因此对于一些非常长的行,就需要使用到TOAST(The OverSized Attribute Storage Technique,超尺寸字段存储技术)将大字段值压缩或者拆分为多行到单独表存储。对于用户来说,这是完全透明的。原创 2022-12-17 21:05:04 · 2380 阅读 · 0 评论 -
postgresql源码学习(二)—— 事务块状态转换
一、 简单介绍事务块:begin标志事务块开始,commit(end)、rollback(abort) 等标志事务块结束事务块的各种状态定义在xact.c文件typedef enum TBlockState 部分,注意事务块的状态和事务的状态是不一样的(后篇会学习事务的状态)typedef enum TBlockState{ /* not-in-transaction-block states */ TBLOCK_DEFAULT, /* idle */ TBLOCK_STARTED,原创 2022-05-01 11:27:06 · 3882 阅读 · 0 评论 -
pg事务篇(三)—— 事务状态与Hint Bits(t_infomask)
一、 引入背景前篇(https://blog.youkuaiyun.com/Hehuyi_In/article/details/102868231)提到,clog日志记录了事务的四种状态。当需要获取事务状态时,pg可以通过调用三个内部函数——TransactionIdIsInProcess、TransactionIdDidCommit和TransactionIdDidAbort,读取CLOG返回所请求...原创 2019-11-10 18:27:16 · 3660 阅读 · 0 评论 -
DBA手记:X$KTUXE与Oracle的死事务恢复
X$KTUXE是数据库中非常神秘的一个对象表,当然其本质上是C定义的一个结构体,在数据库中可以看到其结构:SQL> desc x$ktuxeNameNull?Type----------------------------------------- -------- -----------------ADDR...转载 2020-08-07 17:19:26 · 2927 阅读 · 2 评论 -
SQL Server 存储(8/8):理解数据文件结构
这段时间谈了很多页,现在我们可以看下这些页在数据文件里是如何组织的。我们都已经知道,SQL Server把数据文件分成8k的页,页是IO的最小操作单位。SQL Server把数据文件里的第1页标记为0。在所有数据库文件里,前面的9个页面(到页号8)都是如下显示一样的顺序,第10个页(页号9)是启动页,用来保存数据库的元数据信息。第1个页,页号0,是文件头(page type 15)。它保存着文件头信息。每个数据文件只有一个文件头页,而且是第0页的位置。文件头页里保存着数据文件信息,例如文..转载 2020-06-16 01:15:28 · 1985 阅读 · 0 评论 -
如何在SQL Server里进行页级别的恢复
今天我将讲下页的一些限制,还有为什么你会喜欢这些限制,同时也会讨厌这些限制。正如你在第2周学到的,数据页始终是8kb 的大小,而且你只能在上面存储8060 bytes。你的记录大小指示你在一个页里可以存储多少记录。当你与像CHAR,INT,DATETIME等定长类型数据类型打交道时,你会发现SQL Server有记录长度不能超过8060 bytes长度(包含7 bytes 的内部行开销)的限制。页面限制——好的一面当你的表少于8列时,你需要(为每条记录)增加额外7 bytes 的内部行开销。对每转载 2020-06-26 12:29:58 · 1946 阅读 · 0 评论 -
information_schema 系统库 —— 简介与组成对象
系列文章参考自《MySQL 性能优化金字塔法则》,删除了书里重复说明和过于复杂的一些解释,完整版请参考原书。information_schema 比 sys系统库又要简单一些,不需要另外配置,只需要了解里面有哪些表,能查询哪些信息即可。一、 什么是information_schema1. 简介information_schema提供对数据库元数据、统计信息、以及有关MySQL...原创 2020-04-05 13:57:56 · 2470 阅读 · 0 评论 -
浅谈sqlserver中的快照
一、什么是快照数据库快照是 SQL Server 数据库(源数据库)的只读静态视图。换句话说,快照可以理解为一个只读的数据库。快照通常用于以下场景:提供指定时间的静态报表查询服务 用于恢复数据库,相比普通备份速度大大提高 与数据库镜像结合使用,提供读写分离 作为测试环境或大量数据变更前的备份二、 快照的原理数据库快照在页级运行。在第一次修改源数据库页之前,先将原...转载 2020-01-19 14:44:48 · 3330 阅读 · 0 评论 -
sqlserver drop image类型的列不释放空间问题处理
一、 背景drop了sqlserver一个大表image类型的列,感觉作为一个ddl语句应该在drop之后会释放空间,但drop后查询表发现并没有缩小,也不像oracle删除表空间中的表后可以复用原空间,插入数据之后数据文件还在不断增大。二、如何让sqlserver drop列后释放空间法一:重建聚集索引(推荐)1)重建聚集索引ALTER INDEX PK_Te...原创 2020-01-16 17:08:26 · 2491 阅读 · 0 评论 -
sqlserver 堆表数据删除、修改及空间重用
一、 delete对数据页内容的影响被删记录所在数据页中对应的偏移量会被重置为0 被删记录所在数据页页头中记录空闲空间大小会相应增加(m_freeCnt,用DBCC PAGE命令看),但数据页中空闲空间不会合并 PFS数据页中对应被删记录的数据页空间使用率数据一般会变化 对应此堆表的IAM、GAM、SGAM数据页内容不变二、 被删数据所占空间的重用新加记录会优先占用数据页中现有空闲...原创 2019-05-30 17:01:00 · 2553 阅读 · 3 评论 -
SQL Server 存储(2/8):理解数据记录结构
以下来自Woodytu的sqlserver存储系列,一共八篇,记录下来学习https://www.cnblogs.com/woodytu/p/4486193.htmlSQL Server 存储(2/8):理解数据记录结构在SQL Server :理解数据页结构我们提到每条记录都有至少7 bytes的系统行开销,那这7 bytes行开销到底是一个什么样的结构,我们一起来看下。数...转载 2019-05-06 18:37:51 · 2108 阅读 · 1 评论 -
SQL Server 存储(1/8):理解数据页结构
以下来自Woodytu的sqlserver存储系列,一共八篇,记录下来学习https://www.cnblogs.com/woodytu/p/4484328.htmlSQL Server 存储(1/8):理解数据页结构SQL Server用8KB的页来存储数据,并且在SQL Server里磁盘 I/O 操作在页级执行。SQL Server把数据记录存在数据页(Data Page)...转载 2019-05-06 18:36:46 · 3424 阅读 · 1 评论 -
DBCC命令
DBCC在sqlserver 2000后的含义为Database Console Commands,即数据库控制台命令。其中最常用的命令有以下几个:DBCC HELP:得到DBCC命令帮助信息DBCC EXTENTINFO:查看指定对象分配到的区信息(非公开命令)DBCC IND:查看指定对象分配到的数据页信息(非公开命令)DBCC PAGE:以不同格式导出指定数据页中的数据(非公...原创 2019-05-06 18:33:10 · 4111 阅读 · 0 评论