O que possibilita alta concorrência
Consultas rápidas são a base de um alto QPS. Quanto menos trabalho cada consulta exige, mais consultas um servidor consegue executar simultaneamente. Os principais recursos que reduzem o trabalho por consulta são:- O índice primário esparso da família de mecanismos de tabela MergeTree, que evita a leitura de dados que não correspondem à consulta.
- Caches, como o cache de consultas, que atende consultas
SELECTrepetidas diretamente com resultados em cache. - Projeções, que pré-calculam dados no momento da inserção e podem ser selecionadas automaticamente pelo ClickHouse, e visões materializadas, que armazenam resultados pré-calculados em uma tabela de destino separada, que pode ser consultada diretamente.
Controle e limitação de concorrência
Por padrão, o ClickHouse OSS não limita o número de consultas simultâneas. Por padrão, o ClickHouse Cloud definemax_concurrent_queries_for_all_users como 1000. Você pode configurar limites em vários níveis:
max_concurrent_querieslimita o número total de consultas executadas simultaneamente no servidor.max_concurrent_insert_queriesemax_concurrent_select_queriesaplicam o mesmo limite separadamente às consultasINSERTeSELECT. Todos os três têm0(ilimitado) como valor padrão.max_concurrent_queries_for_useremax_concurrent_queries_for_all_userslimitam a concorrência por usuário ou entre todos os usuários.
Isolamento de workloads
Para evitar que workloads concorrentes interfiram entre si, o ClickHouse oferece:- Agendamento de workloads para regular como CPU, memória e E/S são compartilhadas entre workloads.
- Cotas para limitar o uso de recursos por usuário em um intervalo de tempo.
- Restrições quanto à complexidade das consultas para impedir que consultas individuais consumam recursos excessivos.
- controle de acesso baseado em funções integrado para definir o que cada usuário pode consultar.