透明數(shù)據(jù)加密TDE測試報(bào)告
本文介紹不同規(guī)格的RDS MySQL實(shí)例在開啟和未開啟TDE加密場景下的性能影響,包括對CPU、內(nèi)存的影響,幫助您評估是否選擇TDE加密。
測試結(jié)論
開啟TDE功能后,RDS MySQL實(shí)例性能均有所損失,CPU均有所上升。
在低并發(fā)下,RDS MySQL 實(shí)例性能損失較為明顯,最高可達(dá)20%;而在高并發(fā)下,由于IO合并等原因,性能損失有所下降,在5%以下。
4C16G實(shí)例開啟TDE并訪問加密表CPU上漲0.06%~4.22%;8C32G實(shí)例CPU上漲0.12%~2.86%。
從整體上看,在寫場景例如oltp_write_only、oltp_update_index下性能損失較為明顯。
測試環(huán)境
配置項(xiàng) | 測試場景一 | 測試場景二 |
地域及可用區(qū) | cn-hangzhou | |
網(wǎng)絡(luò)類型 | 專有網(wǎng)絡(luò) VPC | |
硬件架構(gòu) | x86 64 | |
存儲(chǔ)類型 | 本地SSD盤 | |
CPU | 4 核 | 8 核 |
內(nèi)存 | 16 GB | 32 GB |
BP 配置 | 12 GB | 24 GB |
最大 IOPS | 7000 | 12000 |
實(shí)例版本 | mysql80_8.0.28_20230610 | |
測試集數(shù)據(jù)量 | 41 GB |
配置項(xiàng)中的BP配置指的是innodb_buffer_pool參數(shù)值即內(nèi)存池大小。
目前云盤版本RDS MySQL實(shí)例尚不支持TDE功能。
測試工具
sysbench是一個(gè)跨平臺(tái)且支持多線程的模塊化基準(zhǔn)開源測試工具,用于評估系統(tǒng)在運(yùn)行高負(fù)載數(shù)據(jù)庫時(shí)的性能。sysbench的更多信息及使用方法,請參見sysbench文檔。
測試指標(biāo)
每秒執(zhí)行事務(wù)數(shù)TPS(Transactions Per Second):數(shù)據(jù)庫每秒執(zhí)行的事務(wù)數(shù),以COMMIT成功次數(shù)為準(zhǔn)。
事務(wù)處理平均延遲(Average Latency):數(shù)據(jù)庫執(zhí)行一條事務(wù)的平均耗時(shí),單位為毫秒(ms)。
測試表結(jié)構(gòu)
sysbench的默認(rèn)表結(jié)構(gòu)如下:
CREATE TABLE `sbtest8` (
`id` int NOT NULL AUTO_INCREMENT,
`k` int NOT NULL DEFAULT '0',
`c` char(120) NOT NULL DEFAULT '',
`pad` char(60) NOT NULL DEFAULT '',
PRIMARY KEY (`id`),
KEY `k_8` (`k`)
) ENGINE=InnoDB AUTO_INCREMENT=100001 DEFAULT CHARSET=utf8mb3
測試步驟
本測試在開啟TDE的MySQL實(shí)例測試在不同場景下訪問加密表的性能。
創(chuàng)建RDS MySQL實(shí)例。詳情請參見創(chuàng)建RDS MySQL實(shí)例。
創(chuàng)建數(shù)據(jù)庫和賬號。詳情請參見創(chuàng)建數(shù)據(jù)庫和賬號。
在ECS實(shí)例中執(zhí)行如下命令(本文以Linux系統(tǒng)為例),安裝MySQL客戶端。
CentOS:執(zhí)行
sudo yum install mysql
。Ubuntu:執(zhí)行
sudo apt-get update
,并執(zhí)行sudo apt install mysql-server
。
打開MySQL命令行工具,執(zhí)行如下命令,連接RDS MySQL數(shù)據(jù)庫。
mysql -h<數(shù)據(jù)庫連接地址> -u<用戶名> -P<端口號> -p<密碼>
說明數(shù)據(jù)庫連接地址和端口號獲取方法,請參見查看和管理實(shí)例連接地址和端口。
退出數(shù)據(jù)庫,使用sysbench工具加載測試數(shù)據(jù)。
說明本測試中,使用sysbench加載128個(gè)表,其中每個(gè)表包含十萬行記錄,以下腳本示例中采用oltp_read_write模型。
示例代碼中線程數(shù)以16為例,執(zhí)行中請?zhí)鎿Q為實(shí)際線程數(shù)(1、8、16、32、64、128、256)。
sysbench --db-driver=mysql --mysql-host=[database server host] --mysql-port=[database server port] --mysql-user=[database user name] --mysql-password=[database user password] --mysql-db=testdb --table_size=1000000 --tables=128 --threads=16 --time=60 oltp_read_write prepare
執(zhí)行自定義測試腳本。
sysbench --db-driver=mysql --mysql-host=[database server host] --mysql-port=[database server port] --mysql-user=[database user name] --mysql-password=[database user password] --mysql-db=testdb --table_size=1000000 --tables=128 --threads=16 --time=60 oltp_read_write run
清理數(shù)據(jù)。
sysbench --db-driver=mysql --mysql-host=[database server host] --mysql-port=[database server port] --mysql-user=[database user name] --mysql-password=[database user password] --mysql-db=testdb --table_size=1000000 --tables=128 --threads=16 --time=60 oltp_read_write cleanup
測試場景一:4核16GB本地SSD盤實(shí)例開啟TDE前后對比
測試數(shù)據(jù)
各模型下的實(shí)例性能趨勢圖
CPU
性能數(shù)據(jù)匯總
rds_ssd_4c16g_tde_off[3]:表示未開啟TDE的4核16GB RDS MySQL實(shí)例。
rds_ssd_4c16g_tde_on[2]:表示開啟TDE的4核16GB RDS MySQL實(shí)例。
測試場景二:8核32GB本地SSD盤實(shí)例開啟TDE前后對比
測試數(shù)據(jù)
各模型下的實(shí)例性能趨勢圖
性能數(shù)據(jù)匯總
rds_ssd_8c32g_tde_off[11]:表示未開啟TDE的8核32GB RDS MySQL實(shí)例。
rds_ssd_8c32g_tde_on[12]:表示開啟TDE的8核32GB RDS MySQL實(shí)例。