如何能够得知一个数据库的读写速度呢?

悬崖跳舞被人砍 2013-12-19 10:26:19
老师的毕业设计要求通过大量的实验数据来研究数据库读写速度优化的方法。如果我插入一行数据,那么怎样能够知晓这条命令所占用的执行时间呢?
...全文
585 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
發糞塗牆 2013-12-20
  • 打赏
  • 举报
回复
现在才来问,怪谁啊
  • 打赏
  • 举报
回复
引用 19 楼 DBA_Huangzj 的回复:
引用 17 楼 kingofluo 的回复:
[quote=引用 16 楼 yupeigu 的回复:] [quote=引用 15 楼 kingofluo 的回复:] [quote=引用 14 楼 DBA_Huangzj 的回复:] sp是存储过程的缩写,就好像create proc我一般不会写create procedure ,开发速度慢,你懂得。这里是3段代码,上面都有注释,都是调用一些系统信息然后计算语句或者sp的统计信息,不过有些是2008才有的。当然很多2005也有。
高深啊~木懂啊!不过已经帮我好多了。
上面的代码是进行监控的,能查询出,当前系统中,有哪些运行的sql语句,占用的cpu最多,逻辑读最多[/quote]那它的使用方法呢?要怎么使用,会有怎样的效果出来?[/quote]如果还没选研究方向,就换mysql吧,一些深入的研究没有源码比较难[/quote]
引用 19 楼 DBA_Huangzj 的回复:
引用 17 楼 kingofluo 的回复:
[quote=引用 16 楼 yupeigu 的回复:] [quote=引用 15 楼 kingofluo 的回复:] [quote=引用 14 楼 DBA_Huangzj 的回复:] sp是存储过程的缩写,就好像create proc我一般不会写create procedure ,开发速度慢,你懂得。这里是3段代码,上面都有注释,都是调用一些系统信息然后计算语句或者sp的统计信息,不过有些是2008才有的。当然很多2005也有。
高深啊~木懂啊!不过已经帮我好多了。
上面的代码是进行监控的,能查询出,当前系统中,有哪些运行的sql语句,占用的cpu最多,逻辑读最多[/quote]那它的使用方法呢?要怎么使用,会有怎样的效果出来?[/quote]如果还没选研究方向,就换mysql吧,一些深入的研究没有源码比较难[/quote]
引用 19 楼 DBA_Huangzj 的回复:
引用 17 楼 kingofluo 的回复:
[quote=引用 16 楼 yupeigu 的回复:] [quote=引用 15 楼 kingofluo 的回复:] [quote=引用 14 楼 DBA_Huangzj 的回复:] sp是存储过程的缩写,就好像create proc我一般不会写create procedure ,开发速度慢,你懂得。这里是3段代码,上面都有注释,都是调用一些系统信息然后计算语句或者sp的统计信息,不过有些是2008才有的。当然很多2005也有。
高深啊~木懂啊!不过已经帮我好多了。
上面的代码是进行监控的,能查询出,当前系统中,有哪些运行的sql语句,占用的cpu最多,逻辑读最多[/quote]那它的使用方法呢?要怎么使用,会有怎样的效果出来?[/quote]如果还没选研究方向,就换mysql吧,一些深入的研究没有源码比较难[/quote]事实上,再过几天就要交了...无情啊学校~
發糞塗牆 2013-12-20
  • 打赏
  • 举报
回复
引用 17 楼 kingofluo 的回复:
引用 16 楼 yupeigu 的回复:
[quote=引用 15 楼 kingofluo 的回复:] [quote=引用 14 楼 DBA_Huangzj 的回复:] sp是存储过程的缩写,就好像create proc我一般不会写create procedure ,开发速度慢,你懂得。这里是3段代码,上面都有注释,都是调用一些系统信息然后计算语句或者sp的统计信息,不过有些是2008才有的。当然很多2005也有。
高深啊~木懂啊!不过已经帮我好多了。
上面的代码是进行监控的,能查询出,当前系统中,有哪些运行的sql语句,占用的cpu最多,逻辑读最多[/quote]那它的使用方法呢?要怎么使用,会有怎样的效果出来?[/quote]如果还没选研究方向,就换mysql吧,一些深入的研究没有源码比较难
LongRui888 2013-12-20
  • 打赏
  • 举报
回复
引用 17 楼 kingofluo 的回复:
引用 16 楼 yupeigu 的回复:
[quote=引用 15 楼 kingofluo 的回复:] [quote=引用 14 楼 DBA_Huangzj 的回复:] sp是存储过程的缩写,就好像create proc我一般不会写create procedure ,开发速度慢,你懂得。这里是3段代码,上面都有注释,都是调用一些系统信息然后计算语句或者sp的统计信息,不过有些是2008才有的。当然很多2005也有。
高深啊~木懂啊!不过已经帮我好多了。
上面的代码是进行监控的,能查询出,当前系统中,有哪些运行的sql语句,占用的cpu最多,逻辑读最多[/quote]那它的使用方法呢?要怎么使用,会有怎样的效果出来?[/quote] 呵呵,这些语句,适合给DBA来使用,抓取有问题的语句,然后进行优化。 直接运行就可以了
  • 打赏
  • 举报
回复
引用 16 楼 yupeigu 的回复:
引用 15 楼 kingofluo 的回复:
[quote=引用 14 楼 DBA_Huangzj 的回复:] sp是存储过程的缩写,就好像create proc我一般不会写create procedure ,开发速度慢,你懂得。这里是3段代码,上面都有注释,都是调用一些系统信息然后计算语句或者sp的统计信息,不过有些是2008才有的。当然很多2005也有。
高深啊~木懂啊!不过已经帮我好多了。
上面的代码是进行监控的,能查询出,当前系统中,有哪些运行的sql语句,占用的cpu最多,逻辑读最多[/quote]那它的使用方法呢?要怎么使用,会有怎样的效果出来?
LongRui888 2013-12-20
  • 打赏
  • 举报
回复
引用 15 楼 kingofluo 的回复:
引用 14 楼 DBA_Huangzj 的回复:
sp是存储过程的缩写,就好像create proc我一般不会写create procedure ,开发速度慢,你懂得。这里是3段代码,上面都有注释,都是调用一些系统信息然后计算语句或者sp的统计信息,不过有些是2008才有的。当然很多2005也有。
高深啊~木懂啊!不过已经帮我好多了。
上面的代码是进行监控的,能查询出,当前系统中,有哪些运行的sql语句,占用的cpu最多,逻辑读最多
  • 打赏
  • 举报
回复
引用 14 楼 DBA_Huangzj 的回复:
sp是存储过程的缩写,就好像create proc我一般不会写create procedure ,开发速度慢,你懂得。这里是3段代码,上面都有注释,都是调用一些系统信息然后计算语句或者sp的统计信息,不过有些是2008才有的。当然很多2005也有。
高深啊~木懂啊!不过已经帮我好多了。
發糞塗牆 2013-12-20
  • 打赏
  • 举报
回复
sp是存储过程的缩写,就好像create proc我一般不会写create procedure ,开发速度慢,你懂得。这里是3段代码,上面都有注释,都是调用一些系统信息然后计算语句或者sp的统计信息,不过有些是2008才有的。当然很多2005也有。
  • 打赏
  • 举报
回复
引用 12 楼 DBA_Huangzj 的回复:
--CPU最高的查询
SELECT TOP 3
        total_worker_time ,
        execution_count ,
        total_worker_time / execution_count AS [Avg CPU Time] ,
        CASE WHEN deqs.statement_start_offset = 0
                  AND deqs.statement_end_offset = -1
             THEN '-- see objectText column--'
             ELSE '-- query --' + CHAR(13) + CHAR(10)
                  + SUBSTRING(execText.text, deqs.statement_start_offset / 2,
                              ( ( CASE WHEN deqs.statement_end_offset = -1
                                       THEN DATALENGTH(execText.text)
                                       ELSE deqs.statement_end_offset
                                  END ) - deqs.statement_start_offset ) / 2)
        END AS queryText
FROM    sys.dm_exec_query_stats deqs
        CROSS APPLY sys.dm_exec_sql_text(deqs.plan_handle) AS execText
--WHERE execText.text like '%指定查询%'
ORDER BY deqs.total_worker_time DESC;
--批级别的查询统计信息
SELECT TOP 100
        SUM(total_logical_reads) AS total_logical_reads ,
        COUNT(*) AS num_queries , --number of individual queries in batch 
        --not all usages need be equivalent, in the case of looping 
        --or branching code 
        MAX(execution_count) AS execution_count ,
        MAX(execText.text) AS queryText
FROM    sys.dm_exec_query_stats deqs
        CROSS APPLY sys.dm_exec_sql_text(deqs.sql_handle) AS execText
GROUP BY deqs.sql_handle
HAVING  AVG(total_logical_reads / execution_count) <> SUM(total_logical_reads)
        / SUM(execution_count)
ORDER BY 1 DESC
--逻辑读最高
-- Top Cached SPs By Total Logical Reads (SQL 2008 only). 
-- Logical reads relate to memory pressure 
SELECT TOP ( 25 )
        p.name AS [SP Name] ,
        deps.total_logical_reads AS [TotalLogicalReads] ,
        deps.total_logical_reads / deps.execution_count AS [AvgLogicalReads] ,
        deps.execution_count ,
        ISNULL(deps.execution_count / DATEDIFF(Second, deps.cached_time,
                                               GETDATE()), 0) AS [Calls/Second] ,
        deps.total_elapsed_time ,
        deps.total_elapsed_time / deps.execution_count AS [avg_elapsed_time] ,
        deps.cached_time
FROM    sys.procedures AS p
        INNER JOIN sys.dm_exec_procedure_stats AS deps ON p.[object_id] = deps.[object_id]
WHERE   deps.database_id = DB_ID()
ORDER BY deps.total_logical_reads DESC;
2008的话右键实例还有很多性能报表,自带的,2005好像要打SP
SP是什么?这段代码的具体意思是什么啊?
  • 打赏
  • 举报
回复
引用 22 楼 xuguv 的回复:
数据库的速度,一看表结构,二看索引,三看sql语句优化。 然后看服务器硬件(几个CPU,几G的内存)和网络(或者相反) LZ的问题,实在是可以写一本大部头的书了。
其实就只研究一下逻辑优化,语句优化,索引优化而已。。。
xuguv 2013-12-20
  • 打赏
  • 举报
回复
数据库的速度,一看表结构,二看索引,三看sql语句优化。 然后看服务器硬件(几个CPU,几G的内存)和网络(或者相反) LZ的问题,实在是可以写一本大部头的书了。
發糞塗牆 2013-12-19
  • 打赏
  • 举报
回复
--CPU最高的查询
SELECT TOP 3
        total_worker_time ,
        execution_count ,
        total_worker_time / execution_count AS [Avg CPU Time] ,
        CASE WHEN deqs.statement_start_offset = 0
                  AND deqs.statement_end_offset = -1
             THEN '-- see objectText column--'
             ELSE '-- query --' + CHAR(13) + CHAR(10)
                  + SUBSTRING(execText.text, deqs.statement_start_offset / 2,
                              ( ( CASE WHEN deqs.statement_end_offset = -1
                                       THEN DATALENGTH(execText.text)
                                       ELSE deqs.statement_end_offset
                                  END ) - deqs.statement_start_offset ) / 2)
        END AS queryText
FROM    sys.dm_exec_query_stats deqs
        CROSS APPLY sys.dm_exec_sql_text(deqs.plan_handle) AS execText
--WHERE execText.text like '%指定查询%'
ORDER BY deqs.total_worker_time DESC;
--批级别的查询统计信息
SELECT TOP 100
        SUM(total_logical_reads) AS total_logical_reads ,
        COUNT(*) AS num_queries , --number of individual queries in batch 
        --not all usages need be equivalent, in the case of looping 
        --or branching code 
        MAX(execution_count) AS execution_count ,
        MAX(execText.text) AS queryText
FROM    sys.dm_exec_query_stats deqs
        CROSS APPLY sys.dm_exec_sql_text(deqs.sql_handle) AS execText
GROUP BY deqs.sql_handle
HAVING  AVG(total_logical_reads / execution_count) <> SUM(total_logical_reads)
        / SUM(execution_count)
ORDER BY 1 DESC
--逻辑读最高
-- Top Cached SPs By Total Logical Reads (SQL 2008 only). 
-- Logical reads relate to memory pressure 
SELECT TOP ( 25 )
        p.name AS [SP Name] ,
        deps.total_logical_reads AS [TotalLogicalReads] ,
        deps.total_logical_reads / deps.execution_count AS [AvgLogicalReads] ,
        deps.execution_count ,
        ISNULL(deps.execution_count / DATEDIFF(Second, deps.cached_time,
                                               GETDATE()), 0) AS [Calls/Second] ,
        deps.total_elapsed_time ,
        deps.total_elapsed_time / deps.execution_count AS [avg_elapsed_time] ,
        deps.cached_time
FROM    sys.procedures AS p
        INNER JOIN sys.dm_exec_procedure_stats AS deps ON p.[object_id] = deps.[object_id]
WHERE   deps.database_id = DB_ID()
ORDER BY deps.total_logical_reads DESC;
2008的话右键实例还有很多性能报表,自带的,2005好像要打SP
  • 打赏
  • 举报
回复
引用 10 楼 DBA_Huangzj 的回复:
如果sqlserver版本高,还有很多方式可以获取更详细的语句性能
我用的是2005版本,可有什么系统工具可以使用吗?其他的版本又有什么工具呢?
發糞塗牆 2013-12-19
  • 打赏
  • 举报
回复
如果sqlserver版本高,还有很多方式可以获取更详细的语句性能
  • 打赏
  • 举报
回复
引用 8 楼 u010192842 的回复:
[quote=引用 3 楼 kingofluo 的回复:] [quote=引用 1 楼 DBA_Huangzj 的回复:] set statistics time on ; t-sql set statistics time off ;
T-SQL的内容就是插入语句吗?对于这样一个研究性的毕设,前辈有没有什么建议?[/quote] 目的应该是研究如何做数据库优化吧!? 所以你应该针对数据优化来进行研讨。去网上找找资料,(或者多来CSDN)[/quote]哈!已经在这个毕设方面来过CSDN多次了。获得了不少论坛大神的帮助!
Yole 2013-12-19
  • 打赏
  • 举报
回复
引用 3 楼 kingofluo 的回复:
[quote=引用 1 楼 DBA_Huangzj 的回复:] set statistics time on ; t-sql set statistics time off ;
T-SQL的内容就是插入语句吗?对于这样一个研究性的毕设,前辈有没有什么建议?[/quote] 目的应该是研究如何做数据库优化吧!? 所以你应该针对数据优化来进行研讨。去网上找找资料,(或者多来CSDN
LongRui888 2013-12-19
  • 打赏
  • 举报
回复
引用 6 楼 DBA_Huangzj 的回复:
[quote=引用 3 楼 kingofluo 的回复:] [quote=引用 1 楼 DBA_Huangzj 的回复:] set statistics time on ; t-sql set statistics time off ;
T-SQL的内容就是插入语句吗?对于这样一个研究性的毕设,前辈有没有什么建议?[/quote]研究性的东西,我建议去研究mysql,毕竟开源[/quote] 嗯 对,可以参考一下这本书: 深入理解MySQL(MySQL核心开发人员力作) 里面有源代码的解析
發糞塗牆 2013-12-19
  • 打赏
  • 举报
回复
引用 3 楼 kingofluo 的回复:
[quote=引用 1 楼 DBA_Huangzj 的回复:] set statistics time on ; t-sql set statistics time off ;
T-SQL的内容就是插入语句吗?对于这样一个研究性的毕设,前辈有没有什么建议?[/quote]研究性的东西,我建议去研究mysql,毕竟开源
LongRui888 2013-12-19
  • 打赏
  • 举报
回复
呵呵,改一下,加法也所错误了 set statistics time on 会返回如下的信息: SQL Server 分析和编译时间: CPU 时间 = 7 毫秒,占用时间 = 7 毫秒。 (259 行受影响) SQL Server 执行时间: CPU 时间 = 0 毫秒,占用时间 = 98 毫秒。 也就是一共是98+7 = 105 包含了,分析、编译、执行的总时间
  • 打赏
  • 举报
回复
引用 2 楼 yupeigu 的回复:
set statistics time on 会返回如下的信息: SQL Server 分析和编译时间: CPU 时间 = 7 毫秒,占用时间 = 7 毫秒。 (259 行受影响) SQL Server 执行时间: CPU 时间 = 0 毫秒,占用时间 = 98 毫秒。 也就是一共是98+7 = 106
原来这样子就可以。。。
加载更多回复(3)

27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧