随笔分类 - 数据库开发
关于分页存储过程的优化【让数据库按我们的意思执行查询计划】
摘要:先来对比两段分页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
阅读全文
几个有用的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:%'下面...
阅读全文
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...
阅读全文
关于添加索引视图后的数据存储区别
摘要:为基表添加索引视图后,在INSERT新的数据时,索引视图是如何添加数据的?是通过扫描基表来更新视图?还是根据视图定义直接计算后加入索引视图?下面是分析案例。 现有基表news,数据行5280,数据页240 。在未创建索引视图的情况与添加数据:INSERT news (title,ShortTitle,NewsMemo,NewsTypeId,IsDelete,IsVerify,IsUserPost...
阅读全文
索引视图
摘要:在视图上建的第一个索引必须是聚集索引,因为聚集索引的叶级包含了所有数据,此索引实际上确实对视图进行了物化(持久化存储)。视图的数据被物理地存储在聚焦索引的叶级别中。 索引视图要求所有用到的函数都必须是确实性的。且视图定义不能包含任何下列元素: TOP text、ntext或者image字段 DISTINCT MIN、MAX、COUNT(*)、COUNT(<表达式>)、STDEV、VARIANCE...
阅读全文
添加计算列,并创建索引
摘要:添加列: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...
阅读全文
IO瓶颈
摘要:下列系统监视计数器来检测物理磁盘级IO瓶颈: 物理磁盘对象:磁盘队列平均长度(Avg.Disk Queue Length) 指的是抽样间隔内所选中的物理磁盘上排除等待的物理读/写请求的平均数据。如果IO系统超负荷了,更多的读/写操作就会陷入等待。如果每个物理磁盘的磁盘队列长度总是超过SQL Server巅峰使用期时的数值2,那么很可能就出现了IO瓶颈。 物理磁盘对象:磁盘每次读/写平均用时(Av...
阅读全文
内存瓶颈
摘要:内存有压力时,一个查询计划可能得移出内存。如果这个计划被再次提交执行,就必须再优化一次,而由于查询优化是CPU密集型运算,这就会给CPU带来压力。同样,内存有压力时,数据库页面可能需要被移出缓冲区池。如果这些页面很快就再次被选中,就会导致更多的物理IO。 通常所说的内存指的是服务器上的可用物理内存(既RAM)。还有另外一种内存叫做虚拟地址空间(VAS)或虚拟内存。在Windows系统上,所有3...
阅读全文
检测CPU瓶颈
摘要:对于SQL Server的一个工作进程的状态有很多,主要状态有运行中(RUNNING)、可运行(RUNNABLE)和挂起(SUSPENED)3种。 通过查看系统监视计数器Processor:% Processor Time,可以确定CPU瓶颈。如果这个计数器的值很高。比如持续15-20分钟超80%,就意味着CPU出现了瓶颈。 检测CPU压力的另一个方法是计算可运行状态下的工作进程数量,通过执行如下...
阅读全文
浙公网安备 33010602011771号