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的文件系统。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值