Topik ini menjelaskan cara menguji dan menganalisis kinerja instance ApsaraDB RDS for MySQL dalam memperbarui data panas di satu baris tabel.
Lingkungan pengujian
Pengujian ini menggunakan instance RDS yang menjalankan Edisi Ketersediaan Tinggi RDS dengan tipe instance rds.mysql.st.v52, serta instance RDS yang menjalankan Edisi Perusahaan RDS Tiga Node dengan tipe instance mysql.st.12xlarge.25.
Mesin dan versi database: MySQL 5.7
Spesifikasi: 90 core CPU, 720 GB memori (keluarga instance host khusus)
Edisi RDS: RDS High-availability Edition dan RDS Enterprise Edition
Tipe penyimpanan: disk lokal
Template: template parameter kinerja tinggi
Data pengujian
Tabel yang digunakan untuk pengujian berisi 100 baris. Potongan kode berikut menggambarkan skema tabel:
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=1000000Skrip pengujian
Jalankan pernyataan SQL berikut untuk melakukan pembaruan bersamaan pada baris dengan ID 100:
UPDATE sbtest1 SET k=k+1 WHERE id=100Skrip Lua berikut digunakan untuk pengujian:
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")
endHasil pengujian
Tipe instance | TPS maksimum pada baris tunggal |
RDS High-availability Edition | 12.000 |
RDS Enterprise Edition | 31.000 |
Gambar 1. Hasil Pengujian untuk RDS Enterprise Edition