设为首页 加入收藏

TOP

导数中的最小化日志记录:测试和分析(二)
2015-11-21 01:24:59 来源: 作者: 【 】 浏览:2
Tags:最小化 日志 记录 测试 分析
--空堆表的情况,确认是最小化日志。
?
create table tb_heap1 (id int ,val char(100)) ;
INSERT INTO tb_heap1 with(tablock) select * from tb_source;
--非空堆表,将上面的数据再插入一遍即可。确认是最小化日志。
INSERT INTO tb_heap1 with(tablock) select * from tb_source;
?
5. INSERT INTO...SELECT...ODER BY(...),向聚集表中插入数据
?
--空的聚集表
create ?table tb_cix (id int ,val char(100))
create clustered index cix_tb_cix
on ?tb_cix (id)
go
dbcc traceon(610)
insert into tb_cix select * from tb_source order by id
?
同样,已有的数据页上是完整日志记录,其它是最小化日志记录。
--非空聚集表
?
--先插入70行数据,是完整日志记录的。
create ?table tb_cix2 (id int ,val char(100))
create clustered index cix_tb_cix2
on ?tb_cix2 (id)
go
declare @i int=0
while @i<70
begin
set @i=@i+1;
insert into tb_cix2 values(@i,'HoHo')
end
--再从tb_source插入ID>70的9930行
?
dbcc traceon(610)
insert into tb_cix2 select * from tb_source where id>70 order by id
?
可以看到只新了一条完整日志的记录,其它是最小化日志记录的。
?
6. INSERT INTO...SELECT...ODER BY(...),并行导入聚集表
?
前文提到SQL 2008之后结合键范围锁,不会锁定整个表,只锁定某部分的键值区间,其它操作可以并行访问此区间外的数据。
?
这里我打开三个session,同时插入三个区间的数据[1,1000],[3000,5000],[7000,9000]
?
create ?table tb_cix3 (id int ,val char(100))
create clustered index cix_tb_cix3
on ?tb_cix3 (id)
go
--session 1
dbcc traceon(610)
insert into tb_cix3 select * from tb_source where id between 1 and 1000 order by id
--session 2
dbcc traceon(610)
insert into tb_cix3 select * from tb_source where id between 3000 and 5000 order by id
option (querytraceon 2332)
--session 3
dbcc traceon(610)
insert into tb_cix3 select * from tb_source where id between 7000 and 9000 order by id
option (querytraceon 2332)
?
并行导入最好用ETL工具实现,特别是数据排序这一步。我在测试时,踩到一个坑:
当第一个insert 完成后,其它的insert的oder by会失效,造成无法最小化日志。除了第一个被执行的insert外,其它的执行计划中不会有SORT操作符。只好使用TF-2332,强制数据修改操作进行排序,也就是querytraceon 2332。还有就是数据量太少,都是瞬间完成,不好控制并发。
7. 在SSIS实际导数中的一个应用简单例子
?
? 这是实际项目中导数Destination的设置。一个聚集表导到另一个聚集表,实现了最小化日志。目标实例启用了TF-610,FastLoadOptions设置为根据目标表聚集索引键进行排序。

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Redis数据结构详解之List(二) 下一篇服务器端二次开发标准事务保存数据

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: