随笔分类 -  数据库开发

关于分页存储过程的优化【让数据库按我们的意思执行查询计划】
摘要:先来对比两段分页SQL,假设条件:news表有15万记录,NewsTypeId=10有9万记录,当前查询NewsTypeID=10。那么,你会认为哪个SQL效率会高呢?--代码一DECLARE @cc INTSELECT NewsId,ROW_NUMBER() OVER(ORDER BY SortNum DESC) AS RowIndex INTO #tb FROM news WITH(NOLOCK) WHERE NewsTypeId=@NewsTypeId AND IsShow=1SET @cc = @@ROWCOUNTSELECT n.* FROM news AS n WITH(NOLOC 阅读全文
posted @ 2011-08-25 17:28 ideas 阅读(490) 评论(0) 推荐(0)
几个有用的DMV查询
摘要:找出是否存在一个或多个等待获取 tempdb 中页面锁存器的线程SELECT session_id,wait_type, wait_duration_ms, resource_descriptionFROM sys.dm_os_waiting_tasksWHERE wait_type LIKE 'PAGE%LATCH_%' AND resource_description LIKE '2:%'下面... 阅读全文
posted @ 2011-04-18 11:29 ideas 阅读(535) 评论(0) 推荐(0)
MongoDB 学习笔记—MapReduce
摘要:db.runCommand( { mapreduce : <collection>, map : <mapfunction>, reduce : <reducefunction> [, query : <query filter object>] [, sort : <sort the query. useful for optimization>] [, limit : <number of o... 阅读全文
posted @ 2011-03-28 14:49 ideas 阅读(2336) 评论(0) 推荐(0)
关于添加索引视图后的数据存储区别
摘要:为基表添加索引视图后,在INSERT新的数据时,索引视图是如何添加数据的?是通过扫描基表来更新视图?还是根据视图定义直接计算后加入索引视图?下面是分析案例。 现有基表news,数据行5280,数据页240 。在未创建索引视图的情况与添加数据:INSERT news (title,ShortTitle,NewsMemo,NewsTypeId,IsDelete,IsVerify,IsUserPost... 阅读全文
posted @ 2011-02-28 11:44 ideas 阅读(615) 评论(0) 推荐(0)
索引视图
摘要:在视图上建的第一个索引必须是聚集索引,因为聚集索引的叶级包含了所有数据,此索引实际上确实对视图进行了物化(持久化存储)。视图的数据被物理地存储在聚焦索引的叶级别中。 索引视图要求所有用到的函数都必须是确实性的。且视图定义不能包含任何下列元素: TOP text、ntext或者image字段 DISTINCT MIN、MAX、COUNT(*)、COUNT(<表达式>)、STDEV、VARIANCE... 阅读全文
posted @ 2011-02-25 17:42 ideas 阅读(356) 评论(0) 推荐(0)
添加计算列,并创建索引
摘要:添加列:ALTER TABLE tablename ADD okcolumn AS CASE WHEN NewsUrl<>'' AND IsDeleted=0 AND IsVerify=1 AND IsUserPost=0 THEN 1 ELSE 0 END PERSISTED;PERSISTED 将列标记为持久化的。如果决定要使用PERSISTED时,必须判断列是否是精确的,通过下面查询判断:S... 阅读全文
posted @ 2011-02-25 17:00 ideas 阅读(401) 评论(0) 推荐(0)
IO瓶颈
摘要:下列系统监视计数器来检测物理磁盘级IO瓶颈: 物理磁盘对象:磁盘队列平均长度(Avg.Disk Queue Length) 指的是抽样间隔内所选中的物理磁盘上排除等待的物理读/写请求的平均数据。如果IO系统超负荷了,更多的读/写操作就会陷入等待。如果每个物理磁盘的磁盘队列长度总是超过SQL Server巅峰使用期时的数值2,那么很可能就出现了IO瓶颈。 物理磁盘对象:磁盘每次读/写平均用时(Av... 阅读全文
posted @ 2011-02-11 17:41 ideas 阅读(1895) 评论(0) 推荐(0)
内存瓶颈
摘要:内存有压力时,一个查询计划可能得移出内存。如果这个计划被再次提交执行,就必须再优化一次,而由于查询优化是CPU密集型运算,这就会给CPU带来压力。同样,内存有压力时,数据库页面可能需要被移出缓冲区池。如果这些页面很快就再次被选中,就会导致更多的物理IO。   通常所说的内存指的是服务器上的可用物理内存(既RAM)。还有另外一种内存叫做虚拟地址空间(VAS)或虚拟内存。在Windows系统上,所有3... 阅读全文
posted @ 2011-02-11 17:02 ideas 阅读(597) 评论(0) 推荐(0)
检测CPU瓶颈
摘要:对于SQL Server的一个工作进程的状态有很多,主要状态有运行中(RUNNING)、可运行(RUNNABLE)和挂起(SUSPENED)3种。 通过查看系统监视计数器Processor:% Processor Time,可以确定CPU瓶颈。如果这个计数器的值很高。比如持续15-20分钟超80%,就意味着CPU出现了瓶颈。 检测CPU压力的另一个方法是计算可运行状态下的工作进程数量,通过执行如下... 阅读全文
posted @ 2011-02-10 11:34 ideas 阅读(509) 评论(0) 推荐(0)
按平均 CPU 时间排在前五个的查询
摘要:[代码] 阅读全文
posted @ 2009-09-04 14:12 ideas 阅读(210) 评论(0) 推荐(0)
按在 CLR 内所使用的平均时间标识前五个查询
摘要:[代码] 阅读全文
posted @ 2009-09-04 14:11 ideas 阅读(215) 评论(0) 推荐(0)