Todos os produtos
Search
Central de documentação

PolarDB:Testes Sysbench

Última atualização: Jun 28, 2026

Este documento aborda o ambiente de teste, o procedimento de configuração e os resultados de QPS dos benchmarks Sysbench executados no PolarDB-X com os mecanismos MySQL 5.7 e MySQL 8.0. Use esses resultados para avaliar se o PolarDB-X atende aos seus requisitos de throughput OLTP ou siga o procedimento para reproduzir os testes em seu próprio ambiente.

Pré-requisitos

Antes de começar, verifique se você tem:

  • Uma conta Alibaba Cloud com permissões para criar instâncias ECS e PolarDB-X

  • Acesso a uma Virtual Private Cloud (VPC) para implantar todas as instâncias

Ambiente de teste

Conjunto de dados de teste

  • Tabelas: 16

  • Linhas por tabela: 10.000.000

Especificações da instância

Especificações

Nós

4C32G

2

4C32G

4

8C64G

2

8C64G

4

Máquina de teste de estresse

ecs.g7ne.8xlarge (32 vCPUs, 128 GB de memória)

Configure o ambiente de teste

Etapa 1: Crie uma instância ECS

Crie uma instância Elastic Compute Service (ECS) para hospedar a ferramenta de teste de estresse. Para evitar gargalos de desempenho ao testar instâncias PolarDB-X de alta especificação, use uma instância com 32 vCPUs e 128 GB de memória.

Implante a instância ECS em uma VPC. Anote o nome e o ID da VPC — todas as instâncias de banco de dados criadas nas etapas subsequentes devem residir na mesma VPC.

Etapa 2: Crie uma instância PolarDB-X

  1. Crie uma instância PolarDB-X. Selecione o mecanismo MySQL 5.7 ou MySQL 8.0 conforme suas necessidades. Para obter instruções, consulte Criar uma instância PolarDB-X.

    A instância PolarDB-X e a instância ECS devem residir na mesma VPC.
  2. Crie um banco de dados chamado sbtest. Para obter instruções, consulte Criar um banco de dados.

    CREATE DATABASE sbtest;

Etapa 3: Configure parâmetros da instância

Modifique os parâmetros do nó de computação para obter o melhor desempenho durante o teste de estresse.

  1. Defina os seguintes parâmetros. Para obter instruções, consulte Configurações de parâmetros.

    Parâmetro

    Valor

    ENABLE_COROUTINE

    true

    XPROTO_MAX_DN_CONCURRENT

    4000

    XPROTO_MAX_DN_WAIT_CONNECTION

    4000

  2. Conecte-se à instância PolarDB-X usando um cliente de linha de comando e execute as seguintes instruções SQL na mesma sessão para desativar o log e a amostragem estatística de CPU:

    set global RECORD_SQL=false;
    set global MPP_METRIC_LEVEL=0;
    set global ENABLE_CPU_PROFILE=false;
    set global ENABLE_TRANS_LOG=false;

Etapa 4: Instale o Sysbench e prepare os dados

  1. Baixe o pacote sysbench.tar.gz e descompacte-o:

    tar xzvf sysbench.tar.gz
    cd sysbench/
  2. Instale e compile as dependências:

    Você também pode baixar o Sysbench diretamente do GitHub .
    yum -y install make automake libtool pkgconfig libaio-devel mysql-devel
    ./autogen.sh
    ./configure
    make -j
    make install

    Verifique a instalação executando sysbench --version. Uma instalação bem-sucedida retorna sysbench 1.1.0.

  3. Crie o arquivo de configuração sysb.conf com os detalhes de conexão do PolarDB-X:

    Parâmetro

    Descrição

    percentile

    Percentil usado para amostrar o tempo de resposta. Defina como 95 para latência do 95º percentil.

    histogram

    Exibição do histograma de distribuição do tempo de resposta.

    report-interval

    Intervalo de exibição dos resultados em tempo real, em segundos.

    time

    Duração do teste de estresse, em segundos.

    rand-type

    Tipo de distribuição para geração de números aleatórios.

    mysql-host='<HOST>'
    mysql-port='<PORT>'
    mysql-user='<USER>'
    mysql-password='<PASSWORD>'
    mysql-db='sbtest'
    db-driver='mysql'
    percentile='95'
    histogram='on'
    report-interval='1'
    time='60'
    rand-type='uniform'
  4. Importe os dados de teste:

    Parâmetro

    Descrição

    config-file

    Caminho para o arquivo de configuração comum.

    create-table-options

    Modo de criação de tabela. Usa a sintaxe dbpartition by hash(id) do PolarDB-X.

    tables

    Número de tabelas a serem criadas.

    table-size

    Número de linhas por tabela.

    threads

    Número de threads simultâneas para importação de dados.

    auto_inc

    Uso de AUTO_INCREMENT. Defina como off para este teste.

    sysbench --config-file='sysb.conf' \
      --create-table-options='dbpartition by hash(id)' \
      --tables='16' \
      --table-size='10000000' \
      --threads='16' \
      --auto_inc='off' \
      oltp_point_select prepare

Etapa 5: Aquecer o cache de buffer

Antes de coletar os resultados, execute uma passagem de aquecimento para carregar os dados do disco na memória. Ignorar esta etapa faz com que a primeira execução produza um QPS menor devido a leituras com cache frio.

sysbench --config-file='sysb.conf' \
  --db-ps-mode='disable' \
  --mysql-ignore-errors='all' \
  --tables='16' \
  --table-size='10000000' \
  --threads=<threads> \
  oltp_point_select run

Recomendamos aumentar a duração desta primeira execução para permitir que o cache estabilize antes da coleta dos resultados de benchmark.

Etapa 6: Execute os testes de estresse

Execute os comandos a seguir para testar cada uma das seis cargas de trabalho OLTP do Sysbench. Substitua <threads> pelo número de threads simultâneas.

Parâmetros usados em todos os comandos de execução:

Parâmetro

Descrição

db-ps-mode

Ativação do modo de instrução preparada. Defina como disable.

mysql-ignore-errors

Códigos de erro do MySQL a ignorar, como erros de conflitos de bloqueio. Defina como all.

range-size

Tamanho do intervalo para consultas de faixa (aplica-se a oltp_read_only e oltp_read_write). Defina como 5.

oltp_point_select

sysbench --config-file='sysb.conf' \
  --db-ps-mode='disable' \
  --mysql-ignore-errors='all' \
  --tables='16' \
  --table-size='10000000' \
  --threads=<threads> \
  oltp_point_select run

oltp_read_only

sysbench --config-file='sysb.conf' \
  --db-ps-mode='disable' \
  --mysql-ignore-errors='all' \
  --tables='16' \
  --table-size='10000000' \
  --range-size=5 \
  --threads=<threads> \
  oltp_read_only run

oltp_read_write

sysbench --config-file='sysb.conf' \
  --db-ps-mode='disable' \
  --mysql-ignore-errors='all' \
  --tables='16' \
  --table-size='10000000' \
  --range-size=5 \
  --threads=<threads> \
  oltp_read_write run

oltp_update_index

sysbench --config-file='sysb.conf' \
  --db-ps-mode='disable' \
  --mysql-ignore-errors='all' \
  --tables='16' \
  --table-size='10000000' \
  --threads=<threads> \
  oltp_update_index run

oltp_update_non_index

sysbench --config-file='sysb.conf' \
  --db-ps-mode='disable' \
  --mysql-ignore-errors='all' \
  --tables='16' \
  --table-size='10000000' \
  --threads=<threads> \
  oltp_update_non_index run

oltp_write_only

sysbench --config-file='sysb.conf' \
  --db-ps-mode='disable' \
  --mysql-ignore-errors='all' \
  --tables='16' \
  --table-size='10000000' \
  --threads=<threads> \
  oltp_write_only run

Resultados dos testes

Os resultados são medidos em QPS (consultas por segundo). Cada linha mostra a contagem de threads em que se observou o pico de QPS para aquela configuração.

MySQL 5.7

Nota
  • Versão do PolarDB-X: polardb-2.4.0_5.4.19-20240610_xcluster5.4.19-20240527. Para mais detalhes, consulte Notas de versão.

  • Nos resultados de teste a seguir, os valores de QPS medem o desempenho do banco de dados.

Point select

image

Especificações

Threads simultâneas

QPS

4C32G×2

1.000

201.462,73

4C32G×4

1.000

324.683,03

8C64G×2

1.000

308.174,91

8C64G×4

2.000

635.865,65

Read-only

image

Especificações

Threads simultâneas

QPS

4C32G×2

600

62.446,59

4C32G×4

1.000

94.930,57

8C64G×2

1.000

88.487,24

8C64G×4

2.000

162.330,95

Read-write

image

Especificações

Threads simultâneas

QPS

4C32G×2

600

43.098,16

4C32G×4

600

68.750,24

8C64G×2

600

57.730,62

8C64G×4

600

111.261,22

Update index

image

Especificações

Threads simultâneas

QPS

4C32G×2

600

49.530,87

4C32G×4

600

86.850,17

8C64G×2

600

65.750,01

8C64G×4

1.000

137.154,16

Update non-index

image

Especificações

Threads simultâneas

QPS

4C32G×2

400

50.627,05

4C32G×4

1.000

90.555,72

8C64G×2

1.000

68.838,02

8C64G×4

1.000

137.071,73

Write-only

image

Especificações

Threads simultâneas

QPS

4C32G×2

400

38.636,02

4C32G×4

600

70.974,3

8C64G×2

600

52.344,94

8C64G×4

600

101.282,38

MySQL 8.0

Nota
  • Versão do PolarDB-X: polardb-2.4.0_5.4.19-20240610_xcluster8.4.19-20240523. Para mais detalhes, consulte Notas de versão.

  • Nos resultados de teste a seguir, os valores de QPS medem o desempenho do banco de dados.

Point select

image

Especificações

Threads simultâneas

QPS

4C32G×2

1.000

166.590,48

4C32G×4

1.000

288.516,53

8C64G×2

1.000

350.510,72

8C64G×4

2.000

637.414,68

Read-only

image

Especificações

Threads simultâneas

QPS

4C32G×2

600

59.770,01

4C32G×4

1.000

71.259,87

8C64G×2

1.000

69.829,69

8C64G×4

2.000

128.366,39

Read-write

image

Especificações

Threads simultâneas

QPS

4C32G×2

600

56.134,05

4C32G×4

600

55.817,45

8C64G×2

600

60.482,86

8C64G×4

600

92.855,15

Update index

image

Especificações

Threads simultâneas

QPS

4C32G×2

600

37.474,15

4C32G×4

600

57.344,42

8C64G×2

600

55.856,94

8C64G×4

1.000

87.618,81

Update non-index

image

Especificações

Threads simultâneas

QPS

4C32G×2

400

38.017,57

4C32G×4

1.000

60.779,25

8C64G×2

1.000

58.065,02

8C64G×4

1.000

91.060,65

Write-only

image

Especificações

Threads simultâneas

QPS

4C32G×2

400

29.476,72

4C32G×4

600

47.558,73

8C64G×2

600

41.032,61

8C64G×4

600

65.794,57