我们在创建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相关推荐

  1. Linux内核:一文读懂文件系统、缓冲区高速缓存和块设备、超级块

    目录 前言 第一部分 Linux文件系统堆栈 VFS数据结构 文件系统初始化顺序 Dentries 打开文件-说起来容易做起来难! 虚拟文件系统 前言 第二部分 Linux文件系统堆栈 当我们键入&q ...

  2. VMware安装Linux,出现错误-未找到要在其中创建新文件系统的有效设备

    问题: VMware里安装RedHat Linux时出现:出现错误-未找到要在其中创建新文件系统的有效设备.请检查您的硬件以找到问题的起因. 原因: VM默认硬盘是SCSI硬盘(安装VMware安装的 ...

  3. Linux设备模型——设备驱动模型和sysfs文件系统解读笔记

    Linux设备模型--设备驱动模型和sysfs文件系统解读笔记 原文:https://blog.csdn.net/yj4231/article/details/7799245 将对Linux系统中的s ...

  4. linux查看usb设备卷标,Linux findfs命令实例讲解(查找指定卷标或者UUID的文件系统对应的设备文件)...

    findfs 查找指定卷标或者UUID的文件系统对应的设备文件.findfs将搜索系统中的磁盘,寻找具有标签匹配标签或与UUID相等的文件系统.如果找到文件系统,文件系统的设备名称将打印在stdout ...

  5. Linux自学之旅-基础命令(mount挂载FAT32文件系统U盘设备文件)

    mount挂载U盘设备文件 文章目录 前言 一.前言 二.挂载使用 前言 1.上一节我们讲述了mount对光盘设备文件进行一个挂载,还没看的可点击下方链接进入观看:mount挂载光盘设备文件 2.这一 ...

  6. Linux内核编程12期:设备树overlay与ConfigFS文件系统

    在嵌入式Linux下,设备树(device tree)用来描述硬件平台的各种资源,Linux内核在启动过程中,会解析设备树,获取各种硬件资源来初始化硬件. 设备树的overlay功能是指可以在系统运行 ...

  7. Linux文件系统(文件系统类型、设备文件、常用命令、U盘与光盘挂载)

    Linux文件系统(文件系统类型.设备文件.常用命令.U盘与光盘挂载)   本篇文章是Linux文件系统整块集合,包含了Linux文件系统介绍.设备文件介绍.常用文件系统命令(查看.修复与配置).挂载 ...

  8. 设备驱动,字符设备驱动、(总线)设备驱动模型、sysfs文件系统、平台设备驱动

    以下内容转载于微信公众号:嵌入式企鹅圈.如有侵权,请告知删除. 学习Linux设备驱动开发的过程中自然会遇到字符设备驱动.平台设备驱动.设备驱动模型和sysfs等相关概念和技术. 对于初学者来说会非常 ...

  9. VMware 安装 Linux---错误-未找到要在其中创建新文件系统的有效设备

    今天安装linux时一直在报未找到要在其中创建新文件系统的有效设备的...错误,于是在网上查了些解决方法,转载一个有效的,笔记一下: 问题: VMware里安装RedHat Linux时出现:出现错误 ...

最新文章

  1. C++ Openssl AES GCM 128bits代码示例,可wins10的visual studio 2017 中直接运行
  2. 【Android 应用开发】LruCache 简介
  3. Nginx 实现AJAX跨域请求
  4. android与html注册登录,Android登录注册源码
  5. Django内置的用户认证
  6. AT2667-[AGC017D]Game on Tree【SG函数】
  7. 这有8个小秘诀,让你更懂CSS!
  8. 字节跳动2019春招笔试——找零(JavaScript)
  9. tensorflow之成品模型
  10. UML类图(Class Diagram)中类与类之间的关系及表示方式
  11. 关于CAN APE的使用一些记录
  12. 【python】80行代码实现压缩包密码破解软件,支持zip和rar
  13. 在angular中实现图片/视频的预览
  14. easy connect显示‘网络请求异常请稍后重试’
  15. paperswithcode使用方法
  16. 富士康c语言试卷答案,富士康笔试真题分享
  17. 10_Rapidly Exploring Random Trees_宾夕法尼亚大学机器人运动规划专项课程【学习笔记】
  18. UI设计思想和工具_1
  19. URP——着色器和材质——灯光着色器 Lit
  20. FOURCC四字符码对照表

热门文章

  1. 论文阅读笔记-场景图谱-图谱生成:Scene Graph Generation from Objects, Phrases and Region Captions
  2. 安装k8s时,报CA证书加载失败的错误
  3. c语言---c语言中的斐波那契数列程序
  4. RocketMQ延迟消息的代码实战及原理分析
  5. sql2000的安装以及sp4的升级
  6. python输出箭头代码_OS X和代码在Python中的“向上箭头”历史记录.InteractiveConsole...
  7. NLP第四范式:Prompt概述【Pre-train,Prompt(提示),Predict】【刘鹏飞】
  8. appium用list定位相册里的图片
  9. 2020机修钳工(中级)考试及机修钳工(中级)复审模拟考试
  10. Embodied Question Answering导读