随笔分类 - 性能
缓解 SQL Server has encountered 727 occurrence(s) of I/O requests taking longer than 15 seconds
摘要:sql server 会记录IO等待时间超过15 seconds的请求,这时application会有 time out 现象,dba需要判断是workload,concurrecy 所致还是sql server配置没有最优导致?二者之间的比例各占多少?1:判断sql server的配置是否最优化,...
阅读全文
在sqlserver中,优化器如何利用统计信息来估算返回的行数(三)
摘要:来看看多列过滤是如何估计返回的行数 use AdventureWorksgo--把毫秒全置为0,便于看到效果update dbo.DatabaseLog set PostTime=cast(CONVERT(varchar,PostTime,120) as datetime)update statistics DatabaseLog with fullscan--创建event索引creat...
阅读全文
在sqlserver中,优化器如何利用统计信息来估算返回的行数(二)
摘要:如果在TSQL中使用临时变量,优化器又是如何来评估行数的? dbcc FreeProcCache declare @dt datetime='2006-04-26 11:44:30.217' select * from dbo.DatabaseLog where PostTime=@dt OPTION ( QUERYTRACEON 3...
阅读全文
在sqlserver中,优化器如何利用统计信息来估算返回的行数(一)
摘要:先来看一幅图: 优化器是根据统计信息来生成执行计划的,具体来说是根据物理操作符(physical operator)预估返回的行数来生成执行计划的, 优化器预先是不知道真实数据分布情况的,所以统计信息准确与否直接决定了执行计划的优劣 先来看过滤条件为一个字段是如何评估返回的行数? use AdventureWorks go ...
阅读全文
小批量的删除大表数据
摘要:当要删除大表的数据时,一定要小批量的删除相应行,这样带来的好处为: 1:一个事物删除少数行,避免由行锁转化为表锁,从而阻塞业务的正常运行 2:事务提交后,日志文件可以重复使用! 以下有两种小批量的删除行的解决方案,测试它们的性能如何: 首先填充测试表: USE AdventureWorksGOSELECT * INTO TransactionHistory_temp FROM Producti...
阅读全文
EXISTS,IN,连接查询在SQL2008R2中性能如何?
摘要:在查询中使用exists来进行判断性能会高,因为exists有短路的效果,整个表不必查完,通常比IN效果来的好,现在SQL2008R2中用代码测试一下,看看结果: 首先是使用IN来查询: DBCC FREEPROCCACHECHECKPOINTDBCC DROPCLEANBUFFERSSELECT * FROM sales.salesorderheader AS soh WHERE contact...
阅读全文
子查询,连接查询,在SQL2008R2中性能如何?
摘要:以前或多或少的听说过,能用子查询的地方改用连接查询,性能有提升,如下的伪代码 select * from tab1 where col1 in (select col1 from tab2)select * from tab1 inner join tab2 on tab1.col1=tab2.col2 这种使用连接查询代替子查询的写法,据说在SQL2000中有效果,我没有测试过,这次...
阅读全文
添加组合索引时,做相等运算字段应该放在最前面
摘要:有一个通常的误解,觉得应该把选择性高的字段放在最前面,这通常只是针对一个字段的索引,对于组合索引,常常要把做等式运算的字段放在最前面,看看测试 USE AdventureWorksGOCREATE TABLE demo1 ( id INT identity(1,1) PRIMARY KEY, gender char(1) NOT NULL , age int NOT NUL...
阅读全文
添加 nolock 后速度慢了一倍有余
摘要:今天在优化语句是发现了很有意思的现象,平常的SELECT语句,都加上了NOLOCK提示,提高并发度减少阻塞,速度比没有加NOLOCK能明显感觉快, 今天的主要的两个表一个为24G,另一个为34G,行数为2千多万行。主要资源消耗在如下的SQL语句: select orderID from bigtable(nolock)binner join from biggertable(nolock) b...
阅读全文
SQLSERVER 2005分页脚本性能实测
摘要:网上有很多的分页T-SQL代码,分散在各处,主要的问题是:测试时数据量太小,最多只有2万多条,不同方法的体现出性能差别有疑惑,另外当初在学习sqlserver 2005 时,一位同学信誓旦旦说分页在SQLSERVER 2005中可以使用EXCEPT关键字,性能最好,理由是EXCEPT是集合运算。当时信以为真。工作以后,发现在SQLSERVER 2005中的分页存储过程都没有用到EXCEPT方法,就...
阅读全文
浙公网安备 33010602011771号