Tous les produits
Search
Centre de documentation

PolarDB:Méthode de test des performances (OLTP)

Dernière mise à jour :Aug 11, 2026

Utilisez Sysbench pour exécuter des tests de performances de traitement transactionnel en ligne (OLTP) sur un cluster PolarDB for MySQL. Cette rubrique détaille la configuration, l'installation et les commandes de test pour les scénarios en lecture seule, en lecture/écriture et en écriture seule.

Outil de test

Sysbench est un outil de test de performances open source et multiplateforme. Il sert principalement à réaliser des benchmarks de bases de données (comme MySQL) ainsi que des tests de performances système couvrant le CPU, la mémoire, les E/S et les threads. Sysbench prend en charge les tests multithreads et utilise des scripts Lua pour contrôler la logique de test avec flexibilité, ce qui le rend adapté à l'évaluation des performances et aux tests de charge des bases de données.

Environnement de test

Configuration du client

Catégorie Spécification
Type d'instance ECS.c5.4xlarge (16 cœurs CPU, 32 Go de mémoire)
Système d'exploitation CentOS 7.0 64 bits
Nombre d'instances 1 par nœud de calcul à 8 cœurs ; mise à l'échelle proportionnelle (par exemple, 2 instances pour des nœuds à 16 cœurs)
Prérequis réseau Même région, zone et Virtual Private Cloud (VPC) que le cluster PolarDB
Latence PING Doit être inférieure à 0,2 ms

Configuration du cluster PolarDB

Catégorie Spécification
Type de cluster Cluster à deux nœuds (un nœud principal, un nœud en lecture seule)
Endpoints Endpoint principal, endpoint de cluster et endpoints personnalisés — combinés selon les besoins pour maximiser l'utilisation des ressources

Paramétrage

Pour les tests à forte concurrence, configurez les paramètres suivants avant l'exécution :

  • max_prepared_stmt_count — Augmentez cette valeur pour éviter l'erreur can't create more than max_prepared_stmt_count statements lorsque le nombre de threads est élevé.

  • --db-ps-mode=disable — Ajoutez cet indicateur à la commande de test dans les scénarios à grande échelle et à forte concurrence, lorsque max_prepared_stmt_count seul ne suffit pas. Cela désactive la fonctionnalité Prepared Statement.

  • Clusters de très grande taille (88 cœurs et plus) — Un ajustement supplémentaire des paramètres est nécessaire pour exploiter pleinement les ressources du cluster. Ajustez les réglages en fonction de votre type d'instance et des résultats réels obtenus lors des tests.

Pour connaître la procédure de configuration des paramètres, consultez Définir les paramètres de cluster et les paramètres de nœud.

Remarques sur les tests

  • Toutes les commandes présentées dans cette rubrique nécessitent les permissions root.

  • Les tests utilisent tables=250 et table-size=25000. Incrémentez la valeur de threads entre chaque exécution. Chaque page produit affiche uniquement les résultats de pic.

  • Cette page prend pour exemple un cluster PolarDB for MySQL Cluster Edition.

Scénarios de test

Ce test mesure les performances OLTP pour les scénarios en lecture seule, en écriture seule et en lecture/écriture sur un cluster à deux nœuds (un nœud principal et un nœud en lecture seule), pour différents types d'instances dédiées.

Métriques

Métrique Description
TPS (Transactions par seconde) Nombre de transactions exécutées par seconde, basé sur les COMMIT réussis
QPS (Requêtes par seconde) Nombre d'instructions SQL (INSERT, SELECT, UPDATE, DELETE) exécutées par seconde

Installer Sysbench

  1. Clonez et compilez Sysbench sur l'instance ECS :

    git clone https://github.com/akopytov/sysbench.git
    cd sysbench
    ./autogen.sh
    ./configure
    make -j
    make install
  2. Configurez le client Sysbench pour répartir le traitement des paquets réseau sur tous les cœurs CPU afin de réduire les changements de contexte :

    La valeur ffff active les 16 cœurs CPU pour le traitement des paquets. Ajustez cette valeur selon le nombre de cœurs dont vous disposez : ff pour 8 cœurs, ffff pour 16 cœurs, et ainsi de suite.
    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"

Exécuter les tests

Avant de lancer les tests, assurez-vous de disposer des éléments suivants :

  • Une instance ECS située dans la même région, la même zone et le même VPC que votre cluster PolarDB

  • Un cluster PolarDB for MySQL à deux nœuds avec des endpoints configurés

  • Sysbench installé sur l'instance ECS

Étape 1 : Obtenir l'endpoint du cluster

Récupérez l'endpoint et le port de votre cluster PolarDB for MySQL. Consultez Gérer les adresses de connexion.

Étape 2 : Configurer l'endpoint du cluster

Définissez l'option Primary Node Accepts Read Requests sur Yes pour l'endpoint du cluster. Consultez Configurer un proxy de base de données.

Étape 3 : Créer la base de données de test

Exécutez la commande suivante sur l'instance ECS pour créer une base de données nommée testdb :

mysql -h <host> -P <port> -u <username> -p <password> -e 'create database testdb'
Paramètre Description
-h <host> Endpoint du cluster
-P <port> Numéro de port
-u <username> Nom d'utilisateur de la base de données
-p <password> Mot de passe associé au nom d'utilisateur

Étape 4 : Exécuter les tests par scénario

Chaque scénario suit le même modèle en trois phases : prepareruncleanup. Tous les exemples utilisent les mêmes paramètres de base :

Paramètre Valeur Description
--db-driver mysql Pilote de base de données
--mysql-db testdb Base de données cible
--table_size 25000 Nombre de lignes par table
--tables 250 Nombre de tables
--events 0 Aucune limite d'événements (exécution jusqu'à expiration du temps)
--time 600 Durée du test en secondes
--rand-type uniform Type de distribution des données
--threads Votre valeur Threads simultanés ; incrémentez cette valeur entre les exécutions pour identifier le pic de performances

Les champs de sortie suivants apparaissent dans les résultats du test :

Catégorie de paramètre Contenu affiché Description
tables Nombre de tables de données Nombre total de tables de données utilisées dans le test
table_size Nombre de lignes dans la table de données Nombre d'enregistrements contenus dans chaque table
Volume des données Taille des données de la table, exprimée en unités telles que Mo ou Go
threads Nombre de threads simultanés Nombre de threads actuellement configuré
État des threads Permet de consulter l'état d'exécution des threads en temps réel

Test en lecture seule (oltp_read_only)

Ce test utilise --range-selects=0 , ce qui limite la charge de travail aux sélections ponctuelles uniquement — équivalent au scénario oltp_point_selects .
  1. Préparez les données :

    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. Lancez le test :

    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. Nettoyez les données :

    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

Test mixte lecture/écriture (oltp_read_write)

Ce test simule une charge de travail métier typique combinant lectures et écritures.

Les paramètres principaux tels que tables , table-size et threads sont affichés individuellement sur la page des données de test.
  1. Préparez les données :

    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. Lancez le test :

    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. Nettoyez les données :

    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

Test en écriture seule (oltp_write_only)

Les paramètres principaux tels que tables , table-size et threads sont affichés individuellement sur la page des données de test.
  1. Préparez les données :

    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. Lancez le test :

    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. Nettoyez les données :

    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

Étapes suivantes