Para maximizar o desempenho do ApsaraDB for RDS, a Alibaba Cloud oferece um pool de threads. Esse recurso desacopla threads de sessões, permitindo que poucas threads processem tarefas de muitas sessões ativas.
Benefícios
O modelo de conexão padrão do MySQL utiliza uma thread por sessão. Quando há um volume elevado de sessões conectadas, esse modelo pode causar contenção significativa de recursos. A sobrecarga do agendamento de threads do sistema e da invalidação frequente de cache pode provocar queda abrupta no desempenho.
O pool de threads do ApsaraDB for RDS implementa mecanismos de prioridade e controle de concorrência para diferentes tipos de operações SQL. Ele mantém o número de threads simultâneas em um nível ideal, garantindo alto desempenho mesmo sob cargas de trabalho com alta concorrência. Os principais benefícios são:
Em cenários de alta concorrência, o pool de threads mantém as threads ativas dentro de uma faixa ideal. Isso reduz o agendamento excessivo de threads e a invalidação de cache.
Para transações concorrentes, o recurso diminui a contenção de recursos ao atribuir prioridades distintas a instruções SQL e transações, além de controlar sua concorrência.
Instruções SQL administrativas recebem prioridade mais alta. Isso assegura que operações como criação de novas conexões, gerenciamento e monitoramento funcionem de forma confiável mesmo sob carga elevada do sistema.
Instruções SQL complexas têm prioridade reduzida e estão sujeitas a um limite máximo de concorrência. Essa medida evita que o excesso dessas instruções esgote os recursos do sistema e torne o serviço de banco de dados indisponível.
Pré-requisitos
A instância RDS deve executar o MySQL 5.6, 5,7, 8,0 ou 8,4.
Parâmetros do pool de threads
Configure o pool de threads pelos três parâmetros abaixo no console. Para mais informações, consulte Configurar parâmetros da instância.
| Parâmetro | Descrição |
| loose_thread_pool_enabled | Defina se o recurso de pool de threads será ativado. Valores válidos:
Valor padrão: ON. Nota
|
| loose_thread_pool_size | Quantidade de grupos de threads. Valor padrão: 4. As threads do pool são distribuídas uniformemente entre esses grupos para gerenciamento. |
| loose_thread_pool_oversubscribe | Número de threads ativas permitidas em cada grupo de threads. Valor padrão: 32. Uma thread ativa executa uma instrução SQL, exceto nos seguintes casos:
|
Status do pool de threads
Para consultar o status do pool de threads, execute o seguinte comando:
show status like "thread_pool%";
Exemplo:
mysql> show status like "thread_pool%";
+----------------------------+-------+
| Variable_name | Value |
+----------------------------+-------+
| thread_pool_active_threads | 1 |
| thread_pool_big_threads | 0 |
| thread_pool_dml_threads | 0 |
| thread_pool_idle_threads | 19 |
| thread_pool_qry_threads | 0 |
| thread_pool_total_threads | 20 |
| thread_pool_trx_threads | 0 |
| thread_pool_wait_threads | 0 |
+----------------------------+-------+
8 rows in set (0.00 sec)
A tabela a seguir descreve as variáveis de status.
|
Parâmetro |
Descrição |
|
thread_pool_active_threads |
Quantidade de threads ativas no pool de threads. |
|
thread_pool_big_threads |
Número de threads no pool executando consultas complexas. Consultas complexas incluem subconsultas, funções de agregação ou cláusulas como GROUP BY e LIMIT. |
|
thread_pool_dml_threads |
Total de threads no pool dedicadas à execução de instruções DML. |
|
thread_pool_idle_threads |
Quantidade de threads ociosas no pool de threads. |
|
thread_pool_qry_threads |
Threads no pool processando consultas simples. |
|
thread_pool_total_threads |
Soma total de threads presentes no pool. |
|
thread_pool_trx_threads |
Threads responsáveis por executar transações no pool. |
|
thread_pool_wait_threads |
Threads no pool aguardando E/S de disco ou o commit de transações. |
Testes SysBench
As figuras a seguir apresentam uma comparação de desempenho entre cenários com o pool de threads ativado e desativado. Os resultados indicam que o pool de threads proporciona vantagem significativa de desempenho em cargas de trabalho com alta concorrência.




