SQL SERVER中如何使用裸设备

这篇文章也适合ORACLE DBA和MYSQL DBA 阅读

裸设备适用于Linux和Windows

在ORACLE和MYSQL里也是支持裸设备的!!

介绍

大家看到这个标题一定是一头雾水吧,裸设备??裸体的设备??太邪恶了o(∩_∩)o

裸设备:有人叫raw disk,也有人叫raw device

百度一下:

http://baike.baidu.com/link?url=ran4ytgFFrsCmAywsOLa0uQczn8rxsEwWXF5WjdTNLx3Sv9Ng2Y1ScJsLT8k7CO7G1gOsiuq3EILSVhbYsgsSa

裸设备(raw device),也叫裸分区(原始分区),是一种没有经过格式化,不被Unix通过文件系统来读取的特殊字符设备。

它由应用程序负责对它进行读写操作。不经过文件系统的缓冲

它是不被操作系统直接管理的设备。

这种设备少了操作系统这一层,I/O效率更高。不少数据库都能通过使用裸设备作为存储介质来提高I/O效率。

因为使用裸设备避免了再经过操作系统这一层,数据直接从Disk到数据库进行传输,所以使用裸设备对于读写频繁的数据库应用来说,可以极大地提高数据库系统的性能。

当然,这是以磁盘的 I/O 非常大,磁盘I/O已经称为系统瓶颈的情况下才成立。

如果磁盘读写确实非常频繁,以至于磁盘读写成为系统瓶颈的情况成立,那么采用裸设备确实可以大大提高性能

在宋沄剑的文章里《SQL Server数据库损坏、检测以及简单的修复办法》

在这个过程中,数据脏页由内存写入持久化的IO子系统,在此期间,按照IO子系统的不同,数据可能经过这几层:

Windows(写数据一定调用的是WINDOWS API) Windows底层的中间层(杀毒软件,磁盘加密系统)

RAID控制器(IO子系统做了RAID) 磁盘或SSD等持久化存储器

其实如果使用了裸设备,数据是不需要经过I/O子系统的,直接写入到文件中

根据MSDN说一下裸设备在SQLSERVER的限制

Using Raw Partitions

SQLSERVER2000支持数据库创建在使用raw格式的分区。raw格式分区是一种没有格式化的文件系统,就像FAT文件系统和NTFS文件系统。

在某些情况下,数据库创建在raw格式的分区能产生重要的性能提升相对于NTFS或FAT文件系统。

然而,大多数情况下,还是建议使用NTFS或FAT分区来存放数据库文件

当你把数据库创建在raw分区下的时候,你不能指定数据库数据文件的物理名字;你只能够指定数据库数据文件要存放的那个磁盘的驱动器号

如果你使用Windows2000服务器版,你可以挂载一个使用raw文件格式的驱动器。当你在一个空文件夹挂载一个本地驱动器的时候,

Windows2000会分配一个磁盘路径,这样会比只分配一个驱动器号好。

挂载驱动器不受26个盘符的限制(分区超过26个就不能再建立分区了),因此,你可以使用不受数量限制的raw分区。

下面有几个限制是需要考虑的,当使用raw分区的时候

(1)每一个raw分区只能有一个数据库数据文件。

(2)标准的文件操作,例如:复制文件,移动文件,删除文件都不能在raw分区使用

(3)放在raw分区的数据库文件都不能直接使用备份软件备份,例如Acronis.True.Image.Echo.Enterprise.Server这些都不能用

但是SQLSERVER的完整数据库备份、差异备份、日志备份,这些SQLSERVER的备份功能是可以正常使用的

时间: 2024-11-03 07:27:02

SQL SERVER中如何使用裸设备的相关文章

如何在SQL Server中恢复数据

server|恢复|数据 在SQL server 中恢复数据的几种办法: 1.自然就是 backup 的 恢复方法 backup 这种方法是最安全,最可靠的方法操作起来也很简单,只要在 sql server 的 enterprise manager中选择 restore 就可以了. 用T-SQL 也可以完成: RESTORE DATABASE test FROM DISK = 'c:\mssql7\backup\test.bak' 当然这是用的 文件恢复,如果是 设备恢复 自然也是可以的. 2.

SQL Server中数据库文件的存放方式

SQL Server中数据库文件的存放方式 在SQL SERVER中,通过文件组这个逻辑对象对存放数据的文件进行管理. 先来看一张图: 我们看到的逻辑数据库由一个或者多个文件组构成 而文件组管理着磁盘上的文件.而文件中存放着SQL SERVER的实际数据. 为什么通过文件组来管理文件 对于用户角度来说,需对创建的对象指定存储的文件组只有三种数据对象:表,索引和大对象(LOB) 使用文件组可以隔离用户和文件,使得用户针对文件组来建立表和索引,而不是实际磁盘中的文件.当文件移动或修改时,由于用户建立

在SQL Server中迁移数据的几种方法_MsSql

1.通过工具"DTS"的设计器进行导入或者导出 DTS的设计器功能强大,支持多任务,也是可视化界面,容易操作,但知道的人一般不 多,如果只是进行SQL Server数据库中部分表的移动,用这种方法最好,当然,也可以进行全部表的移动.在SQL Server Enterprise Manager中,展开服务器左边的+,选择数据库,右击,选择All tasks/Import Data...(或All tasks/Export Data...),进入向导模式,按提示一步一步走就行了,里面分得很

在SQL Server中迁移数据的几种方法

1.通过工具"DTS"的设计器进行导入或者导出 DTS的设计器功能强大,支持多任务,也是可视化界面,容易操作,但知道的人一般不 多,如果只是进行SQL Server数据库中部分表的移动,用这种方法最好,当然,也可以进行全部表的移动.在SQL Server Enterprise Manager中,展开服务器左边的+,选择数据库,右击,选择All tasks/Import Data...(或All tasks/Export Data...),进入向导模式,按提示一步一步走就行了,里面分得很

.NET和SQL Server中“空值”辨析

server 初学数据库编程我们可能会有一些对"空值"的疑问,比如通过编程新建的一个表中所有数据皆显示为<NULL>,手动添加并删除文字后又变成了空白:一个字符串类型的字段,明明没有填值,却不等于"":用ADO.NET从数据库中取值,每遇到有<NULL>的就出错--这需要我们正确认识.NET和SQL Server中几种不同的"空值".1.真正的空值,也就是"没有输入的值",可以出现在大多数类型的字段中(

在SQL Server 中使用SQLDMO

server   曾几何时,伙伴们为数据库的升级伤透了脑筋.往往程序的升级赶不上数据库的升级(版本控制的好,这也许不是什么问题,但对于很大一部分中国公司来说这是无法避免的).而有些n久以前的数据库要使用新程序的时候,数据库的升级简直就是无从下手.所以对比数据库升级的紧要性就逐渐的凸现出来.对于表和字段的升级按道理来说是不难的,通过sysobjects与syscolumns的比较很容易的可以找到不同之处,然后增加没有的对象即可.而对于视图和存储过程等非表对象的更新就有些为难了(当然视图和存储过程如

sql server中扩展存储过程随笔(几个有用的PROCEDURE小总结)

server|存储过程 在sql server中扩展存储过程直接使用的机会不是很多 我把我知道的几个有用的扩展存储过程使用方式总结如下:     --获得MS SQL的版本号 execute master..sp_msgetversion go Character_Value                              -------------------- ----------- ----------- 8.00.760             1           3  

分清SQL Server中易混淆的数据类型

server|数据|数据类型 (1)char.varchar.text和nchar.nvarchar.ntextchar和varchar的长度都在1到8000之间,它们的区别在于char是定长字符数据,而varchar是变长字符数据.所谓定长就是长度固定的,当输入的数据长度没有达到指定的长度时将自动以英文空格在其后面填充,使长度达到相应的长度:而变长字符数据则不会以空格填充.text存储可变长度的非Unicode数据,最大长度为2^31-1(2,147,483,647)个字符.后面三种数据类型和

从SQL Server中导入/导出 Excel 的基本方法

excel|server 从SQL Server中导入/导出 Excel 的基本方法 /*===================  导入/导出 Excel 的基本方法 ===================*/ 从Excel文件中,导入数据到SQL数据库中,很简单,直接用下面的语句: /*===================================================================*/--如果接受数据导入的表已经存在insert into 表 select