数据复制评测:insert into 与 select into 对比


insert into

消耗秒数/日志文件增长量

select * into

消耗秒数/日志文件增长量

简单日志 7 分 8 秒 / 10850 MB 2 分 10 秒 / 100MB
大容量日志 7 分 19 秒 / 10850 MB 2 分 / 100MB
完整日志 7 分 16 秒 / 10950 MB 5 分 23 秒 / 3800MB

源表:

name rows            reserved   data_size_MB    index_size_MB   unused_MB
t         36892291     3563          3555                          7                        0


----------- 0.创建测试数据库, 每次测试都重新创建1次, 共 6 次 -----------
IF EXISTS(SELECT * FROM sys.databases AS d WHERE d.name='test')
BEGIN
	ALTER DATABASE [test] SET  SINGLE_USER WITH ROLLBACK IMMEDIATE
	DROP DATABASE test
END
GO
CREATE DATABASE [test] ON PRIMARY 
( NAME = N'test', FILENAME = N'e:\database\2014\test.mdf' , SIZE = 51200KB , FILEGROWTH = 51200KB )
 LOG ON
( NAME = N'test_log', FILENAME = N'e:\database\2014\test_log.ldf' , SIZE = 51200KB , FILEGROWTH = 51200KB )
GO
ALTER DATABASE [test] SET RECOVERY FULL --SIMPLE , BULK_LOGGED
GO
----------- 测试1:  insert into
--创建表语句
USE test
GO
IF OBJECT_ID('[dbo].t') IS NOT NULL
	DROP TABLE [dbo].t
GO
CREATE TABLE [dbo].t(
	[id] [bigint] IDENTITY(1,1) NOT NULL,
	[xx] [nvarchar](30) NOT NULL,
CONSTRAINT [PK_t] PRIMARY KEY CLUSTERED 
(
	[id] ASC
)
) ON [PRIMARY]
GO
--插入测试
SET IDENTITY_INSERT test.[dbo].t ON
INSERT INTO test.[dbo].t
           (id,xx)
SELECT [id]
      ,xx
FROM source.[dbo].t WITH(NOLOCK)
GO
----------- 测试2:  select * into target from souce
--1. 简单日志 
SELECT * 
INTO test.dbo.t_simple
FROM [source].dbo.t WITH(nolock)

--2. 大容量日志
SELECT * 
INTO test.dbo.t_BULK_LOGGED
FROM [source].dbo.t WITH(nolock)

--3. 完整日志
SELECT * 
INTO test.dbo.t_FULL
FROM [source].dbo.t WITH(nolock)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值