在Server 2008中配置TDE时是否有最佳实践?在SQLMag上,“透明数据加密常见问题”说CPU的使用率可能增加了30%?
除了增加服务器马力之外,DBA在打开TDE时还有什么其他的功能吗?
发布于 2015-12-21 14:41:08
发布于 2015-12-23 10:49:00
首先,在对数据库进行加密之前,备份主密钥和证书,然后脱机存储。不要等到应用了TDE之后才这样做。还可以将密码存储在密码库中,并明确哪些密码与哪个对象相关;您确实不希望丢失这些密码。
TDE对数据库的影响完全取决于所涉及的工作负载:我最近将TDE应用于数据仓库,而对夜间负载的性能影响则为零,这表明流程不受CPU约束。但是,对于您的数据库来说可能不是这样。因此,如果您可以首先在dev环境上测试工作负载,那么就这样做。
加密的不仅仅是文件中的数据: TDE还将加密tempDB,因此如果您有其他数据库大量使用TempDB,您可能会注意到性能受到影响。备份和快照也是加密的。
还要考虑是否需要将此数据库恢复到其他环境(例如测试或UAT)。您需要将用于加密数据库的证书还原到这些其他服务器。这听起来可能不是什么大问题,但如果您在任何这些环境中都没有企业或开发人员,那么这可能会变得非常昂贵。在整个环境中应用TDE的另一种方法是将数据库还原到介于中间的实例,即企业/开发人员,或者对敏感数据进行扰扰,或者放弃加密,创建一个新的备份以恢复到其他环境。第二个选择可能不是最明智的,但它总是一个选择.
打开TDE时,有两个锁应用于数据库:共享锁和update锁。TechNet充分说明了这一点:
当启用(或禁用) TDE时,在sys.databases目录视图中将数据库标记为加密,并将DEK状态设置为Encryption。服务器启动一个后台线程(称为加密扫描或扫描),该线程扫描所有数据库文件并对它们进行加密(如果禁用TDE,则对它们进行解密)。当DDL执行时,数据库上会有一个更新锁。加密扫描异步运行到DDL,采用共享锁。所有与这些锁不冲突的正常操作都可以继续进行。排除的操作包括修改文件结构和分离数据库。虽然从缓冲池向磁盘的正常数据库写入是加密的,但日志文件写入可能不是。扫描还强制对虚拟日志文件(VLF)进行滚转,以确保将来对日志的写入是加密的。
我的经验是,数据仓库几乎没有在白天使用,一夜之间大量使用,所以我能够在一天中尽量少地使用TDE。如果您正在对生产中的OLTP进行加密,那么最好在维护窗口中对此进行计划,以尽量减少问题。
编辑:也是在压缩方面;虽然TDE确实会影响备份压缩,但它不会影响行/页/列存储压缩。因此,如果要平衡备份造成的压缩损失,可以压缩数据库中的对象。同样,取决于您的工作负载,您可能/可能不希望实现对数据库的压缩,因为它将进一步加重CPU的压力。有一篇关于压缩实现的优秀TechNet文章:https://technet.microsoft.com/en-us/library/dd894051%28v=sql.100%29.aspx
https://dba.stackexchange.com/questions/124241
复制相似问题