您的位置:首页 > 数据库

SQL SERVER实践应用--TED透明数据加密及性能测试

2012-01-10 14:43 405 查看
---------------------------------------------------------------------

--创建主密钥

use master

Create MASTER KEY ENCRYPTION

BY PASSWORD = 'zhouwei123!'

GO

--创建证书,用于透明数据加密

CREATE CERTIFICATE TDE_Server_Certificate

WITH SUBJECT = 'Server-level cert for TDE'

GO

--第一步:现在开始透明加密

USE cte

GO

CREATE DATABASE ENCRYPTION KEY--创建数据库加密密钥

WITH ALGORITHM = TRIPLE_DES_3KEY--加密方式

ENCRYPTION BY SERVER CERTIFICATE TDE_Server_Certificate--使用服务器级证书加密

GO

--第二步打开加密开关

ALTER DATABASE cte

SET ENCRYPTION ON

GO

--查看数据库是否加密

SELECT name ,is_encrypted

FROM sys.databases



--第三步在cte及nocet中创建相同表

use cte

create table GoodsInfoCte

(

Autoid int identity(1,1) primary key,

GoodsId int,

GoodsName varchar(50),

CusID int,

CusName varchar(50)

);

go

use nocte

create table GoodsInfoNocte

(

Autoid int identity(1,1) primary key,

GoodsId int,

GoodsName varchar(50),

CusID int,

CusName varchar(50)

);

Go

--第四步:清空缓存

DBCC FLUSHPROCINDB(5)

DBCC FLUSHPROCINDB(9)

---------------------------------------------------------------------

插入100000记录对比

--insert nocte..GoodsInfoNocte 100000

declare @b int

set @b=1

while(@b<100000)

begin

insert into nocte..GoodsInfoNocte(GoodsId,GoodsName,CusID,CusName)

select 123,'pc-dell',123456,'张三×××××××××××'

set @b=@b+1

end

insert into nocte..GoodsInfoNocte(GoodsId,GoodsName,CusID,CusName)

select GoodsId,GoodsName,CusID,CusName from logshink..GoodsInfo

--insert nocte..GoodsInfoNocte 100000

declare @b int

set @b=1

while(@b<100000)

begin

insert into nocte..GoodsInfoNocte(GoodsId,GoodsName,CusID,CusName)

select 123,'pc-dell',123456,'张三×××××××××××'

set @b=@b+1

end

insert into nocte..GoodsInfoNocte(GoodsId,GoodsName,CusID,CusName)

select GoodsId,GoodsName,CusID,CusName from logshink..GoodsInfo

执行时间对比(1-6 是循环语句执行时间,7-10从logshink..GoodsInfo插入):

1

2

3

4

5

6

7

8

9

10

37

38

36

37

36

37

CPU 时间 = 1903 毫秒,占用时间 = 3042 毫秒

CPU 时间 = 2028 毫秒,占用时间 = 2921 毫秒

CPU 时间 = 1981 毫秒,占用时间 = 2999 毫秒

CPU 时间 = 1965 毫秒,占用时间 = 3244 毫秒

29

28

29

30

29

30

CPU 时间 = 515 毫秒,占用时间 = 1223 毫秒

CPU 时间 = 562 毫秒,占用时间 = 1175 毫秒

CPU 时间 = 483 毫秒,占用时间 = 1105 毫秒

CPU 时间 = 515 毫秒,占用时间 = 1275 毫秒

I0对比:

表'GoodsInfoCte'。扫描计数0,逻辑读取322516 次,物理读取0 次,预读658 次,lob 逻辑读取0 次,lob 物理读取0 次,lob 预读0 次。

表'GoodsInfo'。扫描计数1,逻辑读取748 次,物理读取0 次,预读0 次,lob 逻辑读取0 次,lob 物理读取0 次,lob 预读0 次。

表'GoodsInfoNocte'。扫描计数0,逻辑读取322516 次,物理读取0 次,预读658 次,lob 逻辑读取0 次,lob 物理读取0 次,lob 预读0 次。

表'GoodsInfo'。扫描计数1,逻辑读取748 次,物理读取0 次,预读0 次,lob 逻辑读取0 次,lob 物理读取0 次,lob 预读0 次。

占用空间对比:



---------------------------------------------------------------------

查询前300000对比

select top 300000 * from nocte..GoodsInfoNocte

select top 300000 * from cte..GoodsInfoCte

实际执行计划对比(左:GoodsInfoNocte,右:GoodsInfoCte)



执行时间对比(上:GoodsInfoNocte,下:GoodsInfoCte):

1

2

3

4

5

6

CPU 时间= 109 毫秒,占用时间= 3338 毫秒。

CPU 时间= 62 毫秒,占用时间= 3285 毫秒。

CPU 时间= 109 毫秒,占用时间= 3263 毫秒。

CPU 时间= 125 毫秒,占用时间= 3271 毫秒。

CPU 时间= 234 毫秒,占用时间= 3353 毫秒。

CPU 时间= 265 毫秒,占用时间= 3353 毫秒。

CPU 时间= 234 毫秒,占用时间= 3283 毫秒。

CPU 时间= 250 毫秒,占用时间= 3310 毫秒。

CPU 时间= 187 毫秒,占用时间= 3291 毫秒。。

CPU 时间= 78 毫秒,占用时间= 3291 毫秒。

CPU 时间= 125 毫秒,占用时间= 3282 毫秒。

CPU 时间= 156 毫秒,占用时间= 3323 毫秒。

IO 对比:

表'GoodsInfoNocte'。扫描计数1,逻辑读取2255 次,物理读取0 次,预读0 次,lob 逻辑读取0 次,lob 物理读取0 次,lob 预读0 次。

表'GoodsInfoCte'。扫描计数1,逻辑读取2254 次,物理读取0 次,预读0 次,lob 逻辑读取0 次,lob 物理读取0 次,lob 预读0 次。

---------------------------------------------------------------------

更改300000记录对比

update nocte..GoodsInfoNocte set GoodsName='pc-hp' where Autoid<300000

update cte..GoodsInfoCte set GoodsName='pc-hp' where Autoid<300000

实际执行计划对比(左:GoodsInfoNocte,右:GoodsInfoCte)



Io对比

表'GoodsInfoNocte'。扫描计数1,逻辑读取2250 次,物理读取0 次,预读0 次,lob 逻辑读取0 次,lob 物理读取0 次,lob 预读0 次。

表'GoodsInfoCte'。扫描计数1,逻辑读取2250 次,物理读取0 次,预读0 次,lob 逻辑读取0 次,lob 物理读取0 次,lob 预读0 次。

执行时间对比:

DBCC FLUSHPROCINDB(5)

DBCC FLUSHPROCINDB(9)

update nocte..GoodsInfoNocte set GoodsName='pc-hp1-aa' where Autoid<300000

CPU 时间 = 2434 毫秒,占用时间 = 3438 毫秒

update nocte..GoodsInfoNocte set GoodsName='pc-hp2-bb' where Autoid<300000

CPU 时间 = 609 毫秒,占用时间 = 1213 毫秒

update nocte..GoodsInfoNocte set GoodsName='pc-hp3-cc' where Autoid<300000

CPU 时间 = 671 毫秒,占用时间 = 715 毫秒

update nocte..GoodsInfoNocte set GoodsName='pc-hp4-dd' where Autoid<300000

CPU 时间 = 593 毫秒,占用时间 = 677 毫秒

update nocte..GoodsInfoNocte set GoodsName='pc-hp5-ee' where Autoid<300000

CPU 时间 = 639 毫秒,占用时间 = 688 毫秒

update cte..GoodsInfoCte set GoodsName='pc-hp1-aa' where Autoid<300000

CPU 时间 = 5335 毫秒,占用时间 = 7251 毫秒

update cte..GoodsInfoCte set GoodsName='pc-hp2-bb' where Autoid<300000

CPU 时间 = 3791 毫秒,占用时间 = 6196 毫秒

update cte..GoodsInfoCte set GoodsName='pc-hp3-cc' where Autoid<300000

CPU 时间 = 3916 毫秒,占用时间 = 6197 毫秒

update cte..GoodsInfoCte set GoodsName='pc-hp4-dd' where Autoid<300000

CPU 时间 = 3401 毫秒,占用时间 = 5141 毫秒

update cte..GoodsInfoCte set GoodsName='pc-hp5-ee' where Autoid<300000

CPU 时间 = 3931 毫秒,占用时间 = 5933 毫秒

删除 前300000条记录

DBCC FLUSHPROCINDB(5)

DBCC FLUSHPROCINDB(9)

delete from nocte..GoodsInfoNocte where Autoid<300000

CPU 时间 = 624 毫秒,占用时间 = 2477 毫秒。

delete from cte..GoodsInfoCte where Autoid<300000

CPU 时间 = 3011 毫秒,占用时间 = 7073 毫秒
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: