Saltar al contenido principal
  • Asegúrese de que su máquina host cumpla los requisitos previos de QPL
  • deflate_qpl está habilitado de forma predeterminada durante la compilación con cmake. Si lo cambia accidentalmente, vuelva a comprobar la bandera de compilación: ENABLE_QPL=1
  • Para conocer los requisitos generales, consulte las instrucciones generales de compilación de ClickHouse

Lista de archivos

Las carpetas benchmark_sample en qpl-cmake incluyen ejemplos para ejecutar el benchmark con scripts de Python: client_scripts contiene scripts de Python para ejecutar benchmarks habituales, por ejemplo:
  • client_stressing_test.py: Script de Python para pruebas de estrés de consultas con [1~4] instancias de servidor.
  • queries_ssb.sql: Este archivo enumera todas las consultas para Star Schema Benchmark
  • allin1_ssb.sh: Este script de shell ejecuta automáticamente todo el flujo de trabajo del benchmark en uno solo.
database_files indica que almacenará archivos de base de datos según el códec lz4/deflate/zstd.

Ejecutar automáticamente el benchmark de Star Schema:

Una vez completado, compruebe todos los resultados en esta carpeta:./output/ En caso de que se produzca algún fallo, ejecute manualmente el benchmark como se indica en las secciones siguientes.

Definición

[CLICKHOUSE_EXE] indica la ruta del ejecutable de ClickHouse.

Entorno

[Verificación para IAA]
La salida esperada será similar a esta:
Si no se muestra ninguna salida, significa que IAA no está listo para funcionar. Vuelve a comprobar la configuración de IAA.

Generar datos brutos

Usa dbgen para generar 100 millones de filas de datos con los parámetros: -s 20 Se espera que archivos como *.tbl se generen en ./benchmark_sample/rawdata_dir/ssb-dbgen:

Configuración de la base de datos

Configure la base de datos con el códec LZ4
Aquí debería ver en la consola el mensaje Connected to ClickHouse server, lo que significa que el cliente estableció correctamente la conexión con el servidor. Complete los tres pasos siguientes mencionados en Star Schema Benchmark
  • Crear tablas en ClickHouse
  • Insertar datos. Aquí debe usarse ./benchmark_sample/rawdata_dir/ssb-dbgen/*.tbl como datos de entrada.
  • Convertir “star schema” en un “flat schema” desnormalizado
Configure la base de datos con el códec IAA Deflate
Completa los tres pasos igual que con lz4 arriba Configura la base de datos con el códec ZSTD
Complete los mismos tres pasos que con lz4 más arriba [autocomprobación] Para cada códec (lz4/zstd/deflate), ejecute la siguiente consulta para asegurarse de que las bases de datos se hayan creado correctamente:
Deberías ver la siguiente salida:
[Verificación automática del códec IAA Deflate] La primera vez que ejecutes una inserción o una consulta desde el cliente, se espera que la consola del servidor ClickHouse muestre este log:
Si no encuentra esto, pero ve otro log como el siguiente:
Eso significa que los dispositivos IAA no están listos; debes volver a comprobar la configuración de IAA.

Benchmark con una sola instancia

  • Antes de comenzar el benchmark, desactive C6 y establezca el gobernador de frecuencia de la CPU en performance
  • Para eliminar el impacto de la limitación de memoria entre sockets, usamos numactl para fijar el servidor en un socket y el cliente en otro socket.
  • Una sola instancia significa un solo servidor conectado a un solo cliente
Ahora ejecute el benchmark para LZ4/Deflate/ZSTD, respectivamente: LZ4:
IAA deflate:
ZSTD:
Ahora deberían mostrarse tres logs, como se espera:
Cómo verificar las métricas de rendimiento: Nos centramos en QPS; busque la palabra clave: QPS_Final y recopile las estadísticas

Benchmark con múltiples instancias

  • Para reducir el impacto de las limitaciones de memoria causadas por un número excesivo de hilos, recomendamos ejecutar el benchmark con múltiples instancias.
  • Múltiples instancias significa usar varios servidores (2 o 4) conectados a sus respectivos clientes.
  • Los núcleos de un socket deben dividirse por igual y asignarse a cada servidor.
  • Para múltiples instancias, debe crear una carpeta nueva para cada codec e insertar el conjunto de datos siguiendo pasos similares a los de una sola instancia.
Hay 2 diferencias:
  • En el lado del cliente, debe iniciar ClickHouse con el puerto asignado durante la creación de la tabla y la inserción de datos.
  • En el lado del servidor, debe iniciar ClickHouse con el archivo de configuración XML específico en el que se haya asignado el puerto. Todos los archivos de configuración XML personalizados para múltiples instancias se proporcionan en ./server_config.
Aquí asumimos que hay 60 núcleos por socket y tomamos 2 instancias como ejemplo. Inicie el servidor para la primera instancia LZ4:
ZSTD:
IAA Deflate:
[Iniciar servidor para la segunda instancia] LZ4:
ZSTD:
IAA Deflate:
Creación de tablas && inserción de datos para la segunda instancia Creación de tablas:
Inserción de datos:
  • [TBL_FILE_NAME] representa el nombre de un archivo cuyo nombre coincide con la expresión regular: *. tbl en ./benchmark_sample/rawdata_dir/ssb-dbgen.
  • --port=9001 corresponde al puerto asignado a la instancia del servidor, que también está definido en config_lz4_s2.xml/config_zstd_s2.xml/config_deflate_s2.xml. Para más instancias, debe reemplazarlo por el valor 9002/9003, que corresponden a las instancias s3/s4, respectivamente. Si no lo asigna, el puerto predeterminado es 9000, que ya está en uso por la primera instancia.
Benchmark con 2 instancias LZ4:
ZSTD:
IAA deflate
Aquí, el último argumento: 2 de client_stressing_test.py corresponde al número de instancias. Si necesitas más instancias, debes sustituirlo por el valor 3 o 4. Este script admite hasta 4 instancias/ Ahora deberían mostrarse tres logs, como es de esperar:
Cómo comprobar las métricas de rendimiento: Nos centramos en QPS; busque la palabra clave: QPS_Final y recopile las estadísticas. La configuración del benchmark con 4 instancias es similar a la de las 2 instancias anteriores. Recomendamos usar los datos del benchmark de 2 instancias como informe final para su revisión.

Consejos

Cada vez que vaya a iniciar un nuevo ClickHouse server, asegúrese de que no haya ningún proceso de ClickHouse ejecutándose en segundo plano; compruebe y finalice el anterior:
Al comparar la lista de consultas en ./client_scripts/queries_ssb.sql con el Star Schema Benchmark oficial, verá que hay 3 consultas que no se incluyen: Q1.2/Q1.3/Q3.4 . Esto se debe a que el uso de CPU es muy bajo < 10% en estas consultas, lo que significa que no permiten mostrar diferencias de rendimiento.
Última modificación el 12 de junio de 2026