Todos los productos
Search
Centro de documentos

PolarDB:Método de prueba de rendimiento (OLTP)

Última actualización: Sep 05, 2026

Use Sysbench para ejecutar pruebas de rendimiento de procesamiento transaccional en línea (OLTP) contra un clúster de PolarDB for MySQL. Esta página abarca la configuración, la instalación y los comandos de prueba para escenarios de solo lectura, lectura/escritura y solo escritura.

Herramienta de prueba

Sysbench es una herramienta de prueba de rendimiento multiplataforma y de código abierto. Se utiliza principalmente para evaluar bases de datos (como MySQL) y medir el rendimiento del sistema, incluidos CPU, memoria, E/S e hilos. Sysbench admite pruebas multihilo y usa scripts de Lua para controlar la lógica de prueba con flexibilidad. Por ello, resulta adecuada para evaluar el rendimiento de bases de datos y ejecutar pruebas de estrés.

Entorno de prueba

Configuración del cliente

Categoría

Especificación

Tipo de instancia

ECS.c5.4xlarge (16 núcleos de CPU, 32 GB de memoria)

Sistema operativo

CentOS 7.0 de 64 bits

Número de instancias

1 por cada nodo de cómputo de 8 núcleos; escale de forma proporcional (por ejemplo, 2 instancias para nodos de 16 núcleos)

Requisito de red

Misma región, zona y Virtual Private Cloud (VPC) que el clúster de PolarDB

Latencia de PING

Debe ser inferior a 0.2 ms

Configuración del clúster de PolarDB

Categoría

Especificación

Tipo de clúster

Clúster de dos nodos (un nodo principal y un nodo de solo lectura)

Endpoints

Endpoint principal, endpoint de clúster y endpoints personalizados, combinados según sea necesario para maximizar el uso de recursos

Configuración de parámetros

Para las pruebas de alta concurrencia, configure los siguientes parámetros antes de ejecutarlas:

  • max_prepared_stmt_count: aumente este valor para evitar el error can't create more than max_prepared_stmt_count statements cuando hay una gran cantidad de hilos.

  • --db-ps-mode=disable: agregue esta marca al comando de prueba en escenarios de gran escala y alta concurrencia, cuando max_prepared_stmt_count por sí solo no basta. Esto deshabilita la función Prepared Statement.

  • Clústeres extragrandes (88 núcleos o más): se requiere ajustar parámetros adicionales para aprovechar por completo los recursos del clúster. Ajuste según su tipo de instancia y los resultados reales de las pruebas.

Para conocer los pasos de configuración de parámetros, consulte Set cluster parameters and node parameters.

Notas sobre la prueba

  • Todos los comandos de esta página requieren permisos de root.

  • Las pruebas usan tables=250 y table-size=25000. Incremente threads entre ejecuciones. Cada página de producto muestra únicamente los resultados máximos.

  • Esta página toma como ejemplo un clúster de PolarDB for MySQL Cluster Edition.

Escenarios de prueba

Esta prueba mide el rendimiento OLTP en escenarios de solo lectura, solo escritura y lectura/escritura. Utiliza un clúster de dos nodos (un nodo principal y uno de solo lectura) con distintos tipos de instancias Dedicated.

Métricas

Métrica

Descripción

TPS (transacciones por segundo)

Cantidad de transacciones ejecutadas por segundo, basada en los COMMIT exitosos

QPS (consultas por segundo)

Cantidad de instrucciones SQL (INSERT, SELECT, UPDATE, DELETE) ejecutadas por segundo

Instalar Sysbench

  1. Clone y compile Sysbench en la instancia de ECS:

    git clone https://github.com/akopytov/sysbench.git
    cd sysbench
    ./autogen.sh
    ./configure
    make -j
    make install
  2. Configure el cliente de Sysbench para distribuir el procesamiento de paquetes de red entre todos los núcleos de CPU. Así reducirá los cambios de contexto:

    El valor ffff habilita los 16 núcleos de CPU para procesar paquetes. Ajústelo según la cantidad de núcleos disponibles: ff para 8 núcleos, ffff para 16 núcleos, y así sucesivamente.
    sudo sh -c 'for x in /sys/class/net/eth0/queues/rx-*; do echo ffff>$x/rps_cpus; done'
    sudo sh -c "echo 32768 > /proc/sys/net/core/rps_sock_flow_entries"
    sudo sh -c "echo 4096 > /sys/class/net/eth0/queues/rx-0/rps_flow_cnt"
    sudo sh -c "echo 4096 > /sys/class/net/eth0/queues/rx-1/rps_flow_cnt"

Ejecutar las pruebas

Antes de ejecutar las pruebas, compruebe que cuenta con lo siguiente:

  • Una instancia de ECS en la misma región, zona y VPC que su clúster de PolarDB

  • Un clúster de PolarDB for MySQL de dos nodos con los endpoints configurados

  • Sysbench instalado en la instancia de ECS

Paso 1: Obtener el endpoint del clúster

Obtenga el endpoint y el puerto de su clúster de PolarDB for MySQL. Consulte Manage connection addresses.

Paso 2: Configurar el endpoint del clúster

Establezca Primary Node Accepts Read Requests en Yes para el endpoint del clúster. Consulte Configure a database proxy.

Paso 3: Crear la base de datos de prueba

Ejecute el siguiente comando en la instancia de ECS para crear una base de datos llamada testdb:

mysql -h <host> -P <port> -u <username> -p <password> -e 'create database testdb'

Parámetro

Descripción

-h <host>

Endpoint del clúster

-P <port>

Número de puerto

-u <username>

Nombre de usuario de la base de datos

-p <password>

Contraseña del usuario

Paso 4: Ejecutar las pruebas de escenario

Cada escenario sigue el mismo patrón de tres fases: prepare → run → cleanup. Todos los ejemplos utilizan los mismos parámetros base:

Parámetro

Valor

Descripción

--db-driver

mysql

Controlador de la base de datos

--mysql-db

testdb

Base de datos de destino

--table_size

25000

Filas por tabla

--tables

250

Cantidad de tablas

--events

0

Sin límite de eventos (se ejecuta hasta que expire el tiempo)

--time

600

Duración de la prueba en segundos

--rand-type

uniform

Tipo de distribución de datos

--threads

Su valor

Hilos concurrentes; increméntelos entre ejecuciones para encontrar el rendimiento máximo

Los resultados de la prueba muestran los siguientes campos:

Categoría del parámetro

Contenido mostrado

Descripción

tables

Cantidad de tablas de datos

La cantidad total de tablas de datos en la prueba

table_size

Cantidad de filas en la tabla de datos

La cantidad de registros en cada tabla

Tamaño del volumen de datos

—

El volumen de datos de la tabla, en unidades como MB o GB

threads

Cantidad de hilos concurrentes

La cantidad de hilos configurada actualmente

Estado de los hilos

—

Permite consultar el estado de ejecución de los hilos en tiempo real

Prueba de solo lectura (oltp_read_only)

Esta prueba usa --range-selects=0 , lo cual limita la carga de trabajo a selecciones puntuales. Equivale al escenario oltp_point_selects .
  1. Prepare los datos:

    sysbench --db-driver=mysql --mysql-host=<host> --mysql-port=<port> --mysql-user=<user> --mysql-password=<password> --mysql-db=testdb --range-selects=0 --table_size=25000 --tables=250 --events=0 --time=600 --rand-type=uniform --threads=<threads> oltp_read_only prepare
  2. Ejecute la prueba:

    sysbench --db-driver=mysql --mysql-host=<host> --mysql-port=<port> --mysql-user=<user> --mysql-password=<password> --mysql-db=testdb --range-selects=0 --table_size=25000 --tables=250 --events=0 --time=600 --rand-type=uniform --threads=<threads> oltp_read_only run
  3. Limpie los datos:

    sysbench --db-driver=mysql --mysql-host=<host> --mysql-port=<port> --mysql-user=<user> --mysql-password=<password> --mysql-db=testdb --range-selects=0 --table_size=25000 --tables=250 --events=0 --time=600 --rand-type=uniform --threads=<threads> oltp_read_only cleanup

Prueba mixta de lectura y escritura (oltp_read_write)

Esta prueba simula una carga de trabajo empresarial típica de lectura y escritura combinadas.

Los parámetros principales, como tables , table-size y threads , se muestran de forma individual en la página de datos de prueba.
  1. Prepare los datos:

    sysbench --db-driver=mysql --mysql-host=<host> --mysql-port=<port> --mysql-user=<user> --mysql-password=<password> --mysql-db=testdb --table_size=25000 --tables=250 --events=0 --time=600 --rand-type=uniform --threads=<threads> oltp_read_write prepare
  2. Ejecute la prueba:

    sysbench --db-driver=mysql --mysql-host=<host> --mysql-port=<port> --mysql-user=<user> --mysql-password=<password> --mysql-db=testdb --table_size=25000 --tables=250 --events=0 --time=600 --rand-type=uniform --threads=<threads> oltp_read_write run
  3. Limpie los datos:

    sysbench --db-driver=mysql --mysql-host=<host> --mysql-port=<port> --mysql-user=<user> --mysql-password=<password> --mysql-db=testdb --table_size=25000 --tables=250 --events=0 --time=600 --rand-type=uniform --threads=<threads> oltp_read_write cleanup

Prueba de solo escritura (oltp_write_only)

Los parámetros principales, como tables , table-size y threads , se muestran de forma individual en la página de datos de prueba.
  1. Prepare los datos:

    sysbench --db-driver=mysql --mysql-host=<host> --mysql-port=<port> --mysql-user=<user> --mysql-password=<password> --mysql-db=testdb --table_size=25000 --tables=250 --events=0 --time=600 --rand-type=uniform --threads=<threads> oltp_write_only prepare
  2. Ejecute la prueba:

    sysbench --db-driver=mysql --mysql-host=<host> --mysql-port=<port> --mysql-user=<user> --mysql-password=<password> --mysql-db=testdb --table_size=25000 --tables=250 --events=0 --time=600 --rand-type=uniform --threads=<threads> oltp_write_only run
  3. Limpie los datos:

    sysbench --db-driver=mysql --mysql-host=<host> --mysql-port=<port> --mysql-user=<user> --mysql-password=<password> --mysql-db=testdb --table_size=25000 --tables=250 --events=0 --time=600 --rand-type=uniform --threads=<threads> oltp_write_only cleanup

Pasos siguientes