Clickhouse Benchmark

Instalação ClickBench

sudo apt install -y git wget curl
git clone https://github.com/ClickHouse/ClickBench.git

Dentro do diretório ClickBench exitem subdiretórios com nome dos bancos, os quais contém os scripts de benchmark.

Benchmark no Clickhouse

Entre no subdiretório clickhouse

cd Clickbench/clickhouse

Dentro desse diretório existem duas possibilidades, rodar o executável ./benchmarck ou fazer manualmente o teste com alguns comandos do script.

Implicações ao rodar o script de benchmarck

È de extrema importância verificar o conteúdo dos scripts

  • Dentro do script benchmarck existe a instalação e inicialização do clickhouse, se o clickhouse ja estiver instalado e inicializado, comente ou retire as linhas.

      curl https://clickhouse.com/ | sh
      sudo ./clickhouse install --noninteractive
      sudo clickhouse start
    
  • Se o benchmarck ja tiver sido rodado ao menos uma vez, o arquivo de teste hits.tsv já estará no diretório de teste, então é importante comentar ou retirar as linhas que baixam e descompactam o arquivo.

      wget --no-verbose --continue 'https://datasets.clickhouse.com/hits_compatible/hits.tsv.gz'
      gzip -d hits.tsv.gz
    
  • Ao se rodar o script benchmarck, a tabela será criada e preenchida. Dessa maneira, se o script for rodado novamente com as linhas de criação da tabela haverá um erro ao criar a tabela, pois ela já existe, e a tabela receberá denovo o mesmo conteúdo que ja foi inserido na mesma. (A tabela crescerá linearmente desnecessariamente enquanto essas linhas estiverem presentes depois do primeiro teste)

      clickhouse-client < create"$SUFFIX".sql
      clickhouse-client --time --query "INSERT INTO hits FORMAT TSV" < hits.tsv
    
  • Rodando o benchmarck

      ./benchmarck <arg>
    

Pode-se usar 3 argumentos para os testes de benchmarck no clickhouse: “”, “tuned”, “tuned-memory”. Ao rodar o benchmarck sem nenhum argumento, será rodado o teste padrão.

Rodar manualmente o teste

  • È necessário criar uma tabela, preenche-lá e rodar o script run. Esses comandos podem ser copiados de dentro do próprio script, inclusive salvar e descompactar o arquivo tsv que irá ser copiado para o banco.

      ./run <arg>
    

Pode-se usar 3 argumentos para os testes de benchmarck no clickhouse: “”, “tuned”, “tuned-memory”. Ao rodar o benchmarck sem nenhum argumento, será rodado o teste padrão.

Resultados

Depois de executar o run.sh, os resultados de cada query aparecerá na tela com seguinte formato:

    [0.008, 0.004, 0.004]

Há 3 acessos em cada query e o tempo é dado em segundos. Os resultados ficam salvos no arquivo results.csv.

ClickBench e Postgres

É possível fazer o benchmarck no banco Postgres usando os mesmos comandos dentro do script.

ATENÇÂO: dentro do sprit de benchmarck do postgres há uma linha “chmod 777 ~ hits.tsv” que precisa ser retirada

Dependências

[1] Clickhouse, v24.1.5.6-stable, Sistema de Gerênciamento de Banco de Dados colunar
[2] Clickbench, -, Repositório para benchmarks