Para maximizar o desempenho do ApsaraDB for RDS, a Alibaba Cloud oferece um pool de threads. Esse recurso separa as threads das sessões, permitindo que um número reduzido de threads processe as tarefas de uma grande quantidade de sessões ativas.
Benefícios
O modelo de conexão padrão do MySQL utiliza uma thread por sessão. Quando há um grande volume de sessões conectadas, esse modelo pode causar uma disputa significativa por recursos. A sobrecarga gerada pelo agendamento de threads do sistema e pela invalidação frequente de cache pode resultar em uma queda acentuada de desempenho.
O pool de threads no ApsaraDB for RDS implementa um mecanismo de controle de prioridade e 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 do pool de threads são:
Em cenários de alta concorrência, o pool de threads mantém a quantidade de threads ativas dentro de um intervalo ideal. Isso reduz o agendamento excessivo de threads e a invalidação de cache.
Para transações simultâneas, o pool de threads diminui a disputa por recursos ao atribuir prioridades diferentes às instruções e transações SQL, além de controlar a concorrência entre elas.
O pool de threads prioriza as instruções SQL administrativas. Isso garante que operações como a criação de novas conexões, gerenciamento e monitoramento sejam executadas de forma confiável, mesmo sob alta carga do sistema.
O pool de threads atribui uma prioridade menor às instruções SQL complexas e impõe um limite máximo de concorrência. Essa abordagem impede que um excesso de instruções SQL complexas esgote os recursos do sistema e torne o service de banco de dados indisponível.
Pré-requisitos
Sua instância RDS deve executar o MySQL 5.6, 5.7, 8.0 ou 8.4.
Parâmetros do pool de threads
Defina o pool de threads por meio dos três parâmetros a seguir no console. Para mais informações, consulte Configure instance parameters.
| Parâmetro | Descrição |
| loose_thread_pool_enabled | Especifica se o recurso de pool de threads está ativado. Valores válidos:
Valor padrão: ON. Nota
|
| loose_thread_pool_size | O número de grupos de threads. Valor padrão: 4. As threads no pool são distribuídas uniformemente entre esses grupos para gerenciamento. |
| loose_thread_pool_oversubscribe | O número de threads ativas permitidas em cada grupo de threads. Valor padrão: 32. Uma thread ativa é aquela que executa uma instrução SQL, excluindo os 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 |
O número de threads ativas no pool de threads. |
|
thread_pool_big_threads |
O número de threads no pool de threads que executam consultas complexas. Consultas complexas incluem aquelas com subconsultas, funções de agregação ou cláusulas como GROUP BY e LIMIT. |
|
thread_pool_dml_threads |
O número de threads no pool de threads que executam instruções DML. |
|
thread_pool_idle_threads |
O número de threads ociosas no pool de threads. |
|
thread_pool_qry_threads |
O número de threads no pool de threads que executam consultas simples. |
|
thread_pool_total_threads |
O número total de threads no pool de threads. |
|
thread_pool_trx_threads |
O número de threads no pool de threads que executam transações. |
|
thread_pool_wait_threads |
O número de threads no pool de threads que aguardam E/S de disco ou a confirmação de transações. |
Testes do SysBench
As figuras a seguir mostram uma comparação de desempenho entre cenários com o pool de threads ativado e desativado. Os resultados dos testes indicam que o pool de threads oferece uma vantagem significativa de desempenho em cargas de trabalho com alta concorrência.




