MS SQL Server分析数据库的I/O性能

系统有的时候响应会明显很慢,有的时候可以是因为访问人数增加导致,有的时候可能因为数据库的磁盘I/O访问次数频繁导致。MS SQL Server提供了一些动态管理视图和函数供我们分析磁盘I/O性能。

  1、sys.dm_io_virtual_file_stats


SELECT  DB_NAME(vfs.database_id) AS database_name ,

vfs.database_id ,

vfs.FILE_ID ,

io_stall_read_ms / NULLIF(num_of_reads, 0) AS avg_read_latency ,

io_stall_write_ms / NULLIF(num_of_writes, 0) AS avg_write_latency ,

io_stall / NULLIF(num_of_reads + num_of_writes, 0) AS avg_total_latency ,

num_of_bytes_read / NULLIF(num_of_reads, 0) AS avg_bytes_per_read ,

num_of_bytes_written / NULLIF(num_of_writes, 0) AS avg_bytes_per_write ,

vfs.io_stall ,

vfs.num_of_reads ,

vfs.num_of_bytes_read ,

vfs.io_stall_read_ms ,

vfs.num_of_writes ,

vfs.num_of_bytes_written ,

vfs.io_stall_write_ms ,

size_on_disk_bytes / 1024 / 1024. AS [size_on_disk_mbytes(MB)] ,

mf.physical_name

FROM    sys.dm_io_virtual_file_stats(DB_ID('master'), 1) AS vfs

JOIN sys.master_files AS mf ON vfs.database_id = mf.database_id

AND vfs.FILE_ID = mf.FILE_ID

ORDER BY avg_total_latency DESC

  如果sys.dm_io_virtual_file_stats(null,null)那么会显示所有默认数据库和曾经附加过的数据库的信息,这里只想看master数据库的I/O信息,对数据库上执行后结果分析如下:

  2、sys.dm_io_cluster_shared_drives和sys.dm_io_cluster_valid_path_names

  如果你的数据库架构采用了集群部署,那么可以通过这两个查到关于集群节点的信息。未来sys.dm_io_cluster_shared_drives将被废弃,采用sys.dm_io_cluster_valid_path_names代替。

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-12-06 19:14:30

MS SQL Server分析数据库的I/O性能的相关文章

ms sql server 2005数据库日志文件过大,需要清除或者清空

数据库:ms sql server 2005 任务:ms sql server 2005数据库日志文件过大,需要清除. 方法: backup log [你的数据库名称] WITH NO_LOGbackup log [你的数据库名称] WITH TRUNCATE_ONLYDBCC SHRINKDATABASE([你的数据库名称]) 说明: backup log 指定仅备份事务日志.该日志是从上一次成功执行的 LOG 备份到当前日志的末尾.备份日志之后,可能会截断事务复制或活动事务不再需要的空间.

MS SQL SERVER 主从数据库的实现

 主从库是两台服务器上的两个数据库,主库以最快的速度做增删改操作+最新数据的查询操作;从库负责查询较旧数据,做一些对实效性要求较小的分析,报表生成的工作.这样做将数据库的压力分担到两台服务器上从而保证整个系统响应的及时性.       SQL Server提供了复制机制来帮我们实现主从库的机制.      实践前需要新创建一个Test的数据库,这个库中建一个测试表.      1. 打开sql server企业管理器,在对象资源管理器里面选择复制->本地发布,右键选择新建发布:      2.

MS SQL Server数据库查询优化及分页算法

server|分页|数据|数据库|算法|优化 探讨如何在有着1000万条数据的MS SQL SERVER数据库中实现快速的数据提取和数据分页.以下代码说明了我们实例中数据库的"红头文件"一表的部分数据结构:CREATE TABLE [dbo].[TGongwen] (    --TGongwen是红头文件表名    [Gid] [int] IDENTITY (1, 1) NOT NULL ,--本表的id号,也是主键    [title] [varchar] (80) COLLATE

探讨如何在有着1000万条数据的MS SQL SERVER数据库中实现快速的数据提取和数据分页

探讨如何在有着1000万条数据的MS SQL SERVER数据库中实现快速的数据提取和数据分页.以下代码说明了我们实例中数据库的一表的部分数据结构: CREATE TABLE [dbo].[TGongwen] (    --TGongwen是红头文件表名    [Gid] [int] IDENTITY (1, 1) NOT NULL ,--本表的id号,也是主键    [title] [varchar] (80) COLLATE Chinese_PRC_CI_AS NULL ,  --红头文件的

在Linux下访问MS SQL Server数据库(转)

server|访问|数据|数据库 在Linux下访问MS SQL Server数据库 ---- Linux 作 为 一 个 免 费 的Unix 类 操 作 系 统, 以 其 开 放 性 源 代 码. 多 任 务.X window 等 特 点 为 众 多 的 用 户 所 采 用, 并 有 很 多 企 业 采 用Linux 来 作 为 其 内 部 网 的 全 功 能 服 务 器(WWW,FTP,Email.DNS). 企 业 的 内 部 网 不 仅 要 提 供 文 本 信 息 的 访 问, 还 要

在Linux下访问MS SQL Server数据库

server|访问|数据|数据库 ---- Linux 作 为 一 个 免 费 的Unix 类 操 作 系 统, 以 其 开 放 性 源 代 码. 多 任 务.X window 等 特 点 为 众 多 的 用 户 所 采 用, 并 有 很 多 企 业 采 用Linux 来 作 为 其 内 部 网 的 全 功 能 服 务 器(WWW,FTP,Email.DNS). 企 业 的 内 部 网 不 仅 要 提 供 文 本 信 息 的 访 问, 还 要 能 提 供 对 企 业 关 系 数 据 库 中 的

php 如何连接MS SQL Server 数据库

php教程 如何连接MS SQL Server 数据库教程 下面是连接到MSSQL服务器数据库代码. <?php $myServer = "localhost"; $myUser = "your_name"; $myPass = "your_password"; $myDB = "examples"; //connection to the database $dbhandle = mssql_connect($mySe

Access与MS SQL Server数据库的相互转换

  一.将Access 数据库数据移植转换为sql server 2000 第一步,开启SQLSERVER 2000服务管理,打开"企业管理器",新建一个数据库,名称为"Access数据转换"; 第二步,运行"导入和导出数据",打开"DTS导入/导出向导".选择数据源时,有两种选择:"Driver do Microsoft Access(*.mdb)"或"Microsoft Access"

数据库查询排序使用随机排序结果示例(Oracle/MySQL/MS SQL Server)_oracle

Oracle查询结果集,随机排序 复制代码 代码如下: select * from table1 order by dbms_random.value(); MySQL随机查询出一条记录: 复制代码 代码如下: -- 下面的查询语句效率高,不要使用 SELECT * FROM table1 ORDER BY rand() LIMIT 1 来查询 SELECT * FROM table1 WHERE id=(SELECT id FROM table1 ORDER BY rand() LIMIT 1