摘要:
sql server 会记录IO等待时间超过15 seconds的请求,这时application会有 time out 现象,dba需要判断是workload,concurrecy 所致还是sql server配置没有最优导致?二者之间的比例各占多少?1:判断sql server的配置是否最优化,... 阅读全文
摘要:
来看看多列过滤是如何估计返回的行数 use AdventureWorksgo--把毫秒全置为0,便于看到效果update dbo.DatabaseLog set PostTime=cast(CONVERT(varchar,PostTime,120) as datetime)update statistics DatabaseLog with fullscan--创建event索引creat... 阅读全文
摘要:
如果在TSQL中使用临时变量,优化器又是如何来评估行数的? dbcc FreeProcCache declare @dt datetime='2006-04-26 11:44:30.217' select * from dbo.DatabaseLog where PostTime=@dt OPTION ( QUERYTRACEON 3... 阅读全文
摘要:
先来看一幅图: 优化器是根据统计信息来生成执行计划的,具体来说是根据物理操作符(physical operator)预估返回的行数来生成执行计划的, 优化器预先是不知道真实数据分布情况的,所以统计信息准确与否直接决定了执行计划的优劣 先来看过滤条件为一个字段是如何评估返回的行数? use AdventureWorks go ... 阅读全文
摘要:
当要删除大表的数据时,一定要小批量的删除相应行,这样带来的好处为: 1:一个事物删除少数行,避免由行锁转化为表锁,从而阻塞业务的正常运行 2:事务提交后,日志文件可以重复使用! 以下有两种小批量的删除行的解决方案,测试它们的性能如何: 首先填充测试表: USE AdventureWorksGOSELECT * INTO TransactionHistory_temp FROM Producti... 阅读全文
摘要:
1:当autoshrink开启时,如果手动收缩数据文件,会提示错误,因为此时有个后台线程正在收缩数据文件,那有没有办法kill掉这个后台线程呢? 答案是没有,只能关闭数据库选项autoshrink,然后一直等到,直到该线程自己结束!详细的说明在【这里】 2:能不能收缩数据文件? 看看收缩数据文件的缺点:详细的介绍在【这里】,现摘录如下: a:收缩文件时会把该数据文件... 阅读全文
摘要:
作为一名DBA,不免要与形形色色的TSQL代码打交道,看以下的三例: 1:distinct 中乱用括号: SELECT DISTINCT (TransactionID),ProductID,TransactionTypeFROM adventureworks.Production.TransactionHistoryArchive 与下面这句结果是一模一样,但上面这句可能使人迷糊... 阅读全文
摘要:
在查询中使用exists来进行判断性能会高,因为exists有短路的效果,整个表不必查完,通常比IN效果来的好,现在SQL2008R2中用代码测试一下,看看结果: 首先是使用IN来查询: DBCC FREEPROCCACHECHECKPOINTDBCC DROPCLEANBUFFERSSELECT * FROM sales.salesorderheader AS soh WHERE contact... 阅读全文
摘要:
以前或多或少的听说过,能用子查询的地方改用连接查询,性能有提升,如下的伪代码 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... 阅读全文