From 88364c25e0ec5101d41ab41865c38d487b8fecfd Mon Sep 17 00:00:00 2001 From: zcp100_zcp100 Date: Thu, 13 Oct 2022 15:18:00 +0800 Subject: [PATCH] =?UTF-8?q?=E6=93=8D=E4=BD=9C=E7=B3=BB=E7=BB=9F=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=9D=97=E5=92=8Coracle=E6=95=B0=E6=8D=AE=E5=9D=97?= =?UTF-8?q?=E7=9A=84=E5=85=B3=E7=B3=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...27\347\232\204\345\205\263\347\263\273.md" | 69 +++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 "content/zh/post/zhangcuiping/\346\223\215\344\275\234\347\263\273\347\273\237\346\225\260\346\215\256\345\235\227\345\222\214oracle\346\225\260\346\215\256\345\235\227\347\232\204\345\205\263\347\263\273.md" diff --git "a/content/zh/post/zhangcuiping/\346\223\215\344\275\234\347\263\273\347\273\237\346\225\260\346\215\256\345\235\227\345\222\214oracle\346\225\260\346\215\256\345\235\227\347\232\204\345\205\263\347\263\273.md" "b/content/zh/post/zhangcuiping/\346\223\215\344\275\234\347\263\273\347\273\237\346\225\260\346\215\256\345\235\227\345\222\214oracle\346\225\260\346\215\256\345\235\227\347\232\204\345\205\263\347\263\273.md" new file mode 100644 index 00000000..2c05dd3f --- /dev/null +++ "b/content/zh/post/zhangcuiping/\346\223\215\344\275\234\347\263\273\347\273\237\346\225\260\346\215\256\345\235\227\345\222\214oracle\346\225\260\346\215\256\345\235\227\347\232\204\345\205\263\347\263\273.md" @@ -0,0 +1,69 @@ ++++ + +title = "操作系统数据块和oracle数据块的关系" + +date = "2022-07-14" + +tags = ["数据库入门"] + +archives = "2022-10" + +author = "张翠娉" + +summary = "Bash与shell的区别" + +img = "/zh/post/zhangcuiping/title/img.png" + +times = "10:20" + ++++ + +# 操作系统数据块和oracle数据块的关系 + +## 硬盘级的概念 + +硬盘本身是物理东西,他就是金属盘片上涂了一层磁性介质而已,它如果要按照逻辑的想法去正常工作,最首先的是驱动程序这一块。驱动程序是直接附加在物理硬件上的一层底层软件。驱动程序完成对硬盘的一切操作。 + +虽然驱动程序是操作系统的一部分,但是在理解的时候,驱动程序应该剥离出来,与物理硬件一起被当做一个整体去理解,这才是可以使用的硬盘。而剥去驱动的硬盘只不过是几块金属片而已。 + +对硬盘的读写的最小单位是扇区。这是在驱动层规定的。 + +### 硬盘读写的定位是由3个参数确定的 + +磁头号。这个参数确定盘面,我们知道磁盘内部是多个金属圆盘,每个圆盘有两个面,每个面都对应一个磁头,确定了磁头号就是选择了要进行读写的盘面。 + +柱面。这个参数跟磁道有很深渊源的词,柱面就是确定磁道的。磁道是盘面上一个个的同心圆。 + +扇区。原本我一直以为扇区是一个形状,就是扇形的意思。但是在磁盘读写的时候,扇区又被赋予了其他含义,就是你确定了磁头号和柱面号之后,再去说对对某个扇区进行读写,此时这个扇区已经不是一个扇形,而是一个圆弧。我们现在说一个扇区是512Byte,就是说在这个圆弧上写这么多数据,而不是在这个扇形区域的所有圆弧上一共写512Byte。这个扇区的大小也是驱动层面就定义的。 + +再说下磁盘的性能参数。 + +### 影响磁盘读写效率的参数主要也是3个。 + +寻道时间:磁盘在不进行读写的时候是停在盘面中心上方的。当磁盘进行读写操作时,磁盘臂首先定位到磁道。这个定位到磁道的时间就是寻道时间。 + +转速。磁盘在寻道结束后,接下来就是寻找到要读写的扇区。寻找到要读写的扇区时间就跟转速有关了,转的越快找到扇区的速度越快。 + +数据传输速度。这个参数是单纯进行读写的速度,即一秒钟能读写多少数据,它跟硬盘接口有一定关系,也是硬盘的硬属性。 + +### 再就是I/O。 + +I/O意思为读写,是为一次读写操作。注意这里,把I/O理解为一种操作。对于设备而言,一次I/O操作就是上层向驱动发来读写请求,驱动程序控制磁盘完成读写并将数据提交给上层的过程。所以,磁盘层面上的I/O chunk size是跟请求有关的,请求读取的数据大小决定了它的大小,它并不是一个固定值。 + +## 操作系统级别 + +### 块的概念 + +首先这个操作系统级别严格来说就是文件系统级别了,因为正是操作系统内的文件系统这块负责处理文件的I/O等各种操作。以后就直接说文件系统吧。 + +文件系统不可能针对扇区进行寻址,那样的话需要维护的地址表过于庞大。所以,在文件系统级别,文件系统对自己可寻址的硬盘块进行了重新的定义,这个定义是在格式化的时候确定下来的,它必须是扇区大小的整数倍。这个在文件系统级别定义的硬盘块就是OS space allocation block size。在windows中这个叫做簇,在其他操作系统中叫做block(块)。一个块内只能存储一个文件,比如定义块为2k,那么5k的要占用3个块。 + +### 操作系统级别的I/O + +操作系统的上层是应用,当应用发来I/O请求要读取一个文件时,操作系统收到请求后,首先在文件系统的地址表中找到这个文件对应硬盘上的块地址。然后,对每一个块产生一个I/O请求,发送到驱动模块处理。所以,在操作系统级别,I/O chunk size等于OS block size。 + +## oracle数据库级别 + +### Db_block_size的定义 + +oracle数据库中的文件也是以块为单位进行读写的。块的大小在初始化参数文件中由db_block_size参数指定。Oracle官方建议这个参数的大小等于或整倍数与操作系统中的块大小。这是因为,操作系统是以一个块大小发出一个I/O请求的,所以如果你的oracle块大小是操作系统块大小的1.5倍,比如操作系统块大小为2k,那么oracle每次请求3k的数据,操作系统需要为这3k数据发出两个I/O请求。而实际上,这两个I/O请求最大可读取4k的数据,这种设置可能会增加操作系统的I/O请求数,可能造成操作系统I/O瓶颈。 \ No newline at end of file -- Gitee