MSSQL运行慢,经过几天的考验(mssql运行几天很慢)
在平时的维护过程中,很多时候我们可能会遇到企业的MSSQL数据库运行慢的问题,这是十分烦恼的。此时,我们可以做的其实是很多的。
首先,我们可以针对对MSSQL数据库检查,执行一些常用的优化,比如给SQL语句添加参数,使用存储过程,创建可复用的代码,并使用合适的数据来表达它们。这些操作将有助于改善MSSQL速度。最重要的是,让我们的数据库有足够的资源来运行,资源应该测量和管理,这可以使用以下查询来实现:
“`sql
SELECT
ca.session_id, qp.query_plan, cp.query_plan_hash,
ca.text, ca.login_name, ca.CPU_time, ca.total_elapsed_time,
ca.reads, ca.writes, ca.execution_count
FROM sys.dm_exec_cursors AS ca
INNER JOIN sys.dm_exec_query_stats AS qp ON ca.plan_handle = qp.plan_handle
INNER JOIN sys.dm_exec_query_plan AS cp ON qp.plan_handle = cp.plan_handle
ORDER BY ca.session_id;
另一方面,我们可以确定要运行MSSQL哪一部分数据库是慢的,然后查看它们的查询计划,看看是否有效率很低的查询。另外,我们可以查询是否有占用了数据库的计算资源的查询,或者是否存在索引的错误使用,这些都可能是出现运行慢的原因。
此外,我们也可以检查是否有僵尸进程正在持续运行,通过查询是否有系统进程正在等待被其他进程完成:
```sqlSELECT
W1.resource_type, W1.wait_duration_ms, W2.resource_type, W2.wait_duration_ms, W1.blocking_session_id
FROM sys.dm_os_waiting_tasks AS W1
INNER JOIN sys.dm_os_waiting_tasks AS W2 ON W1.session_id = W2.blocking_session_id;
完成上述所有操作后,MSSQL数据库应当恢复其正常运行速度,但有时即便按照以上操作操作,运行依旧慢,因此,我们应当进行更深入的查找,比如检查是否存在存储过程,是否有不必要的表操作,是否有大量的内联等。在对MSSQL数据库运行慢的问题有了全面的认识之后,我们才能有效地改善它。