新闻建站cms系统、政府cms系统定制开发

广州网站建设公司-阅速公司

asp.net新闻发布系统、报纸数字报系统方案
/
http://www.ysneo.com/
广州网站建设公司
您当前位置:首页>sqlserver数据库

sqlserver数据库

SQL Server数据库卡慢原因分析与解决方法资源被阻塞了和堵阻塞进程

发布时间:2024/5/17 10:01:19  作者:Admin  阅读:155  

广告:

1 查看Windows事件查看器和SQL Server错误日志以获取可能的系统级或数据库级问题提示。
2 如果怀疑是锁竞争问题,可以查看sys.dm_tran_locks。
3 使用SQL Server Management Studio (SSMS) 连接到数据库实例,检查当前活动和最近执行的查询。

-- 查看等待的类型
SELECT * FROM sys.dm_os_wait_stats ORDER BY wait_time_ms DESC; 
-- 查看当前等待的请求
SELECT * FROM sys.dm_os_waiting_tasks; 
-- 查看锁信息
SELECT * FROM sys.dm_tran_locks; 
-- 查询IO和时间统计
SET STATISTICS IO ON;
SET STATISTICS TIME ON;
GO
-- 运行你的查询
SELECT * FROM your_table;
GO

SQL Server数据库卡慢可能有以下几个原因:

硬件问题:包括磁盘故障、网络问题、内存不足等,这些问题会影响数据库的读写性能。(扩大服务器的内存,Windows 2000和SQL server 2000能支持4-8G的内存。)
查询问题:复杂的查询、缺少索引、查询语句写得不好等都可能导致数据库卡慢。
锁问题:当多个用户同时访问数据库时,可能会出现锁争用的情况,导致数据库操作卡慢。
服务器负载过大:当服务器上同时运行多个应用程序或者数据库,可能会导致服务器负载过大,从而影响数据库性能。
数据库设置不当:数据库的配置参数没有正确设置,例如缓冲区大小、最大并发连接数等,都可能导致数据库卡慢。
数据库日志文件过大:如果数据库的日志文件过大,会导致写入操作变慢,从而影响数据库的性能。
数据库版本过低:如果使用的SQL Server版本过低,可能会存在一些性能问题,建议升级到最新版本。
以上是一些可能导致SQL Server数据库卡慢的原因,具体要根据实际情况来判断和解决。

配置虚拟内存:虚拟内存大小应基于计算机上并发运行的服务进行配置。运行 Microsoft SQL Server? 2000 时,可考虑将虚拟内存大小设置为计算机中安装的物理内存的 1.5 倍。如果另外安装了全文检索功能,并打算运行 Microsoft 搜索服务以便执行全文索引和查询,可考虑:将虚拟内存大小配置为至少是计算机中安装的物理内存的 3 倍。将 SQL Server max server memory 服务器配置选项配置为物理内存的 1.5 倍(虚拟内存大小设置的一半)。

sql server 如何查看卡顿的原因 sqlserver查询突然很慢:

查询速度慢的原因很多,常见如下几种:

1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)
2、I/O吞吐量小,形成了瓶颈效应。
3、没有创建计算列导致查询不优化。
4、内存不足
5、网络速度慢
6、查询出的数据量过大(可以采用多次查询,其他的方法降低数据量)
7、锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷)
8、sp_lock,sp_who,活动的用户查看,原因是读写竞争资源。
9、返回了不必要的行和列
10、查询语句不好,没有优化

SELECT TOP 10 
 qs.total_elapsed_time / 1000 AS [Total Elapsed Time (sec)],
 qs.execution_count,
 qs.total_logical_reads,
 qs.total_logical_writes,
 qs.total_physical_reads,
 qs.last_execution_time,
 qs.min_execution_time,
 qs.max_execution_time,
 qs.last_worker_time,
 qs.min_worker_time,
 qs.max_worker_time,
 SUBSTRING(st.text, (qs.statement_start_offset/2) + 1,
 ((CASE qs.statement_end_offset
 WHEN -1 THEN DATALENGTH(st.text)
 ELSE qs.statement_end_offset
 END - qs.statement_start_offset)/2) + 1) AS [Statement Text],
 qp.query_plan
FROM 
 sys.dm_exec_query_stats AS qs
CROSS APPLY 
 sys.dm_exec_sql_text(qs.sql_handle) AS st
CROSS APPLY 
 sys.dm_exec_query_plan(qs.plan_handle) AS qp
ORDER BY 
 qs.total_elapsed_time DESC;

1 使用动态管理视图sys.dm_exec_query_stats

我们通过查询sys.dm_exec_query_stats视图来获取耗时最长的SQL语句的相关信息,包括CPU时间、执行时间、逻辑读取次数、物理读取次数、逻辑写入次数、执行次数和SQL语句内容。

SELECT TOP 10
 total_worker_time/1000 AS total_cpu_time_sec,
 total_elapsed_time/1000 AS total_duration_sec,
 total_logical_reads,
 total_physical_reads,
 total_logical_writes,
 execution_count,
 SUBSTRING(st.text, (qs.statement_start_offset/2) + 1,
 ((CASE statement_end_offset
 WHEN -1 THEN DATALENGTH(st.text)
 ELSE qs.statement_end_offset
 END - qs.statement_start_offset)/2) + 1) AS statement_text
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st
ORDER BY total_duration_sec DESC; 

3 使用动态管理视图sys.dm_exec_requests

我们查询sys.dm_exec_requests视图来获取当前执行的查询请求的信息,包括会话ID、开始时间、总执行时间、状态和SQL语句内容。我们可以根据需要自定义筛选条件,比如只显示执行时间超过10秒的查询。

SELECT r.session_id,
 r.start_time,
 r.total_elapsed_time/1000 AS total_duration_sec,
 r.status,
 t.text AS sql_text
FROM sys.dm_exec_requests AS r
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) AS t
WHERE r.total_elapsed_time > 10000 -- 只显示执行时间超过10秒的查询
ORDER BY r.total_elapsed_time DESC; 

结果:

stateDiagram
[*] --> 查询sys.dm_exec_query_stats
--> 分析耗时最长的SQL
--> 显示结果
--> [*]


查询哪些资源被阻塞了 和 堵进程:
1)、查询哪些资源被阻塞了(spid为阻塞进程id)
select * from sys.sysprocesses where status = 'suspended'
2)、查询堵进程(BlkBy阻塞进程id)
sp_who2 active查看堵的进程

查询spid/BlkBy 阻塞进程语句
dbcc inputbuffer(spid)

查看指定数据库的锁id进行
dbcc opentran(tempdb)

杀进程
kill spid with statusonly

查询sql语句执行时间和sql语句性能
通过设置STATISTICS我们可以查看执行SQL时的系统情况。选项有PROFILE,IO ,TIME。介绍如下:

 SET STATISTICS PROFILE ON --显示分析、编译和执行查询所需的时间(以毫秒为单位)。
 SET STATISTICS IO ON --报告与语句内引用的每个表的扫描数、逻辑读取数(在高速缓存中访问的页数)和物理读取数(访问磁盘的次数)有关的信息。
 SET STATISTICS TIME ON --显示每个查询执行后的结果集,代表查询执行的配置文件。
 SELECT [字段] FROM [表名] --SQL语句
 SET STATISTICS PROFILE OFF
 SET STATISTICS IO OFF
 SET STATISTICS TIME OFF

其他:https://www.cnblogs.com/Fooo/p/10621595.html

广告:

相关文章
SQL Server
卡慢
cms新闻系统购买咨询
扫描关注 广州阅速软件科技有限公司
扫描关注 广州阅速科技