本文介绍云数据库RDS MySQL单行热点更新的性能测试方法和结果。
结合Inventory Hint,可提升云数据库RDS MySQL的单行热点更新性能。Inventory Hint的详细信息,请参见Inventory Hint。
测试环境
本示例中,使用高可用系列实例进行测试,规格码为rds.mysql.st.v52。
-
实例版本:MySQL 5.7
-
实例规格:90核 720GB(独占物理机型)
-
实例系列:高可用系列
-
实例存储类型:高性能本地盘
-
实例模板:高性能参数模板
测试数据
测试数据为单表,表内100行记录。表结构如下:
CREATE TABLE `sbtest1`
(
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT
,`k` INT(10) UNSIGNED NOT NULL DEFAULT '0'
,`c` CHAR(120) NOT NULL DEFAULT ''
,`pad` CHAR(60) NOT NULL DEFAULT ''
,PRIMARY KEY (`id`)
,KEY `k_1` (`k`)
)
ENGINE=InnoDB AUTO_INCREMENT=101 DEFAULT
CHARSET=utf8 MAX_ROWS=1000000
测试脚本
对id=100的记录进行并发更新,SQL如下:
UPDATE sbtest1 SET k=k+1 WHERE id=100
测试的Lua脚本如下:
pathtest = string.match(test,"(.*/)")
if pathtest then
dofile(pathtest .."common.lua")
else
require("common")
end
function thread_init(thread_id)
set_vars()
end
function event(thread_id)
local table_name
table_name ="sbtest".. sb_rand_uniform(1, oltp_tables_count)
rs = db_query("begin")
rs = db_query("update /*+commit_on_success rollback_on_fail target_affect_row(1) */ sbtest1 SET k=k+1 WHERE id=100")
rs =db_query("commit")
end
测试结果
|
实例类型 |
单行记录更新峰值(TPS) |
|
RDS高可用系列 |
1.2万 |
图 1. 三节点企业系列测试结果
OLTP test statistics:
queries performed:
read: 0
write: 1865967
other: 3731934
total: 5597901
transactions: 1865967 (30822.67 per sec.)
read/write requests: 1865967 (30822.67 per sec.)
other operations: 3731934 (61645.34 per sec.)
ignored errors: 0 (0.00 per sec.)
reconnects: 0 (0.00 per sec.)
该文章对您有帮助吗?