【请教!】

zhenaiyongheng 2009-03-02 02:56:54

客户反应在保存数据的时候非常慢,有时候新建一个客户要等待2-3分钟时间

根据sys.dm_os_wait_stats发现排列最前面的好似LATCH_EX(闩等待),

请问这样的等待是不是算正常?该怎么解决,给点建议

LATCH_EX 414770093
CXPACKET 353055875
SQLTRACE_BUFFER_FLUSH 220693421
SOS_SCHEDULER_YIELD 59583146
LCK_M_IX 90181593
...全文
210 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
fstao 2009-03-03
  • 打赏
  • 举报
回复
太打击回答人的积极性了,做人要有谦虚的美德
  • 打赏
  • 举报
回复
关注
no_mIss 2009-03-03
  • 打赏
  • 举报
回复
sys.dm_os_wait_stats是一个累积的信息,不一定具备可分析性.

而我在9楼说的办法,是监控你目前的状态,从而进行排查,这个比你去看什么闩更具实际意义。


一般来讲,数据库变慢,需要去监控目前或说当时的情况,不是去看从上次重启服务到现在的一个状态累积。
我说的三个办法配合,能分析出大多数情况下的问题瓶颈。
no_mIss 2009-03-03
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 zhenaiyongheng 的回复:]
引用 16 楼 no_mIss 的回复:
有点常识的人都不知道怎么去查为什么LATCH_EX过高?
有点常识的人都不知道LATCH_EX是怎么造成的?

.....无语了.


我问的是老大,你烦不烦!要你回答了吗,不懂的就别插嘴,装什么高手
[/Quote]

现在问问题的都是大爷?
viva369 2009-03-03
  • 打赏
  • 举报
回复
[Quote=引用楼主 zhenaiyongheng 的帖子:]
SQL code
客户反应在保存数据的时候非常慢,有时候新建一个客户要等待2-3分钟时间

根据sys.dm_os_wait_stats发现排列最前面的好似LATCH_EX(闩等待),

请问这样的等待是不是算正常?该怎么解决,给点建议

LATCH_EX 414770093
CXPACKET 353055875
SQLTRACE_BUFFER_FLUSH 220693421
SOS_SCHEDULER_YIELD 59583146
LCK_M_IX 90181593
[/Quote]

CXPACKET是查询并行的等待,LATCH_EX比这个值还要大,系统存在严重资源竞争
闩属sql内部存储引擎锁,不是很好找,等待高手!
zhenaiyongheng 2009-03-03
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 no_mIss 的回复:]
有点常识的人都不知道怎么去查为什么LATCH_EX过高?
有点常识的人都不知道LATCH_EX是怎么造成的?

.....无语了.
[/Quote]

说你答非所问,还不承认!
zhenaiyongheng 2009-03-03
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 no_mIss 的回复:]
有点常识的人都不知道怎么去查为什么LATCH_EX过高?
有点常识的人都不知道LATCH_EX是怎么造成的?

.....无语了.
[/Quote]

我问的是老大,你烦不烦!要你回答了吗,不懂的就别插嘴,装什么高手
no_mIss 2009-03-03
  • 打赏
  • 举报
回复
有点常识的人都不知道怎么去查为什么LATCH_EX过高?
有点常识的人都不知道LATCH_EX是怎么造成的?

.....无语了.
zhenaiyongheng 2009-03-03
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 no_mIss 的回复:]
引用 11 楼 zhenaiyongheng 的回复:
引用 9 楼 no_mIss 的回复:
我记得这sys.dm_os_wait_stats是个累积的.

建议按如下步骤解决:

1.sp_who2 查看是否有锁堵塞
2.sql profiler 找出耗时的sql查询,看是否可以优化
3.打开windows性能计数据,看看io等待有多少

逐一排查,解决问题。


已经找到等待的类型了,

还叫我用windows性能计数据去找,老大,看清楚我的问题再回答好不好


你能确定是等待了…
[/Quote]

你说的这些方法,有点sql常识的人都会啊
堵塞,耗时sql都会造成SQLTRACE_BUFFER_FLUSH
我问的是LATCH_EX过高是否正常!如果不正常,LATCH_EX又是怎么造成的?
no_mIss 2009-03-02
  • 打赏
  • 举报
回复
而且我已经告诉你,这个视图的值是一个累积的值,不一定具备准确的可分析性.
no_mIss 2009-03-02
  • 打赏
  • 举报
回复
你知道是锁等待,我告诉你怎么去找,你居然说“竟说些没用的”,看你的结贴率,真不该搭理你。
no_mIss 2009-03-02
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 zhenaiyongheng 的回复:]
引用 9 楼 no_mIss 的回复:
我记得这sys.dm_os_wait_stats是个累积的.

建议按如下步骤解决:

1.sp_who2 查看是否有锁堵塞
2.sql profiler 找出耗时的sql查询,看是否可以优化
3.打开windows性能计数据,看看io等待有多少

逐一排查,解决问题。


已经找到等待的类型了,

还叫我用windows性能计数据去找,老大,看清楚我的问题再回答好不好
[/Quote]

你能确定是等待了,你还来问,你还问个P.

zhenaiyongheng 2009-03-02
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 no_mIss 的回复:]
我记得这sys.dm_os_wait_stats是个累积的.

建议按如下步骤解决:

1.sp_who2 查看是否有锁堵塞
2.sql profiler 找出耗时的sql查询,看是否可以优化
3.打开windows性能计数据,看看io等待有多少

逐一排查,解决问题。
[/Quote]

已经找到等待的类型了,

还叫我用windows性能计数据去找,老大,看清楚我的问题再回答好不好
zhenaiyongheng 2009-03-02
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 no_mIss 的回复:]
我记得这sys.dm_os_wait_stats是个累积的.

建议按如下步骤解决:

1.sp_who2 查看是否有锁堵塞
2.sql profiler 找出耗时的sql查询,看是否可以优化
3.打开windows性能计数据,看看io等待有多少

逐一排查,解决问题。
[/Quote]

竟说些没用的
no_mIss 2009-03-02
  • 打赏
  • 举报
回复
我记得这sys.dm_os_wait_stats是个累积的.

建议按如下步骤解决:

1.sp_who2 查看是否有锁堵塞
2.sql profiler 找出耗时的sql查询,看是否可以优化
3.打开windows性能计数据,看看io等待有多少

逐一排查,解决问题。
claro 2009-03-02
  • 打赏
  • 举报
回复
--用sys.dm_exec_query_stats 动态管理查看查询最耗 IO 资源的语句

http://blog.csdn.net/claro/archive/2008/12/16/3531230.aspx
claro 2009-03-02
  • 打赏
  • 举报
回复
--查询数据库中表空间使用状况

http://blog.csdn.net/claro/archive/2008/10/09/3040271.aspx
claro 2009-03-02
  • 打赏
  • 举报
回复
claro 2009-03-02
  • 打赏
  • 举报
回复
--建议楼主关注磁盘活动及耗时查询
--1查看数据库内表使用的硬盘空间分配
SELECT a3.name AS [Schema 名称],
a2.name AS [表名称],
a1.rows as 记录条数,
(a1.reserved + ISNULL(a4.reserved,0))* 8 AS [保留空间(K)],
a1.data * 8 AS [数据使用空间(k)],
(CASE WHEN (a1.used + ISNULL(a4.used,0)) > a1.data
THEN (a1.used + ISNULL(a4.used,0)) - a1.data
ELSE 0 END) * 8 AS [索引使用空间(k)],
(CASE WHEN (a1.reserved + ISNULL(a4.reserved,0)) > a1.used
THEN (a1.reserved + ISNULL(a4.reserved,0)) - a1.used
ELSE 0 END) * 8 AS [未用空间(k)],
a1.data * 8*1024/(CASE WHEN a1.Rows=0 THEN 1 ELSE a1.Rows END) 平均每条记录长度
FROM
(
SELECT
ps.object_id,
SUM (
CASE
WHEN (ps.index_id < 2) THEN row_count
ELSE 0
END
) AS [rows],
SUM (ps.reserved_page_count) AS reserved,
SUM (
CASE
WHEN (ps.index_id < 2) THEN
(ps.in_row_data_page_count + ps.lob_used_page_count + ps.row_overflow_used_page_count)
ELSE (ps.lob_used_page_count + ps.row_overflow_used_page_count)
END
) AS data,
SUM (ps.used_page_count) AS used
FROM sys.dm_db_partition_stats ps
GROUP BY ps.object_id) AS a1
LEFT OUTER JOIN
(
SELECT
it.parent_id,
SUM(ps.reserved_page_count) AS reserved,
SUM(ps.used_page_count) AS used
FROM sys.dm_db_partition_stats ps
INNER JOIN sys.internal_tables it ON (it.object_id = ps.object_id)
WHERE it.internal_type IN (202,204)
GROUP BY it.parent_id
) AS a4 ON (a4.parent_id = a1.object_id)
INNER JOIN sys.all_objects a2 ON ( a1.object_id = a2.object_id )
INNER JOIN sys.schemas a3 ON (a2.schema_id = a3.schema_id)
WHERE a2.type <> N'S' and a2.type <> N'IT'
ORDER BY [保留空间(K)] DESC
claro 2009-03-02
  • 打赏
  • 举报
回复

楼主多提供一些信息。比如一个月前响应时间,目前响应时间,比较下来现在程序变慢,还是其他情况?
如果不是刚上线的程序问题,是否跟硬件有关?提供一些硬件的信息比如磁盘等。
看不懂下面的
[Quote=引用楼主 zhenaiyongheng 的帖子:]
LATCH_EX414770093CXPACKET353055875SQLTRACE_BUFFER_FLUSH220693421SOS_SCHEDULER_YIELD59583146LCK_M_IX90181593
[/Quote]
加载更多回复(3)

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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