【发布时间】:2015-05-20 05:56:27
【问题描述】:
几年来,我们一直在使用对称密钥对一些 SQL Server 2012 实例进行加密/解密。我们最近安装了一些新的 SQL Server 2014 实例,在解密 SQL Server 2014 安装数据时遇到了一些性能问题。
考虑一个如下所示的表格:
CREATE TABLE [dbo].[tblCertTest](
[article_id_enc] [varbinary](100) NOT NULL,
[article_id] [int] NULL
) ON [PRIMARY]
以及像这样创建的密钥和证书:
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'Passwrrrrd12'
CREATE CERTIFICATE MyCertificateName
WITH SUBJECT = 'A label for this certificate'
CREATE SYMMETRIC KEY MySymmetricKeyName WITH
IDENTITY_VALUE = 'a fairly secure name',
ALGORITHM = AES_256,
KEY_SOURCE = 'a very secure strong password or phrase'
ENCRYPTION BY CERTIFICATE MyCertificateName;
我们的数据集大约有 90000 行,article_id 是一个 5 位数字。稍微简化一下,article_id_enc 使用以下命令加密:
update tblCertTest set article_id_enc = ENCRYPTBYKEY(KEY_GUID('MySymmetricKeyName'),convert(varbinary(100), article_id))
我们已经应用了所有可用的修补程序,我们尝试过使用不同设置的 SQL Server 2012 和 SQL Server 2014 的不同实例,如 ssd 磁盘、ram 磁盘等。
我们已经在 SQL Server 本地和远程尝试了查询。
所有服务器上的执行计划和索引都相同。
此 SELECT 语句在任何 SQL Server 2012 服务器上大约需要 50 毫秒,包括简单的开发机器。在任何 SQL Server 2014 服务器(包括非常强大的服务器)上,查询至少需要 1500 毫秒。
OPEN SYMMETRIC KEY MySymmetricKeyName
DECRYPTION BY CERTIFICATE MyCertificateName
SELECT CONVERT(int, DecryptByKey(article_id_enc))
FROM dbo.tblCertTest
关于为什么查询在 SQL Server 2014 上执行如此糟糕的任何建议?有什么变化?
【问题讨论】:
标签: sql-server encryption sql-server-2012 database-performance sql-server-2014