Este tópico descreve o design, o procedimento e os resultados de um teste de benchmark TPC-H para o índice colunar clusterizado (CCI) do PolarDB-X.
Contexto
O TPC-H é um benchmark de suporte à decisão estabelecido pelo Transaction Processing Performance Council (TPC) para avaliar a capacidade de consulta analítica de bancos de dados. A carga de trabalho do TPC-H consiste em oito tabelas e 22 consultas SQL complexas. A maioria inclui junções de tabelas, subconsultas e agregações GROUP BY.
A implementação do TPC-H descrita neste tópico baseia-se no benchmark oficial do TPC-H. No entanto, o teste não atende a todos os requisitos oficiais e os resultados não são comparáveis aos resultados de benchmarks TPC-H publicados.
Design do teste
Tamanho do conjunto de dados
Este teste utiliza um conjunto de dados de 100 GB (Scale Factor = 100). As principais tabelas incluem:
LINEITEM: aproximadamente 600 milhões de linhas
ORDERS: 150 milhões de linhas
PART_SUPP: 80 milhões de linhas
Especificações da instância de teste
|
Especificação do nó |
Número de nós |
Tamanho do conjunto de dados |
|
8c32g |
2/4 |
100 GB |
|
16c64g |
2/3/4/6 |
100 GB |
Especificação da instância de teste de estresse
ecs.g7.4xlarge (16 vCPU, 64 GB de memória)
Procedimento
Etapa 1: Preparar a instância ECS de teste de estresse
Prepare uma instância ECS. Use essa instância para todas as operações subsequentes, como importação de dados e execução do teste de estresse.
Implante a instância ECS em uma VPC. Anote o nome e o ID da VPC, pois todas as instâncias subsequentes devem ser implantadas na mesma VPC.
Recomendamos usar o sistema operacional CentOS na instância ECS e atribuir um endereço IP público a ela.
Etapa 2: Preparar a instância PolarDB-X****
Crie uma instância PolarDB-X. Para obter instruções detalhadas, consulte Criar uma instância.
Certifique-se de que a instância PolarDB-X e a instância ECS de teste de estresse estejam na mesma VPC.
Adicione o endereço IP interno da instância ECS de teste de estresse à lista de permissões da instância PolarDB-X.
Etapa 3: Ajustar parâmetros da instância
Para obter desempenho ideal no teste de estresse, ajuste os parâmetros dos nós de computação do PolarDB-X.
Defina o parâmetro XPROTO_MAX_DN_CONCURRENT como 4000. Para obter instruções detalhadas, consulte Configurações de parâmetros.
-
Conecte-se à instância PolarDB-X por meio de uma interface de linha de comando (CLI). Na mesma sessão, execute as seguintes instruções SQL para desativar o log de SQL, a amostragem de CPU e a coleta automática de estatísticas.
set global RECORD_SQL = false; set global MPP_METRIC_LEVEL = 0; set global ENABLE_CPU_PROFILE = false; set global ENABLE_BACKGROUND_STATISTIC_COLLECTION=false; set global ENABLE_STATISTIC_FEEDBACK=false;
Etapa 4: Instale a ferramenta Benchmark Boot
Abra a porta 4121 no grupo de segurança da instância ECS de teste de estresse. Para mais informações, consulte Adicionar uma regra de grupo de segurança.
Faça login na instância ECS de teste de estresse e execute o comando
bash -c "$(curl -fsSL https://benchmark-boot.oss-cn-hangzhou.aliyuncs.com/setup.sh)"para instalar o Benchmark Boot. Para mais informações, consulte Baixe e instale o Benchmark Boot.No navegador, acesse http://{endereço IP público da instância de teste de estresse}:4121. A página inicial do Benchmark Boot será exibida, confirmando a instalação bem-sucedida.
Etapa 5: Preparar os dados
No console do Benchmark Boot, acesse Stress Test > Database Connection > Configure Database Connection. Configure a string de conexão do PolarDB-X (endereço IP do host, porta, nome de usuário e senha). Insira o nome do banco de dados TPC-H, selecione AUTO para Database Creation Mode e clique em Submit.
-
Acesse Stress Test > TPCH > Import TPC-H. Defina Submit como 100 e Submit como 16. Clique em Submit para importar o conjunto de dados TPC-H de 100 GB para a instância primária do PolarDB-X.
NotaApós a importação dos dados, o Benchmark Boot executa automaticamente a instrução
ANALYZE TABLEpara coletar estatísticas. -
Após importar o conjunto de dados TPC-H de 100 GB, execute as seguintes instruções SQL na instância primária do PolarDB-X para criar índices colunares clusterizados (CCIs). Para mais informações, consulte Criar e usar CCIs.
create clustered columnar index `nation_col_index` on nation(`n_nationkey`) partition by hash(`n_nationkey`) partitions 1; create clustered columnar index `region_col_index` on region(`r_regionkey`) partition by hash(`r_regionkey`) partitions 1; create clustered columnar index `customer_col_index` on customer(`c_custkey`) partition by hash(`c_custkey`) partitions 64; create clustered columnar index `part_col_index` on part(`p_size`) partition by hash(`p_partkey`) partitions 64; create clustered columnar index `partsupp_col_index` on partsupp(`ps_partkey`) partition by hash(`ps_partkey`) partitions 64; create clustered columnar index `supplier_col_index` on supplier(`s_suppkey`) partition by hash(`s_suppkey`) partitions 64; create clustered columnar index `orders_col_index` on orders(`o_orderdate`,`o_orderkey`) partition by hash(`o_orderkey`) partitions 64; create clustered columnar index `lineitem_col_index` on lineitem(`l_shipdate`,`l_orderkey`) partition by hash(`l_orderkey`) partitions 64;NotaExecute a instrução
SHOW COLUMNAR INDEXpara visualizar o status atual dos CCIs. Para mais informações, consulte SHOW COLUMNAR INDEX.A criação dos CCIs leva cerca de 45 minutos.
Etapa 6: Adicionar uma instância de armazenamento colunar somente leitura
Adicione uma instância de armazenamento colunar somente leitura à instância primária do PolarDB-X. Para obter instruções detalhadas, consulte Adicionar uma instância de armazenamento colunar somente leitura.
Adicione o endereço IP interno da instância ECS de teste de estresse à lista de permissões da instância de armazenamento colunar somente leitura do PolarDB-X.
Etapa 7: Execute o teste TPC-H
No console do Benchmark Boot, acesse . Configure a string de conexão da instância de armazenamento colunar somente leitura, insira o nome do banco de dados TPC-H, selecione AUTO para Database Creation Mode e clique em Submit.
Acesse Stress Test > TPCH > Run TPCH. Selecione Submit, insira uma descrição da tarefa e clique em Submit para executar as 22 instruções de consulta do benchmark TPC-H.
-
Acesse para visualizar os resultados finais do teste.
NotaA primeira execução do benchmark requer aquecimento. Para obter resultados estáveis, recomendamos executar o teste várias vezes.
Resultados do teste
Todos os tempos de execução estão em segundos (s).
|
Consulta |
8c32g * 2 |
8c32g * 4 |
16c64g * 2 |
16c64g * 3 |
16c64g * 4 |
16c64g * 6 |
|
Q1 |
5,9 |
3,99 |
4,37 |
1,6 |
1,22 |
0,86 |
|
Q2 |
2,41 |
1,68 |
1,63 |
1,15 |
1,04 |
0,86 |
|
Q3 |
4,18 |
2,13 |
2,43 |
1,77 |
1,20 |
0,88 |
|
Q4 |
3,72 |
1,02 |
0,94 |
0,78 |
0,48 |
0,44 |
|
Q5 |
5,63 |
3,12 |
3,27 |
2,05 |
1,68 |
1,4 |
|
Q6 |
0,41 |
0,38 |
0,42 |
0,18 |
0,15 |
0,13 |
|
Q7 |
5,47 |
2,94 |
2,93 |
2,08 |
1,72 |
1,34 |
|
Q8 |
3,61 |
2,31 |
1,98 |
1,81 |
1,68 |
1,51 |
|
Q9 |
13,6 |
6,91 |
7,46 |
4,93 |
3,85 |
3,11 |
|
Q10 |
6,36 |
3,12 |
3,5 |
2,31 |
1,73 |
1,26 |
|
Q11 |
1,51 |
0,64 |
0,74 |
0,53 |
0,49 |
0,35 |
|
Q12 |
1,86 |
0,82 |
0,78 |
0,57 |
0,40 |
0,35 |
|
Q13 |
8,85 |
4,29 |
4,44 |
2,6 |
1,64 |
1,2 |
|
Q14 |
0,94 |
0,58 |
0,7 |
0,51 |
0,38 |
0,31 |
|
Q15 |
1,26 |
0,76 |
0,88 |
0,59 |
0,47 |
0,37 |
|
Q16 |
2,3 |
1 |
1,19 |
0,75 |
0,61 |
0,46 |
|
Q17 |
1,86 |
0,75 |
0,69 |
0,47 |
0,43 |
0,49 |
|
Q18 |
8,43 |
4,18 |
4,43 |
3,16 |
2,19 |
1,6 |
|
Q19 |
4,92 |
2,16 |
1,86 |
1,07 |
1,02 |
0,73 |
|
Q20 |
1,88 |
1,34 |
1,17 |
0,73 |
0,78 |
0,73 |
|
Q21 |
12,05 |
3,18 |
3,11 |
2,38 |
1,72 |
1,57 |
|
Q22 |
2,67 |
1,25 |
1,39 |
0,98 |
0,66 |
0,61 |
|
Tempo total |
99,82 |
48,55 |
50,31 |
33,00 |
25,54 |
20,56 |