linux裸设备文件系统,关于裸设备,文件系统,CIO/DIO
我们在创建DMS表空间容器时可以选择使用裸设备或文件系统,下面我们来看看两者的区别。我们知道,内存的读写效率比磁盘高近万倍,因此数据库通常会在内存中开辟一片区域,称为Buffer Pool,使数据的读写尽量在这部分内存中完成。同样地,在文件系统中,操作系统为了提高读写效率,也会为文件系统开辟一块Buffer用于读写数据的缓存。这样,数据库中的数据会被缓存两次。为了避免操作系统的这次缓存,我们可以采用裸设备作为数据文件的存储设备。裸设备,也称为裸分区(Raw Partiton),是一个没有被加载(Mount)到操作系统的文件系统上的磁盘分区,它通过字符设备驱动来访问。裸设备的I/O读写不由操作系统控制,而是由应用程序(如数据库)直接控制。
裸设备的优点:
由于屏蔽了文件系统缓冲器而进行直接读写,从而具有更好的性能。对硬盘的直接读写就意味着取消了硬盘与文件系统的同步需求。这一点对于纯OLTP系统非常有用,因为在这种系统中,读写的随机性非常大以至于一旦数据被读写之后,它们在今后较长的一段时间内不会得到再次使用。除了OLTP,裸设备还能够从以下几个方面改善DSS(决策支持系统)应用程序的性能:
排序:对于DSS环境中大量存在的排序需求,裸设备所提供的直接写功能也非常有用,因为对临时表空间的写动作速度更快。
顺序访问:裸设备非常适合于顺序I/O动作。同样地,DSS中常见的顺序I/O(表/索引的全表扫描)使得裸设备更加适用于这种应用程序。
直接读写,不需要经过操作系统级的缓存。节约了内存资源,在一定程度上避免了内存的竞争。
避免了操作系统的cache预读功能,减少了I/O。
采用裸设备避免了文件系统的开销。比如维护I-node、空闲块等。
裸设备的缺点:
裸设备的空间大小管理不灵活。在放置裸设备的时候,需要预先规划好裸设备上的空间使用。还应当保留一部分裸设备以应付突发情况。这也是对空间的浪费。
需要操作系统root用户干预,因为裸设备的创建、更改权限、扩展大小等都需要root用户完成,增加了管理的成本。
文件系统的优点:
文件系统易于管理和维护,如文件的基本管理以及安全和备份等。
文件系统的缺点:
性能比不上裸设备。
我们在选择表空间容器时,从性能上考虑尽量采用裸设备,但是如果我们使用自动存储方式创建数据库和表空间,这种方式不支持裸设备。或者我们为了便于管理而采用文件系统方式。这时候我们采用合理设置文件系统相关选项和表空间的相关选项。下面我们来讲解文件系统方面应该注意的事项。
CIO/DIO
直接 I/O(DIO)由于可以绕过在文件系统级别进行高速缓存,从而改进内存性能。此过程可减少CPU开销并使得更多的内存可用于数据库实例。并发I/O(CIO)具有DIO的优点,并且还可以消除串行化写访问权。与使用文件系统缓冲I/O相比,在具有大量事务处理工作负载和回滚时CIO/DIO机制可增大吞吐量。
DIO和CIO在HP-UX、Solaris、Linux和Windows操作系统最新版本上都受支持。
关键字NO FILE SYSTEM CACHING和FILE SYSTEM CACHING是CREATE和ALTER TABLESPACESQL语句的一部分,允许您指定将对每个表空间使用DIO还是CIO。当 NO FILE SYSTEM CACHING有效时,只要可能,数据库管理器都会尝试使用"并发 I/O"。在不支持CIO的情况下(例如,当使用了JFS 时),将取而代之使用DIO。
建议在表空间级别启用或禁用UNIX、Linux和Windows上的非缓冲I/O。这将允许您在特定表空间上启用或禁用非缓冲I/O,同时避免数据库的物理布局中的任何依赖性。它还允许数据库管理器确定每个文件最适合使用哪种I/O,缓冲的还是非缓冲的。
NO FILE SYSTEM CACHING子句用于启用非缓冲I/O,从而禁用特定表空间的文件高速缓存。一旦启用了非缓冲 I/O,数据库管理器就会根据平台自动确定将使用直接 I/O还是并发I/O。由于使用CIO可以提高性能,所以只要支持CIO,数据库管理器就会使用它。
FILE SYSTEM CACHING选项并不是总没有好处,例如当一个应用程序检索LOB或LONG数据时,这些大对象数据不能经过数据库缓冲池,每次应用程序需要其中一个页时,数据库管理器必须从磁盘对其进行直接读取。但是,如果LOB或LONG数据存储在SMS或DMS文件容器中,文件系统高速缓存可提供缓冲,因此也就改善了性能。
未在CREATE TABLESPACE语句或CREATE DATABASE命令中指定此属性时,数据库管理器将使用基于平台和文件系统类型的默认行为处理请求。查看是否启用FILE SYSTEM CACHING属性,可以使用:
GET SNAPSHOT FOR TABLESPACES命令(此命令会在第12章讲解)
例如,以下是DB2 GET SNAPSHOT FOR TABLEPSACES ON SAPMPLE输出:表空间名 = USERSPACE1
表标识 = 2
表空间类型 =数据库管理的空间
表空间内容类型 = 所有永久数据。大型表空间。
表空间页大小(以字节计) = 4096
表空间扩展数据块大小(以页计) = 32
已启用自动预取大小 = Yes
当前正在使用的缓冲池标识 = 1
下一次启动的缓冲池标识 = 1
使用自动存储器 = Yes
已启用自动调整大小 = Yes
文件系统高速缓存 =No
表空间状态 = 0x'00000000'
…………………………………………略……………………………….
db2pd -db sample -tablespaces命令(此命令会在第12章讲解)
D:\Program Files\IBM\SQLLIB\BIN>db2pd -db sample -tablespaces
Database Partition 0 -- Database SAMPLE -- Active -- Up 0 days 00:03:20
Tablespace Configuration:
Address Id Type Content PageSz ExtentSz Auto Prefetch BufID BufIDDisk FSCNumCntrs MaxStripe LastConsecPg Name
0x7F90C230 0 DMS Regular 8192 4 Yes 4 1 1 Off1 0 3 SYSCATSPACE
0x7F90CA20 1 SMS SysTmp 8192 32 Yes 32 1 1 On
1 0 31 TEMPSPACE1
0x7F90F1E0 2 DMS Large 8192 32 Yes 32 1 1 Off
1 0 31 USERSPACE1
0x7F90F9D0 3 DMS Large 8192 32 Yes 32 1 1 Off
1 0 31 IBMDB2SAMPLEREL
0x7EF22240 4 DMS Large 8192 4 Yes 4 1 1 Off1 0 3 SYSTOOLSPACE
0x7EF22A30 5 DMS Large 8192 32 Yes 32 1 1 Off1 0 31 IBMDB2SAMPLEXML
0x7EF23220 6 SMS UsrTmp 8192 4 Yes 4 1 1 On
1 0 3 SYSTOOLSTMPSPACE
db2look -d -l命令(此命令会在第13章讲解)
下面我们举几个关于文件缓存的例子:
例3-1 假定数据库和所有相关表空间容器位于AIX JFS文件系统上,并且发出了以下语句:
DB2 CREATE TABLESPACE DATA_SPACE MANAGED BY DATABASE USING (file '/db2data1' 800M)
在先前版本中,如果未指定该属性,那么数据库管理器将使用缓冲I/O(FILE SYSTEM CACHING)作为I/O机制;对于版本9.5,数据库管理器使用NO FILE SYSTEM CACHING。
例3-2 在以下语句中,NO FILE SYSTEM CACHING子句指示对于此特定表空间,文件系统级高速缓存将OFF。CREATETABLESPACEtablespacename...NOFILE SYSTEM CACHING
例3-3 以下语句对现有表空间禁用文件系统级高速缓存:ALTERTABLESPACEtablespacename...NOFILE SYSTEM CACHING
例3-4 以下语句对现有表空间启用文件系统级高速缓存:ALTERTABLESPACEtablespacename... FILE SYSTEM CACHING
经过上面的讲解,建议创建表空间时,表空间的容器采用裸设备或支持并发I/O或直接I/O的文件系统。
linux裸设备文件系统,关于裸设备,文件系统,CIO/DIO相关推荐
- Linux内核:一文读懂文件系统、缓冲区高速缓存和块设备、超级块
目录 前言 第一部分 Linux文件系统堆栈 VFS数据结构 文件系统初始化顺序 Dentries 打开文件-说起来容易做起来难! 虚拟文件系统 前言 第二部分 Linux文件系统堆栈 当我们键入&q ...
- VMware安装Linux,出现错误-未找到要在其中创建新文件系统的有效设备
问题: VMware里安装RedHat Linux时出现:出现错误-未找到要在其中创建新文件系统的有效设备.请检查您的硬件以找到问题的起因. 原因: VM默认硬盘是SCSI硬盘(安装VMware安装的 ...
- Linux设备模型——设备驱动模型和sysfs文件系统解读笔记
Linux设备模型--设备驱动模型和sysfs文件系统解读笔记 原文:https://blog.csdn.net/yj4231/article/details/7799245 将对Linux系统中的s ...
- linux查看usb设备卷标,Linux findfs命令实例讲解(查找指定卷标或者UUID的文件系统对应的设备文件)...
findfs 查找指定卷标或者UUID的文件系统对应的设备文件.findfs将搜索系统中的磁盘,寻找具有标签匹配标签或与UUID相等的文件系统.如果找到文件系统,文件系统的设备名称将打印在stdout ...
- Linux自学之旅-基础命令(mount挂载FAT32文件系统U盘设备文件)
mount挂载U盘设备文件 文章目录 前言 一.前言 二.挂载使用 前言 1.上一节我们讲述了mount对光盘设备文件进行一个挂载,还没看的可点击下方链接进入观看:mount挂载光盘设备文件 2.这一 ...
- Linux内核编程12期:设备树overlay与ConfigFS文件系统
在嵌入式Linux下,设备树(device tree)用来描述硬件平台的各种资源,Linux内核在启动过程中,会解析设备树,获取各种硬件资源来初始化硬件. 设备树的overlay功能是指可以在系统运行 ...
- Linux文件系统(文件系统类型、设备文件、常用命令、U盘与光盘挂载)
Linux文件系统(文件系统类型.设备文件.常用命令.U盘与光盘挂载) 本篇文章是Linux文件系统整块集合,包含了Linux文件系统介绍.设备文件介绍.常用文件系统命令(查看.修复与配置).挂载 ...
- 设备驱动,字符设备驱动、(总线)设备驱动模型、sysfs文件系统、平台设备驱动
以下内容转载于微信公众号:嵌入式企鹅圈.如有侵权,请告知删除. 学习Linux设备驱动开发的过程中自然会遇到字符设备驱动.平台设备驱动.设备驱动模型和sysfs等相关概念和技术. 对于初学者来说会非常 ...
- VMware 安装 Linux---错误-未找到要在其中创建新文件系统的有效设备
今天安装linux时一直在报未找到要在其中创建新文件系统的有效设备的...错误,于是在网上查了些解决方法,转载一个有效的,笔记一下: 问题: VMware里安装RedHat Linux时出现:出现错误 ...
最新文章
- C++ Openssl AES GCM 128bits代码示例,可wins10的visual studio 2017 中直接运行
- 【Android 应用开发】LruCache 简介
- Nginx 实现AJAX跨域请求
- android与html注册登录,Android登录注册源码
- Django内置的用户认证
- AT2667-[AGC017D]Game on Tree【SG函数】
- 这有8个小秘诀,让你更懂CSS!
- 字节跳动2019春招笔试——找零(JavaScript)
- tensorflow之成品模型
- UML类图(Class Diagram)中类与类之间的关系及表示方式
- 关于CAN APE的使用一些记录
- 【python】80行代码实现压缩包密码破解软件,支持zip和rar
- 在angular中实现图片/视频的预览
- easy connect显示‘网络请求异常请稍后重试’
- paperswithcode使用方法
- 富士康c语言试卷答案,富士康笔试真题分享
- 10_Rapidly Exploring Random Trees_宾夕法尼亚大学机器人运动规划专项课程【学习笔记】
- UI设计思想和工具_1
- URP——着色器和材质——灯光着色器 Lit
- FOURCC四字符码对照表
热门文章
- 论文阅读笔记-场景图谱-图谱生成:Scene Graph Generation from Objects, Phrases and Region Captions
- 安装k8s时,报CA证书加载失败的错误
- c语言---c语言中的斐波那契数列程序
- RocketMQ延迟消息的代码实战及原理分析
- sql2000的安装以及sp4的升级
- python输出箭头代码_OS X和代码在Python中的“向上箭头”历史记录.InteractiveConsole...
- NLP第四范式:Prompt概述【Pre-train,Prompt(提示),Predict】【刘鹏飞】
- appium用list定位相册里的图片
- 2020机修钳工(中级)考试及机修钳工(中级)复审模拟考试
- Embodied Question Answering导读