麒麟v10 上部署 TiDB v5.1.2 生产环境优化实践
1787
2023-06-09
本文讲述了数据库的存储原理,数据的存储结构包括哪些
1.数据存取
在数据库管理系统中,数据的存取过程为:
1.应用程序通过 DML向 DBMS 发出存取请求,如 SELECT 语句:
2.对命令进行语法检查,正确后检查语义和用户权限(通过数据字典 DD),并决定是否接收:3.执行查询优化,将命令转换成一串单记录的存取操作序列;
4.执行存取操作序列;
5.在缓冲区中找记录,若找到转 10,否则转 6:
6.查看存储模式,决定从哪一个文件,用什么方式读取物理记录
7.根据 6 的结果向操作系统 (OS) 发出读取记录的命令
8.0S 执行该命令,并读取记录数据;
9.在 OS 控制下,将读出的记录送入系统缓冲区,
10.RDBMS 根据查询命令和 DD 的内容到处用户所要读取的记录格式
11.RDBMS 将数据从系统缓冲区中送入用户工作区:
12.RDBMS 将执行状态信息 (成功或失败) 返回给应用程序
13.应用程序对工作区中读出的数据进行相应处理。
2.数据库的存储
数据库用文件的方式来存储数据。文件在逻辑上可看作是记录的序列,物理上这些记录被映射到磁盘块中。
数据删除的处理
当一条记录被删除时,可以把紧跟其后的记录移到被删记录的位置,以此类推,直到被删记录后面的每一条记录都向前做了移动。
但这种方法需要移动大量的记录,并不理想。所以可以暂时让被删除记录的空间一直空着,等待随后插入的记录使用这个空间。但仅在被删记录上做一个删除标记是不够的,因为当插入操作执行时,要找到这个可用空间比较困难,解决方法是引入额外的结构。
在文件的开始处,分配一定数量的学节作为文件头,文件头中存储有关文件的各种信息,也记录了第一条被删除的记录,再在第一条被出除记录的后面记录第二条被删除记录,这样就形成了一条链表,称为空闲链表。
数据的存储方法
文件中存储记录的常用方法有:堆文件组织,顺序文件组织,多表聚集文件组织,B+ 树文件组织和散列文件组织(后两种多用于索引记录) 等。
1.堆文件组织
条记录可以放在文件中的任何地方,只要那个地方有空间存放记录。也就是说,文件中的记录是没有顺序的,是堆积来的。
2.顺序文件组织
顺序文件是为了高效地按某个搜索码值的顺序有序处理记录而设计的(搜索码是一个属性或属性集合,他不一定是主码甚至是超码)。为了快速地按搜索码值得顺序获取记录,通常通过指针将文件块逻辑上有序地连接起来,每个文件块的指针指向搜索码值而房的下一个文件块(链表形式)。同时,为了减少顺序文件处理中文件块的访问数量,在物理上按搜索码值的顺序或者尽可能的接近搜索码值的顺序存储文件块。
顺序文件组织对于那些按搜索码值有序的特定查询非常有效,然而在插入和删除记录时为了维护记录的物理顺序却十分困难,改进操作:
插入操作:在文件中按搜索码值定位到待插入记录的文件块。
如果文件块 A 中有空闲空间,就在该文件中定位插入记录的位置,并插入新的记录;
否则申请一个溢出文件块,将文件块 A 中的记录平分一半到溢出文件块中,并将待插入记录插入到文件块 A 或溢出文件块中再调整指针,使其能按搜索码值的顺序把文件块连接起来.
删除操作:在文件中按搜索码值定位待删除记录所在的文件块。在文件块 A 中定位待删除记录并实施删除(需要在文件块内向前移动删除记录之后的原有记录,使文件块内的空闲空间位于块尾) 。如果删除后记录太少
可考虑将文件块 A 的记录移到文件块所连接的文件块中,并释放 A的空间。
可考虑从文件块 A 所连接的文件块中移出一部分记录到 A 中
3.多表聚集文件组织
通常,在小型数据库管理系统中,每个关系的所有记录存储在一个单独的定长记录的文件中,这样可以充分利用操作系统所提供的文件系统功能,简化 DBMS 的设计
然而,很多大型数据库管理系统在文件管理方面并不直接依赖操作系统,而是让操作系统分配给 DBMS 一个大的操作系统文件,DBMS将所有关系存储在这个文件中,并且自己管理这个文件。
多表聚集文件组织是一种在每一个文件块中存储两个或多个关系的相关记录的文件结构。这种结构将多个关系的元组(行)混合在一起聚集存储,从而支持高效的连接运算。
例
当 Student 表和 Score 表根据 studentNo 进行连接运算时,DBMS 会将 Score 表中所有 studentNo 值相同的元组(行)聚集地存储在 Student 表中对应元组的附近。
当读取 Student表中的一个元组t(行),包含元组的整个文件块已经从磁盘中读取到主存储器中,由于 Scre 关系中所有与元组
具有相同 studenNo 值得元组已聚集在元组t附近,所以已速入主存中包含元组t的文件块中也将包含 Score 表中与元组t相匹型的元组。
数据的存储结构包括:1、顺序存储结构,是借助数据元素之间的相对位置来表示元素之间的逻辑结构;2、链式存储结构,是借助数据元素之间的元素的指针表示数组元素的逻辑结构;3、散列存储结构,即顺序存储+算列;4、索引存储结构,即顺序存储+索引。
4种数据存储结构:
1、顺序存储结构
顺序存储结构是借助数据元素之间的相对位置来表示元素之间的逻辑结构。(vector动态数组、 deque双端队列、stack栈容器、queue队列容器)
顺序存储方法是把逻辑上相邻的结点存储在物理位置相邻的存储单元里,结点间的逻辑关系由存储单元的邻接关系来体现,由此得到的存储表示称为顺序存储结构。顺序存储结构是一种最基本的存储表示方法,通常借助于程序设计语言中的数组来实现。
2、链式存储结构
链式存储结构是借助数据元素之间的元素的指针表示数组元素的逻辑结构。
链式存储结构不要求逻辑上相邻的结点在物理位置上亦相邻,结点间的逻辑关系是由附加的指针字段表示的。由此得到的存储表示称为链式存储结构,链式存储结构通常借助于程序设计语言中的指针类型来实现。
3、散列存储结构
顺序存储+算列
4、索引存储结构
顺序存储+索引
上文就是小编为大家整理的数据库的存储原理,数据的存储结构包括哪些?
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。