无鱼之水

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2010年12月29日

摘要: 今天改一处效率问题,对一个临时表进行分段累加计算,累加方式为累积(Cumulative Aggregations),大约9万条记录的表,时间超过三分钟。执行环境:SQL SERVER 2005 ENTERPRISE EDITION8 CPU CORES16G MAXSERVERMEMORY累加算法如下:代码 执行计划可以想象,内连接驱动假脱机(Inner Join Drived Eager Spool)。其中假脱机运算符占据了多数的CPU时间。 一开始打算使用开窗聚合函数(Window Aggregations),查资料发现SQL SERVER 2005只为聚合函数实现了带Partion语句的 阅读全文
posted @ 2010-12-29 18:43 陈伟强 阅读(231) 评论(0) 推荐(0) 编辑

摘要: 今天修改一处并发问题,小记如下。 程序的核心代码包括以下存储过程(示例代码,未包含索引及TRY..CATCH逻辑)。持锁存储过程 程序的基本逻辑是这样的: 程序在并发条件下经常出现超时情况,Profiler截取GenerateLSH执行时间没有发现明显规律。 转而一想,由于启用了RCSI,是否跟存储过程中唯一的一句Update语句有关。因为只有这一句会持有KEY锁。这个存储过程只能是线性执行,其持有的KEY锁生命周期为: @time = TimePoint(Commit Tran) - TimePoint(Exec Proc) 以程序30秒的超时间隔计算,允许的并发数可粗略计算为: @coun 阅读全文
posted @ 2010-12-29 18:36 陈伟强 阅读(326) 评论(2) 推荐(0) 编辑