08 2012 档案
小批量的删除大表数据
摘要:当要删除大表的数据时,一定要小批量的删除相应行,这样带来的好处为: 1:一个事物删除少数行,避免由行锁转化为表锁,从而阻塞业务的正常运行 2:事务提交后,日志文件可以重复使用! 以下有两种小批量的删除行的解决方案,测试它们的性能如何: 首先填充测试表: USE AdventureWorksGOSELECT * INTO TransactionHistory_temp FROM Producti...
阅读全文
autoShrink和手动收缩数据文件
摘要:1:当autoshrink开启时,如果手动收缩数据文件,会提示错误,因为此时有个后台线程正在收缩数据文件,那有没有办法kill掉这个后台线程呢? 答案是没有,只能关闭数据库选项autoshrink,然后一直等到,直到该线程自己结束!详细的说明在【这里】 2:能不能收缩数据文件? 看看收缩数据文件的缺点:详细的介绍在【这里】,现摘录如下: a:收缩文件时会把该数据文件...
阅读全文
TSQL糟糕的编码规范
摘要:作为一名DBA,不免要与形形色色的TSQL代码打交道,看以下的三例: 1:distinct 中乱用括号: SELECT DISTINCT (TransactionID),ProductID,TransactionTypeFROM adventureworks.Production.TransactionHistoryArchive 与下面这句结果是一模一样,但上面这句可能使人迷糊...
阅读全文
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...
阅读全文
SQL SERVER复制拓扑结构中,订阅端宕机后的处理.....(二)
摘要:接着上一章当订阅端长时间没有连上,且同时在发布端有大量的insert语句,来看看:USE mysales_normalGOINSERT INTO [mysales_normal].[myinventory].[Vendor]SELECT addressid,substring(addressline1,1,20),substring(city,1,10),substring(city,1,10),substring(city,1,5),substring(city,1,10) FROM AdventureWorks.person.ADDRESSWHERE AddressID>10000这
阅读全文
SQL SERVER复制拓扑结构中,订阅端宕机后的处理.....(一)
摘要:前提:本次描述的是SQL SERVER 2008R2版本,其它版本没有测试,复制类型主要是Transaction Replication和P2P复制 无论是高可用,高可扩展,还是高性能,SQLSERVER的复制分发都是一个不错的选项,配置相对容易,对前台程序的改动也少,因此使用很广泛,但是后期的日常维护,故障排错就麻烦了, 需要对复制分发的原理,元数据表等相当的了解之后才有可为,否知的话...
阅读全文
浙公网安备 33010602011771号