我在数据库方面有一个问题,下面是我每天都要处理的一个场景:通常应用程序可以处理流量等问题,但每天要处理几次性能问题。当发生这种情况时,存储过程的执行时间从200%-1000%增加到1000%。
我有一个,描述在这里:https://stackoverflow.com/questions/5585726/query-with-large-table-joins-optimization-techniques。通常它的执行大约需要6-8秒(我已经从20秒开始优化了它,因为我认为这个过程是罪魁祸首),但是当正在发生时,这个过程甚至可以执行60秒。
今天,我意识到应用程序中有更多的地方会冻结,而且,我不小心意识到,从Studio发出的示例查询(通常是在眨眼之间执行),当在数据库服务器上发生时,会开始放慢速度。好消息是,由于这一发现,我消除了应用程序和web服务器这两个瓶颈。
无法处理请求的是数据库服务器。我想知道是否有一种方法可以解决实时数据库问题,发现缓慢的查询或其他操作,如rebiulding索引、统计数据、内存问题等,或者可能导致所描述的性能下降的其他问题?
谢谢你,帕维尔
发布于 2011-04-07 20:55:17
这是一个我经常使用的查询。
它显示了当前正在执行的代码、等待信息、阻塞信息、哪些spids正在运行、它们已经运行了多长时间、当前命令是什么、查询文本是什么以及如果缓存中有一个查询计划:
SELECT
d2.wait_type,
d1.session_id,
d2.blocking_session_id,
d2.status,
d1.login_name,
d2.start_time,
d2.command,
d3.[text] as Batch,
SUBSTRING(d3.[text], (d2.statement_start_offset/2) + 1,
((CASE statement_end_offset
WHEN -1 THEN DATALENGTH(d3.text)
ELSE d2.statement_end_offset END
- d2.statement_start_offset)/2) + 1) AS Current_Statement,
qp.query_plan,
d1.login_time,
d2.wait_time,
d2.cpu_time,
d1.memory_usage,
d2.total_elapsed_time,
d2.reads,d2.writes,
d2.logical_reads
FROM sys.dm_exec_sessions d1
JOIN sys.dm_exec_requests d2 ON d1.session_id=d2.session_id
CROSS APPLY sys.dm_exec_sql_text(d2.sql_handle) d3
CROSS APPLY sys.dm_exec_query_plan(d2.plan_handle) AS qp
WHERE d1.session_id <> @@SPID发布于 2011-04-07 20:50:35
在SSMS中,如果您右键单击服务器名称(而不是DB名称),它将显示一个Activity菜单,单击该菜单,这将是一个很好的起点。
https://stackoverflow.com/questions/5587437
复制相似问题