操作系统存储管理和oracle数据库(第三篇)

简介: 在之前的一篇博文中讨论了分页存储,http://blog.itpub.net/23718752/viewspace-1435671/ 今天看了下分段存储,尽管这部分内容都是大学的课程内容,但是感觉好像没学过一样:) 分段式存储管理系统中,会为每个段分配一个连续的分区,而进程中的各个段可以离散地移入内存中不同的分区中,这一点上所说的段和数据库中的段还是有着很大的区别,数据库中的段是可以包含多个分区的,各个段 说起分段就会联想到分页,在这一点上自己的认识也很浅薄,查找了下资料,个人认为下面的这段描述还是很到位的。
在之前的一篇博文中讨论了分页存储,http://blog.itpub.net/23718752/viewspace-1435671/
今天看了下分段存储,尽管这部分内容都是大学的课程内容,但是感觉好像没学过一样:)
分段式存储管理系统中,会为每个段分配一个连续的分区,而进程中的各个段可以离散地移入内存中不同的分区中,这一点上所说的段和数据库中的段还是有着很大的区别,数据库中的段是可以包含多个分区的,各个段
说起分段就会联想到分页,在这一点上自己的认识也很浅薄,查找了下资料,个人认为下面的这段描述还是很到位的。
http://blog.163.com/clevertanglei900@126/blog/static/111352259201121734555459/
分页与分段的主要区别
分页和分段有许多相似之处,比如两者都不要求作业连续存放.但在概念上两者完全不同,主要表现在以下几个方面:
(1)页是信息的物理单位,分页是为了实现非连续分配,以便解决内存碎片问题,或者说分页是由于系统管理的需要.段是信息的逻辑单位,它含有一组意义相对完整的信息,分段的目的是为了更好地实现共享,满足用户的需要.
(2)页的大小固定,由系统确定,将逻辑地址划分为页号和页内地址是由机器硬件实现的.而段的长度却不固定,决定于用户所编写的程序,通常由编译程序在对源程序进行编译时根据信息的性质来划分.
(3)分页的作业地址空间是一维的.分段的地址空间是二维的.

从数据库的角度来看,感觉和数据库中的段概念还是比较类似的。数据库中段包含多个分区。各个分区也可以在不相邻的分区中。
上一个图来说明。
在分段情况下,会要求每个进程的地址空间划分为若干个段,每个段都有自己的段名,对应到下图中就是一个段号。每个段的地地址空间都是从0开始,是一个连续的地址空间,
从地址的存储情况来说,段和页的存储方式都是类似的,都会包含两部分。分段存储中是段号和段内地址,和分页存储中的页号和页内地址类似。



由于一个进程由很多段组成,而且各个段可能被分配在主存中的多个不相邻的分区中,为了将进程的逻辑地址转换为物理地址,需要有一个短标来指出进程的某段放在主存中的位置以及段长。
这一点从数据库层面来说有类似的方面,首先是进程由多个段组成,数据库中可以理解为一个表包含多个段,数据段,索引段,lob段,lob索引段等等。这些都是独立的段,在存储的时候也可能分布在不同的表空间中,所以可能不是一个相邻的分区。
而段的信息在操作系统层面是通过段表来维护的,数据库层面则是通过数据字典,user_segment,user_extents来维护的,每个表包含的段,每个段包含的区都是很详实的。

从分段和分页的优点来说,因为它们涉及的层面和应用方向不同,但是还是有一定的可比性,在段共享方面,分段存储还是很有优势,谁让它是段共享呢。
从操作系统层面举个例子就是一个多用户系统,有一个应用程序可能包含的程序段是100K,数据段是40K,按理说需要40K*40+100k*40=1600+4000=5600k
在分段存储中则需要100k+40k*40=1700k,从这一点上来说还是很大的改进。
从这一点上来说,数据库中的同义词就有点分段存储的味道,每个同义词都可以访问源表,相当于共享了数据,同义词占用的存储空间很小,几乎可以忽略。

可能分段存储和分页存储都各有千秋,但是都是在不断的使用和改进中主键发展起来的,分段存储没有段内碎片,只有外部碎片,简单分段技术也是基于多重分区技术的发展而来。另外简单分页对于用户是不可见的,用户无法了解进程被分页或者分页的细节,但是简单分段对于用户基本是可见的,当进程被交换出内存的时候,对应的页表和段表也需要随着进程一起撤出内存。

当然分页分段方式还在不断的发展中,要不怎么有后续的段页式存储呢,在后续章节继续分享,需要多充充电,补补操作系统方面的东西。理解透了才能准确的类比数据库层面的东西。

目录
相关文章
|
2天前
|
存储 负载均衡 Oracle
|
1天前
|
SQL 监控 Oracle
关系型数据库Oracle并行执行
【7月更文挑战第12天】
25 14
|
1天前
|
SQL Oracle 关系型数据库
|
1天前
|
SQL Oracle 关系型数据库
关系型数据库Oracle并行查询
【7月更文挑战第12天】
26 15
|
2天前
|
SQL 监控 Oracle
关系型数据库Oracle GoldenGate
【7月更文挑战第11天】
8 1
|
2天前
|
SQL Oracle 关系型数据库
关系型数据库Oracle Data Guard
【7月更文挑战第11天】
6 1
|
3天前
|
SQL Oracle 关系型数据库
关系型数据库Oracle并行处理能力
【7月更文挑战第10天】Oracle数据库的并行处理能力主要体现在其并行查询(Parallel Query, PQ)和并行执行(Parallel Execution, PE)功能上。这是Oracle为了提高大规模数据处理效率,特别是在多处理器或多核服务器环境中的性能而设计的功能。 1. **并行查询**:当一个SQL查询被提交给Oracle时,如果查询涉及到大量的数据操作,Oracle可以将这个查询分解成多个子任务,并行地在不同的处理器或核心上执行这些子任务,从而加快查询速度。并行查询可以应用于表扫描、索引扫描、排序、哈希连接等操作。 2. **并行执行**:并行执行是Oracle数据库的
16 2
|
8天前
|
存储 关系型数据库 MySQL
探索MySQL:关系型数据库的基石
MySQL,作为全球最流行的开源关系型数据库管理系统(RDBMS)之一,广泛应用于各种Web应用、企业级应用和数据仓库中
|
6天前
|
关系型数据库 MySQL 网络安全
Mysql 数据库主从复制
在MySQL主从复制环境中,配置了两台虚拟机:主VM拥有IP1,从VM有IP2。主VM的`my.cnf`设置server-id为1,启用二进制日志;从VM设置server-id为2,开启GTID模式。通过`find`命令查找配置文件,编辑`my.cnf`,在主服务器上创建复制用户,记录二进制日志信息,然后锁定表并备份数据。备份文件通过SCP传输到从服务器,恢复数据并配置复制源,启动复制。检查复制状态确认运行正常。最后解锁表,完成主从同步,新用户在从库中自动更新。
872 6
Mysql 数据库主从复制
|
6天前
|
缓存 运维 关系型数据库
数据库容灾 | MySQL MGR与阿里云PolarDB-X Paxos的深度对比
经过深入的技术剖析与性能对比,PolarDB-X DN凭借其自研的X-Paxos协议和一系列优化设计,在性能、正确性、可用性及资源开销等方面展现出对MySQL MGR的多项优势,但MGR在MySQL生态体系内也占据重要地位,但需要考虑备库宕机抖动、跨机房容灾性能波动、稳定性等各种情况,因此如果想用好MGR,必须配备专业的技术和运维团队的支持。 在面对大规模、高并发、高可用性需求时,PolarDB-X存储引擎以其独特的技术优势和优异的性能表现,相比于MGR在开箱即用的场景下,PolarDB-X基于DN的集中式(标准版)在功能和性能都做到了很好的平衡,成为了极具竞争力的数据库解决方案。

推荐镜像

更多