首页 ┆ 网站地图 ┆ 在线留言 ┆ 游戏资讯 ┆ 资源下载 ┆ 端午节祝福 ┆ 迅雷在线影视
设为首页
加入收藏
联系我们
高级搜索
您当前的位置: 主页>数据库>基础常识>祥解磁盘 I/O 性能 对数据库的影响
祥解磁盘 I/O 性能 对数据库的影响
来源: 发布时间:2008-01-24 发布人: 浏览: 人次   字体: [ ]  

  最好的办法是只关心磁盘队列,而不关心每个磁盘实际的 I/O,因为归根到底,如果 I/O 并没有引发问题,那么又何必担心它呢?Windows 无法了解 RAID 阵列中的物理驱动器数量,因此要准确估算每个物理磁盘的磁盘队列,重要的是用磁盘队列长度除以包含所考察的逻辑驱动器的硬件 RAID 磁盘阵列中的物理驱动器数。对于包含 SQL Server 文件的硬盘,这个数字不要超过 2。

  有关 SQL Server 和 RAID 的详细信息,请在 SQL Server Books Online 中搜索字符串“RAID Levels and SQL Server”、“Comparing Different Implementations of RAID Levels”、“Monitoring Disk Activity”、“Performance Monitoring Example:Identifying Bottlenecks”、“About Hardware-based Solutions”和“RAID”。

  Windows NT 软件 RAID

  Windows NT 通过 Windows NT 操作系统(而不是硬件 RAID 控制器)来提供镜像集和条带集(有或没有容错能力),从而为出现故障的硬盘提供容错能力。Windows NT 磁盘管理器用于定义镜像集 (RAID 1) 或带奇偶校验 (RAID 5) 的条带集。Windows NT 磁盘管理器还可以定义没有容错能力 (RAID 0) 的条带集。

  软件 RAID 将使用更多的 CPU 资源,因为 Windows NT 是管理 RAID 操作而不是硬件 RAID 控制器的组件。因此,如果系统处理器使用率接近 100%,那么在使用相同数量的硬盘的情况下,Windows NT 软件 RAID 的性能可能会比硬件 RAID 解决方案要低几个百分点。但是,如果用一组驱动器来维护 SQL Server I/O,Windows NT 软件 RAID 通常可以帮助它们实现比单独使用这些驱动器所获得的更好的总体性能,减小了出现 I/O 瓶颈的可能性,从而提高了 SQL Server 的 CPU 利用率,并增加了吞吐量。而且因为软件 RAID 可以为硬盘提供容错力,因而是一个成本更低的解决方案。

  有关配置 Windows NT 软件 RAID 的详细信息,请参见 Windows NT 服务器联机帮助中的第 4 章“设计可靠配置”。同时在 SQL Server Books Online 搜索字符串“About Windows NT-based Disk Mirroring and Duplexing”和“About Windows NT-based Disk Striping and Striping with Parity”。

  磁盘 I/O 并行

  当处理放置在几个磁盘驱动器上的小型 SQL Server 数据库时,磁盘 I/O 并行可能不起作用。但是当处理存储在许多磁盘驱动器上的大型 SQL Server 数据库时,使用磁盘 I/O 并行,以便最有效地使用磁盘子系统的 I/O 处理能力,从而达到改善性能的目的。

  创建磁盘 I/O 并行最简单的方法是创建一个“驱动器池”,存储除了事务日志文件之外的所有 SQL Server 数据库文件。该驱动器池可以是在 Windows NT 中作为单个物理驱动器的单个 RAID 阵列,也可以是一个用多个 RAID 阵列和 SQL Server 文件/文件组组成的大型池。SQL Server 文件可以与每个 RAID 阵列发生关联,且这些文件可以组成一个 SQL Server 文件组。然后可以在这个文件组上建立一个数据库,以便数据可以均匀地分布在所有驱动器和 RAID 控制器上。“驱动器池”方法依赖于 RAID 在所有的物理驱动器上分配数据,以确保在数据库服务器运行期间并行存取数据。

  这种池的方法简化了 SQL Server I/O 性能的优化,因为数据库管理员知道只能在一个物理位置上创建数据库对象。可以监视单个驱动器池的磁盘队列,如果有必要,也可以在池中添加更多的硬盘以防止出现磁盘队列。这一技术可以在通常不知道数据库的哪些部分使用率最高的情况下帮助优化性能。最好不要将 I/O 总的可用容量中的一部分隔离到其它磁盘分区上,因为 SQL Server 可能只有 5% 的时间在对它进行 I/O 操作。“单个驱动器池”的方法有助于使所有可用 I/O 容量总能为 SQL Server 操作使用。

  请注意 SQL Server 日志文件应始终在物理上分散到与其它所有的 SQL Server 数据库文件不同的硬盘。对于数据库十分忙碌的 SQL Server,事务日志文件应在物理上相互隔开。事务记录主要是连续的写 I/O。将事务记录活动与其它不连续的磁盘 I/O 活动分开对 I/O 性能有许多好处。这使得包含日志文件的硬盘可以专事连续 I/O。请注意事务日志有时需要作为 SQL Server 操作(如复制、回滚和延迟的更新)的一部分读出。因为需要进行这些读操作,所以尤其应注意参与复制的 SQL Server,确保所有事务日志文件有足够的磁盘 I/O 处理能力。

  通过 SQL Server 文件和文件组,在物理上将 SQL Server 对象与它们相关的数据库的其余部分分开的过程还涉及到其它管理工作。这对于调查非常活跃的表和索引十分有价值。通过将表或索引与其它数据库对象分开,可以准确估算对象的 I/O 需求。如果所有数据库对象都放置在一个大型的驱动器池中,则该工作不容易进行。比较好的办法是在数据库开发和基准测试期间进行这种物理 I/O 分割,这样就可以收集数据库的 I/O 信息并在制定生产数据库服务器环境的容量计划时使用这些信息。

  以下是可以分散在不同的硬盘、RAID 控制器、PCI 通道(或这三者的组合)的 SQL Server 活动:

  事务日志文件

  Tempdb

  数据库文件

  与许多查询或写活动相关的表

  与许多查询或写活动相关的非聚集索引

  可以用硬件 RAID 控制器、RAID 热插拔驱动器和联机 RAID 扩展很容易地实现 SQL Server I/O 活动的物理分割。这种方法提供最高的灵活性,因为它排列 RAID 控制器以便为以上所列出的每个单独的 SQL 活动提供单独的 RAID SCSI 通道。每个 RAID SCSI 通道都应连到单独的 RAID 热插拔柜,以便充分利用联机 RAID 扩展(如果可通过 RAID 控制器获得)。Windows 逻辑驱动器号与每个 RAID 阵列相关联,并且可以根据已知的 I/O 使用模式将 SQL Server 文件分散在各个 RAID 阵列中。

  通过这种配置,有可能使磁盘队列重新与不同的 RAID SCSI 通道以及它的驱动器发生关联,因为 Performance Monitor 可以在装载测试以及繁重的生产负荷期间报告队列行为。如果 RAID 控制器和驱动器阵列支持联机 RAID 扩展,并且在该阵列中有可用的热插拔硬盘插槽,那么解决该 RAID 阵列的磁盘队列的方法很简单,只需在该 RAID 阵列中添加更多的驱动器,直到 Performance Monitor 报告该 RAID 阵列的磁盘队列已达到可接受的级别(对于 SQL Server 文件可接受的级别小于 2)。这一过程可以在 SQL Server 联机时进行。

  Tempdb 是由 SQL Server 创建的数据库,可用作各种活动共享的工作区域,这些活动包括临时表、排序、子查询、用 GROUP BY 或 ORDER BY 的聚合以及使用 DISTINCT(必须创建临时工作表以删除重复行)的查询、游标和哈希联接。使 tempdb I/O 操作与相关事务的 I/O 操作并行发生是一个不错的主意。因为 tempdb 是一个草稿区域,更新频繁,所以对于它来说,选择 RAID 5 不如选择 RAID 1 或 0+1 更加适合。因为每次重新启动数据库服务器时都要重新创建 tempdb,所以 RAID 0 可用于生产型 SQL Server 机器中的 tempdb。RAID 0 使用的物理驱动器最少,且可为 tempdb 提供最好的 RAID 性能。在生产环境中将 RAID 用于 tempdb 的主要顾虑在于,如果 RAID 0 阵列中有任何物理驱动器出现故障,SQL Server 都需要停止,然后重新启动,如果 tempdb 置于 RAID 1 或 RAID 0+1 阵列中,则不一定这样。

  要移动 tempdb 数据库,使用 ALTER DATABASE 命令改变与 tempdb 相关的 SQL Server 日志文件名的物理文件位置。例如,要将 tempdb 及其相关的日志移动到新的文件位置 e:\mssql7 和 c:\temp,可使用以下命令:

  alter database tempdb modify file (name='tempdev',filename= 'e:\mssql7\tempnew_location.mDF')

  alter database tempdb modify file (name='templog',filename= 'c:\temp\tempnew_loglocation.mDF')

  相对于用户数据库,master、msdb 和 model 数据库在生产中用得不很多,因此通常在考虑 I/O 性能优化时没必要考虑它们。master 数据库通常只用来添加新的登录、数据库、设备和其它系统对象。

  非聚集索引在 B 树结构中,可以用 ALTER DATABASE 命令将它们与它们相关的数据库表分开。在下例中,第一个 ALTER DATABASE 创建一个文件组。第二个 ALTER DATABASE 创建一个与该文件组相关、但位于单独物理位置的文件。此时,可以在该文件组中创建出如以下代码所示的索引,并将该索引命名为 index1。SP_HELPFILE 报告给定数据库中的文件和文件组。SP_HELP 的输出中有一部分提供表的索引及其文件组关系的信息。有关详细信息,请在 SQL Server Books Online 中搜索字符串“ALTER DATABASE”和“sp_helpfile”。

  alter database testdb add filegroup testgroup1

  alter database testdb add file (name = 'testfile',

  filename = 'e:\mssql7\test1.ndf') to filegroup testgroup1

  create table test1(col1 char(8))

  create index index1 on test1(col1) on testgroup1

  sp_helpfile

  sp_help test1

  有关详细信息,请在 SQL Server Books Online 中搜索字符串“Files and Filegroups”、“Placing Indexes on Filegroups”、“Monitoring Disk Activity”、“Physical Database Files and Filegroups”和“Adding and Deleting Data and Transaction Log Files”。


共2页: 上一页 [1] 2 下一页
相 关 文 章   发布商链接
·SQL中IN,NOTIN,EXISTS,NOT EXISTS的...
·软件开发之数据库设计技巧大放送
·速学数据库链路的建立及其使用
·如何查找数据库中某一字段所在的表名...
·两个实现删除数据库字段中汉字或字符...
·sql语句获取每月最后一天示例
·sql语句实现行数据以列等式进行显示,...
·实例讲解SQL语句如何操作XML
·sql日期计算日期精确到天,包含函数...
·比较不错的SQL分页查询存储过程代码...
 §最新评论:(评论内容只代表网友观点,与本站立场无关!)
网名: 验证码:  【所有评论】【↑返回顶部
评 分: 12 345
评论内容:(不能超过500字,请自觉遵守互联网相关政策法规。[按 Ctrl+Enter 可直接提交]
注意:请勿在本站发布政治话题、色情及违反法律的内容。
IT知道网 声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。
推 荐 文 章
·sql语句实现行数据以列等式进
·sql语句获取每月最后一天示例
·两个实现删除数据库字段中汉...
·如何查找数据库中某一字段所...
·速学数据库链路的建立及其使...
·软件开发之数据库设计技巧大...
·SQL中IN,NOTIN,EXISTS,NOT EX...
·DB2、oralce、mysql数据库取...
·SQL语法中常用字符串函数大全
·设计一个用户,角色,功能三...
·sql语句实现根据月分打印月历
·SQL数据库面试题目及其答案
·SET IDENTITY_INSERT的用法
·sql语句使用内嵌视图与临时表
热 门 文 章
·SQL数据库面试题目及其答案
·SQL中IN,NOTIN,EXISTS,NOT EX...
·SQL语法中常用字符串函数大全
·SET IDENTITY_INSERT的用法
·SQL查询指定条数的记录语句
·超全超强SQL语法大全
·DB2、oralce、mysql数据库取...
·sql语句获取每月最后一天示例
·速学数据库链路的建立及其使...
·两个实现删除数据库字段中汉...
·比较不错的SQL分页查询存储过...
·sql日期计算日期精确到天,包...
·软件开发之数据库设计技巧大...
·sql语句使用内嵌视图与临时表...
·如何查找数据库中某一字段所...
网站首页 - 关于本站 - 加入收藏 - 网站地图 - 友情连接 - 在线留言 - 联系我们 - 返回顶部
Copyright © 2007 IT知道网.[冀ICP备07026896号]. All Rights Reserved .