Tous les produits
Search
Centre de documentation

PolarDB:Sysbench tests

Dernière mise à jour :Oct 10, 2026

Cette rubrique décrit la conception, le processus et les résultats des tests Sysbench dans PolarDB-X pour MySQL 5.7 et MySQL 8.0.

Contexte

Sysbench est un outil modulaire open source qui utilise plusieurs threads pour tester les performances des bases de données sur différentes plateformes, notamment le CPU, la mémoire, les threads et les E/S. Cette rubrique vérifie les performances des tests Sysbench dans PolarDB-X selon divers scénarios.

Conception des tests

  • Amount of test data

    Les résultats des tests Sysbench présentés dans cette rubrique sont obtenus à partir de 16 tables. Chaque table contient 10 millions de lignes de données.

  • Instance specifications for the test

    Spécifications de l'instance

    Nombre de nœuds

    4C32G

    2

    4C32G

    4

    8C64G

    2

    8C64G

    4

  • ECS instance type for stress testing

    ecs.g7ne.8xlarge (32 vCPU, 128 Go de mémoire)

Procédure

  1. Créez une instance Elastic Compute Service (ECS) pour les tests de charge.

    Créez une instance ECS destinée à la préparation des données et à l'exécution des tests de charge. Afin d'éviter les goulots d'étranglement lors des tests sur des instances PolarDB-X aux spécifications élevées, nous vous recommandons de provisionner une instance ECS dotée de 32 vCPU et de 128 Go de mémoire.

    Remarque

    L'instance ECS doit être déployée au sein d'un VPC. Notez le nom et l'ID du VPC pour une utilisation ultérieure. Vous devrez déployer toutes les instances de base de données décrites dans les étapes suivantes dans ce même VPC.

  2. Créez une instance PolarDB-X pour les tests de charge.

    1. Créez une instance PolarDB-X. Sélectionnez le moteur de base de données MySQL 5.7 ou MySQL 8.0 en fonction de vos besoins métier. Pour plus d'informations sur la création d'une instance PolarDB-X, consultez la rubrique Créer une instance.

      Remarque

      Assurez-vous que l'instance PolarDB-X et l'instance ECS résident dans le même VPC.

    2. Créez une base de données (nommée sbtest dans cet exemple) au sein de l'instance. Pour plus d'informations, consultez la rubrique Créer une base de données.

      CREATE DATABASE sbtest;
  3. Modifiez les paramètres de l'instance.

    Remarque

    Pour obtenir des performances optimales lors des tests de charge, modifiez certains paramètres des nœuds de calcul de l'instance PolarDB-X.

    1. Définissez le paramètre ENABLE_COROUTINE sur true, et les paramètres XPROTO_MAX_DN_CONCURRENT et XPROTO_MAX_DN_WAIT_CONNECTION sur 4000. Pour plus d'informations, consultez la rubrique Paramètres.

    2. Connectez-vous à l'instance PolarDB-X à l'aide d'un client en ligne de commande. Exécutez ensuite les instructions SQL suivantes dans la même session pour désactiver la journalisation et l'échantillonnage statistique du CPU :

      set global RECORD_SQL=false;
      set global MPP_METRIC_LEVEL=0;
      set global ENABLE_CPU_PROFILE=false;
      set global ENABLE_TRANS_LOG=false;
  4. Préparez les données pour les tests de charge.

    1. Téléchargez le package d'outils de test de charge benchmarksql.tar.gz et exécutez la commande suivante pour le décompresser :

      tar xzvf sysbench.tar.gz
      cd sysbench/

      Exécutez les commandes suivantes pour installer et compiler les dépendances :

      yum -y install make automake libtool pkgconfig libaio-devel mysql-devel
      ./autogen.sh
      ./configure
      make -j
      make install

      Exécutez la commande synben --version. Si la réponse est sysbench 1.1.0, l'outil de test de charge est correctement installé.

      Vous pouvez également télécharger la version open source de Sysbench depuis GitHub. Pour plus d'informations, consultez la page sysbench sur GitHub.

    2. Configurez les données pour les tests de charge.

      Créez le fichier de configuration sysb.conf et saisissez les informations de connexion à PolarDB-X dans ce fichier. L'exemple ci-dessous présente le contenu du fichier de configuration. Les paramètres sont décrits après cet exemple.

      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'

      Les paramètres du fichier de configuration :

      • percentile : le centile utilisé pour l'échantillonnage du temps de réponse.

      • histogram : indique s'il faut afficher l'histogramme de la distribution des temps de réponse.

      • report-interval : l'intervalle d'affichage des résultats en temps réel, en secondes.

      • time : la durée du test de charge, en secondes.

      • rand-type : le type de distribution utilisé pour générer un nombre aléatoire.

    3. Importez les données de test de charge.

      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

      Les paramètres de la commande :

      • config-file : le fichier de configuration commun.

      • create-table-options : le mode de création des tables.

      • tables : le nombre de tables.

      • table-size : la quantité de données qu'une table peut contenir.

      • threads : le nombre de threads simultanés utilisés pour importer les données.

      • auto_inc : indique s'il faut utiliser auto_increment.

  5. Exécutez le test de charge.

    Exécutez les commandes suivantes pour réaliser le test selon les six scénarios définis par Sysbench. Nous vous recommandons d'augmenter la durée du premier test de charge.

    Remarque

    Les paramètres des commandes :

    • db-ps-mode : indique s'il faut activer le mode prepare.

    • mysql-ignore-errors : les codes d'erreur MySQL à ignorer, tels que certains codes d'erreur liés aux conflits de verrouillage.

    • range-size : la plage utilisée pour les requêtes de type range.

    • oltp_point_select :

      sysbench --config-file='sysb.conf' --db-ps-mode='disable'  --mysql-ignore-errors='all'  --tables='16' --table-size='10000000' --threads={Number of concurrent 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={Number of concurrent 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={Number of concurrent 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={Number of concurrent 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={Number of concurrent 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={Number of concurrent threads} oltp_write_only run
  6. Résultats des tests

    MySQL 5.7

    Remarque
    • Version de PolarDB-X : polardb-2.4.0_5.4.19-20240610_xcluster5.4.19-20240527. Pour plus d'informations, consultez les Notes de version du noyau.

    • Dans les résultats de test ci-dessous, les valeurs QPS sont utilisées pour mesurer les performances de la base de données.

    point_select

    image

    Spécifications de l'instance

    Nombre de threads simultanés

    QPS

    4C32G*2

    1000

    201462.73

    4C32G*4

    1000

    324683.03

    8C64G*2

    1000

    308174.91

    8C64G*4

    2000

    635865.65

    read_only

    image

    Spécifications de l'instance

    Nombre de threads simultanés

    QPS

    4C32G*2

    600

    62446.59

    4C32G*4

    1000

    94930.57

    8C64G*2

    1000

    88487.24

    8C64G*4

    2000

    162330.95

    read_write

    image

    Spécifications de l'instance

    Nombre de threads simultanés

    QPS

    4C32G*2

    600

    43098.16

    4C32G*4

    600

    68750.24

    8C64G*2

    600

    57730.62

    8C64G*4

    600

    111261.22

    update_index

    image

    Spécifications de l'instance

    Nombre de threads simultanés

    QPS

    4C32G*2

    600

    49530.87

    4C32G*4

    600

    86850.17

    8C64G*2

    600

    65750.01

    8C64G*4

    1000

    137154.16

    update_non_index

    image

    Spécifications de l'instance

    Nombre de threads simultanés

    QPS

    4C32G*2

    400

    50627.05

    4C32G*4

    1000

    90555.72

    8C64G*2

    1000

    68838.02

    8C64G*4

    1000

    137071.73

    write_only

    image

    Spécifications de l'instance

    Nombre de threads simultanés

    QPS

    4C32G*2

    400

    38636.02

    4C32G*4

    600

    70974.3

    8C64G*2

    600

    52344.94

    8C64G*4

    600

    101282.38

    MySQL 8.0

    Remarque
    • Version de PolarDB-X : polardb-2.4.0_5.4.19-20240610_xcluster8.4.19-20240523. Pour plus d'informations, consultez les Notes de version du noyau.

    • Dans les résultats de test suivants, les valeurs QPS sont utilisées pour mesurer les performances de la base de données.

    point_select

    image

    Spécifications de l'instance

    Nombre de threads simultanés

    QPS

    4C32G*2

    1000

    166590.48

    4C32G*4

    1000

    288516.53

    8C64G*2

    1000

    350510.72

    8C64G*4

    2000

    637414.68

    read_only

    image

    Spécifications de l'instance

    Nombre de threads simultanés

    QPS

    4C32G*2

    600

    59770.01

    4C32G*4

    1000

    71259.87

    8C64G*2

    1000

    69829.69

    8C64G*4

    2000

    128366.39

    read_write

    image

    Spécifications de l'instance

    Nombre de threads simultanés

    QPS

    4C32G*2

    600

    56134.05

    4C32G*4

    600

    55817.45

    8C64G*2

    600

    60482.86

    8C64G*4

    600

    92855.15

    update_index

    image

    Spécifications de l'instance

    Nombre de threads simultanés

    QPS

    4C32G*2

    600

    37474.15

    4C32G*4

    600

    57344.42

    8C64G*2

    600

    55856.94

    8C64G*4

    1000

    87618.81

    update_non_index

    image

    Spécifications de l'instance

    Nombre de threads simultanés

    QPS

    4C32G*2

    400

    38017.57

    4C32G*4

    1000

    60779.25

    8C64G*2

    1000

    58065.02

    8C64G*4

    1000

    91060.65

    write_only

    image

    Spécifications de l'instance

    Nombre de threads simultanés

    QPS

    4C32G*2

    400

    29476.72

    4C32G*4

    600

    47558.73

    8C64G*2

    600

    41032.61

    8C64G*4

    600

    65794.57