Descrição de recursos
Os pools de recursos do GaussDB(DWS) fornecem gerenciamento de simultaneidade, gerenciamento de memória, gerenciamento de CPU e regras de exceção.
Gerenciamento de simultaneidade
Simultaneidade representa o número máximo de consultas simultâneas em um pool de recursos. O gerenciamento de simultaneidade pode limitar o número de consultas simultâneas para reduzir a contenção de recursos e melhorar a utilização de recursos.
As regras de gerenciamento de simultaneidade são as seguintes:
- Se a aceleração de consulta curta estiver ativada, as consultas complexas estarão sob controle de simultaneidade do pool de recursos e as consultas simples estarão sob controle de simultaneidade de consulta curta.
- Se a aceleração de consultas curtas estiver desativada, as consultas complexas e simples estarão sob o controle de simultaneidade do pool de recursos. O controle de simultaneidade de consulta curta é inválido.
Gerenciamento de memória
Cada pool de recursos ocupa uma certa porcentagem de memória.
O gerenciamento de memória visa evitar a falta de memória (OOM) em um banco de dados, isolar a memória de diferentes pools de recursos e controlar o uso da memória. A memória é gerenciada a partir dos seguintes aspectos:
- Gerenciamento de memória global
Para impedir a OOM, defina o limite superior da memória global (max_process_memory) para um valor adequado. O gerenciamento de memória global antes de uma consulta controla o uso da memória para evitar o gerenciamento de OOM. O gerenciamento de memória global durante uma consulta evita erros durante a execução da consulta.
- Gerenciamento antes de uma consulta
O serviço verifica o uso de memória estimado de uma consulta na fila lenta e a compara com o uso real. A estimativa será ajustada se for menor do que o uso real. Antes de uma consulta ser executada, o serviço verifica se a memória disponível é suficiente para a consulta. Se sim, a consulta pode ser executada diretamente. Se não, a consulta precisa ser enfileirada e executada após outras consultas liberarem recursos.
- Gerenciamento durante uma consulta
Durante uma consulta, o serviço verifica se a memória solicitada excede um determinado limite. Se sim, um erro será relatado e a memória ocupada pela consulta será liberada.
- Gerenciamento antes de uma consulta
- Gerenciamento de memória do pool de recursos
O gerenciamento de memória do pool de recursos coloca um limite nas cotas dedicadas. Uma fila de carga de trabalho só pode usar a memória alocada a ela e não pode usar memória ociosa em outros pools de recursos.
A memória do pool de recursos é alocada em porcentagem. O intervalo de valores é de 0 a 100. O valor 0 indica que o pool de recursos não executa o gerenciamento de memória. O valor 100 indica que o pool de recursos executa o gerenciamento de memória e pode usar toda a memória global.
A soma das porcentagens de memória alocadas para todos os pools de recursos não pode exceder 100. O gerenciamento de memória do pool de recursos é executado somente antes do início de uma consulta na fila lenta. Ele funciona de forma semelhante ao gerenciamento de memória global antes de uma consulta. Antes de uma consulta na fila lenta em um pool de recursos ser executada, seu uso de memória é estimado. Se a estimativa for maior que a memória do pool de recursos, a consulta precisará ser enfileirada e poderá ser executada somente depois que as consultas anteriores no pool forem concluídas e os recursos forem liberados.
Gerenciamento de CPU
O compartilhamento de CPU e o limite de CPU podem ser gerenciados.
- Compartilhamento da CPU: se o sistema estiver muito carregado, os recursos da CPU serão alocados aos pools de recursos com base nos compartilhamentos de CPU específicos. Se o sistema não estiver ocupado, esta configuração não terá efeito.
- Limite da CPU: especifica o número máximo de núcleos de CPU usados por um pool de recursos. O uso de recursos de trabalhos no pool de recursos não pode exceder esse limite, não importa se o sistema está ocupado ou não.
Escolha um dos métodos de gerenciamento anteriores, conforme necessário. No gerenciamento de compartilhamento de CPU, as CPUs podem ser compartilhadas e totalmente utilizadas, mas os pools de recursos não são isolados e podem afetar o desempenho da consulta uns dos outros. No gerenciamento de limite de CPU, as CPUs de diferentes pools de recursos são isoladas, mas isso pode resultar no desperdício de recursos ociosos.
Somente 8.1.3 e versões posteriores suportam o gerenciamento de limite de CPU.
Regras de exceção
Para evitar o bloqueio de consultas ou a deterioração do desempenho, você pode configurar regras de exceção para permitir que o serviço identifique e trate consultas anormais automaticamente, evitando que instruções SQL lentas ocupem muitos recursos por um longo tempo.
A tabela a seguir descreve as regras de exceção.
Parâmetro |
Descrição |
Intervalo de valor (0 significa sem limite) |
Operação |
---|---|---|---|
Blocking Time |
Tempo de bloqueio do trabalho. Refere-se ao tempo total gasto no enfileiramento simultâneo global e local. A unidade é segundo. Por exemplo, se o tempo de bloqueio for definido como 300s, um trabalho executado por um usuário no pool de recursos será encerrado após ser bloqueado por 300 segundos. |
Um número inteiro no intervalo de 1 a 2.147.483.647. O valor 0 indica que não há limite. |
Terminated ou Not limited |
Execution Time |
Tempo que foi gasto na execução do trabalho, em segundos. Por exemplo, se Time required for execution for definido como 100s, um trabalho executado por um usuário no pool de recursos será encerrado após ser executado por mais de 100 segundos. |
Um número inteiro no intervalo de 1 a 2.147.483.647. O valor 0 indica que não há limite. |
Terminated ou Not limited |
Total CPU time on all DNs. |
Tempo total de CPU gasto na execução de um trabalho em todos os DNs, em segundos. |
Um número inteiro no intervalo de 1 a 2.147.483.647. O valor 0 indica que não há limite. |
Terminated ou Not limited |
Interval for Checking CPU Skew Rate |
Intervalo para verificar a distorção da CPU, em segundos. Este parâmetro deve ser ajustado junto com Total CPU Time on All DNs. |
Um número inteiro no intervalo de 1 a 2.147.483.647. O valor 0 indica que não há limite. |
Terminated ou Not limited |
Total CPU Time Skew Rate on All DNs |
Taxa de distorção do tempo de CPU de um trabalho executado em DNs. O valor depende da configuração de Interval for Checking CPU Skew Rate. |
Um número inteiro no intervalo de 1 a 100. O valor 0 indica que não há limite. |
Terminated ou Not limited |
Data Spilled to Disk Per DN |
Máximo permitido de dados de trabalho derramados em discos em um DN. A unidade é MB.
NOTA:
Esta regra é suportada apenas por clusters da versão 8.2.0 ou posterior. |
Um número inteiro no intervalo de 1 a 2.147.483.647. O valor 0 indica que não há limite. |
Terminated ou Not limited |
Average CPU Usage Per DN |
Uso médio da CPU de um trabalho em cada DN. Se Interval for Checking CPU Skew Rate estiver configurado, o intervalo terá efeito para este parâmetro. Se o intervalo não estiver configurado, o intervalo de verificação será de 30 segundos por padrão.
NOTA:
Esta regra é suportada apenas por clusters da versão 8.2.0 ou posterior. |
Um número inteiro no intervalo de 1 a 100. O valor 0 indica que não há limite. |
Terminated ou Not limited |