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

在之前的一篇博文中讨论了分页存储,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,从这一点上来说还是很大的改进。
从这一点上来说,数据库中的同义词就有点分段存储的味道,每个同义词都可以访问源表,相当于共享了数据,同义词占用的存储空间很小,几乎可以忽略。

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

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

时间: 2024-09-24 03:36:34

操作系统存储管理和oracle数据库(第三篇)的相关文章

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

在之前分享过第一篇 关于操作系统存储管理和oracle数据库 http://blog.itpub.net/23718752/viewspace-1359146/ 感觉对自己来说是迈出了艰难的一步,操作系统的概念有时候确实感觉枯燥,但是细细品来,都是前车之鉴,很多的方法或者改进都是在碰到很多问题之后总结琢磨出来的,所以从某种程度上来说,操作系统的基础是很多学科的基石,oracle也在不断的改进,从它的发展中也能看到各种改进的痕迹,这一点和操作系统都是异曲同工的效果,这也是我尝试来从操作系统为主线联

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

在上大学的时候,学习操作系统感觉特别枯燥,都是些条条框框的知识点,感觉和实际的关联不大.发现越是工作以后,在工作中越想深入了解,发现操作系统越发的重要.像现在的RHCE市场反响不错,如果想深入地学习,就有很多操作系统的知识需要补补.在实践中结合理论还是不错的一种学习方法.自从接触数据库以后,越来越感觉到很多东西其实都是相通的,操作系统中的很多设计思想在数据库中也有借鉴和改进之处.所谓大道至简,其实就是这个道理.  说到存储管理,是操作系统中式最重要的资源之一.因为任何程序和数据等都需要占有一定的

Oracle数据库 DGbroker三种保护模式的切换_oracle

1.三种保护模式 – Maximum protection 在Maximum protection下, 可以保证从库和主库数据完全一样,做到zero data loss.事务同时在主从两边提交完成,才算事务完成.如果从库宕机或者网络出现问题,主从库不能通讯,主库也立即宕机.在这种方式下,具有最高的保护等级.但是这种模式对主库性能影响很大,要求高速的网络连接. – Maximum availability 在Maximum availability模式下,如果和从库的连接正常,运行方式等同Maxi

oracle数据库学习入门篇

oracle创建表空间及用户 oracle的学习对于像我这样的新手,还是要一步一步来,先把基本概念搞清楚. 我觉得oracle学习可以分为几个部分: 系统基本使用 系统调优 sql语句编写 sql调优 PL/SQL程序开发 以下讨论都是在单主机模式下进行.欢迎讨论指正. 问题1:什么是实例? 一个oracle软件安装完之后,它有一个默认的实例(instance),同时用户还可以在oracle中增加实例. 实例是一个内存结构(SGA+后台进程),每个实例有一组自己的进程组,用来管理运行实例.实例中

Oracle数据库初学者开场篇

    前言: 因为项目原因,近期开始学习Oracle数据库.Oracle是目前最流行的数据库之一,功能强大,性能卓越,相对的学习的难度还是不小.我打算将自己的学习过程记录下来,做个积累,方便自己和其他的学习者. 写在学习前面的话,主要是: 1.把一些常见问题的问答分享一哈; 2.对学习路线的一个安排; 3.预期的结果展望. 1.Oracle数据库学习常见问题问答 Question1: Oracle数据库的书很难看懂,oracle真的很难学习吗? Answer1: Oracle就是一个小软件,它

浅析新建Oracle数据库的三种方法_oracle

1.通过运行Oracle Database Configuration  Assistant 创建.配置.或删除数据库(也可在命令行下输入dbca):2.用命令行的方式建立数据库3.通过运行自定义的批处理脚本(或create_ORACLE_SID.bat(create_ORACLE_SID.sql))来创建.配置.或删除数据库. 详述:1.通过运行Oracle Database Configuration Assistant 创建.配置.或删除数据库:建议不熟悉创建过程的DBA使用该方法,只需要

【性能优化】ORACLE数据库性能优化概述

   为了保证ORACLE数据库运行在最佳的性能状态下,在信息系统开发之前就应该考虑数据库的优化策略.优化策略一般包括服务器操作系统参数调整.ORACLE数据库参数调整.网络性能调整.应用程序SQL语句分析及设计等几个方面,其中应用程序的分析与设计是在信 分析评价ORACLE数据库性能主要有数据库吞吐量.数据库用户响应时间两项指标.数据库吞吐量是指单位时间内数据库完成的SQL语句数目:数据库用户响应时间是指用户从提交SQL语句开始到获得结果的那一段时间.数据库用户响应时间又可以分为系统服务时间和

新建Oracle数据库的3种方法

以下是对新建Oracle数据库的三种方法进行了详细的分析介绍,需要的朋友可以过来参考下   1.通过运行Oracle Database Configuration  Assistant 创建.配置.或删除数据库(也可在命令行下输入dbca): 2.用命令行的方式建立数据库 3.通过运行自定义的批处理脚本(或create_ORACLE_SID.bat(create_ORACLE_SID.sql))来创建.配置.或删除数据库. 详述:1.通过运行Oracle Database Configurati

ORACLE数据库性能优化

实际上,为了保证ORACLE数据库运行在最佳的性能状态下,在http://www.aliyun.com/zixun/aggregation/32730.html">信息系统开发之前就应该考虑数据库的优化策略.优化策略一般包括服务器操作系统参数调整.ORACLE数据库参数调整.网络性能调整.应用程序 SQL语句分析及设计等几个方面,其中应用程序的分析与设计是在信息系统开发之前完成的. 分析评价ORACLE数据库性能主要有数据库吞吐量.数据库用户响应时间两项指标.数据库吞吐量是指单位时间内数据