Todos os produtos
Search
Central de documentação

:Single-row hotspot update performance test

Última atualização: Aug 25, 2026

Esta página apresenta a metodologia e os resultados do benchmark de atualizações de dados quentes em linha única no ApsaraDB RDS for MySQL com o Inventory Hint. Use esses resultados para entender o máximo de transações por segundo (TPS) alcançável em cenários de escrita com alta concorrência, como deduções de estoque, atualizações de contadores e vendas relâmpago.

Ambiente de teste

Este exemplo usa duas instâncias no teste: uma da série de alta disponibilidade e outra do RDS Enterprise Edition. Os tipos de instância são rds.mysql.st.v52 e mysql.st.12xlarge.25.

  • Versão do MySQL: MySQL 5.7

  • Especificações: 90 núcleos de CPU, 720 GB (host dedicado)

  • Edições da instância: série de alta disponibilidade e RDS Enterprise Edition

  • Tipo de armazenamento: disco local de alto desempenho

  • Modelo: modelo de parâmetros de alto desempenho

O teste executa duas instâncias em paralelo: uma do RDS High-availability Edition e outra do RDS Enterprise Edition. Ambas pertencem à família de instâncias de host dedicado.

Parâmetro

Valor

Mecanismo de banco de dados

MySQL 5.7

Especificações

90 núcleos de CPU, 720 GB de memória

Tipo de armazenamento

Premium Local SSD

Modelo de parâmetros

Alto desempenho

Tipos de instância

rds.mysql.st.v52 (High-availability Edition), mysql.st.12xlarge.25 (Enterprise Edition)

Dados de teste

A tabela de teste contém 100 linhas. Todas as atualizações simultâneas têm como alvo uma única linha (id=100), o que cria um cenário de linha quente com contenção máxima de escrita.

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

Script de teste

O teste executa atualizações simultâneas em id=100 com a seguinte instrução SQL:

UPDATE sbtest1 SET k=k+1 WHERE id=100

O script Lua abaixo gera a carga com o Sysbench. Cada iteração encapsula o UPDATE em uma transação e usa o Inventory Hint (commit_on_success rollback_on_fail target_affect_row(1)) para reduzir a contenção de bloqueios e melhorar o throughput de linha única:

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

Resultados do teste

Tipo de instância

TPS máximo na linha única

RDS High-availability Edition

12.000

RDS Enterprise Edition

31.000

Figura 1. Resultados do teste para o RDS Enterprise Edition Test results of the Three-node Enterprise Edition

Próximos passos

  • Inventory Hint — Ative e configure o Inventory Hint na sua instância RDS para atingir esse nível de throughput em linha única.