MySQL 5.7 vs 8.0, performances PK
La colonne
tutoriel mysql présente la comparaison des performances entre MySQL 5.7 et MySQL 8.0.
Contexte
Tester les performances de mysql5.7 et mysql8.0 dans différentes conditions de concurrence en lecture-écriture, en lecture seule et modes en écriture seule. (tps, qps)
Prérequis
- La version de test est mysql5.7.22 et mysql8.0.15
- Redémarrez le service mysql avant les tests sysbench. , et videz le cache du système d'exploitation (pour éviter d'atteindre le cache lors de plusieurs tests)
- Chaque fois qu'un test est effectué, de nouvelles données de test sont générées avant de tester mysql5.7 et mysql8.0
- Mysql5 est garanti lors de chaque test Les paramètres de configuration de .7 et mysql8.0 sont cohérents
Environnement
Machine
cat /etc/redhat-release | xargs echo '版本 ' && dmidecode -s system-product-name | xargs echo '是否虚拟化 ' && cat /proc/cpuinfo |grep "processor"|wc -l | xargs echo 'cpu核数 ' 版本 CentOS Linux release 7.5.1804 (Core) 是否虚拟化 KVM cpu核数 4复制代码
myql5.7.22
5.7.22-log innodb_buffer_pool_size 128M innodb_log_buffer_size 64M innodb_log_file_size 48M binlog_format ROW log_bin ON transaction_isolation REPEATABLE-READ复制代码
mysql8.0.15
8.0.15 innodb_buffer_pool_size 128M innodb_log_buffer_size 64M innodb_log_file_size 48M binlog_format ROW log_bin ON transaction_isolation REPEATABLE-READ复制代码
sysbench
sysbench -V sysbench 1.1.0 (using bundled LuaJIT 2.1.0-beta3)复制代码
Test
Sous différentes stratégies de persistance (binlog, persistance du journal redo) mysql5.7 et mysql8.0 lisent et écrivent Performances en mode, mode lecture seule, mode écriture seule (oltp_read_write, oltp_read_only, oltp_write_only)
le temps de test sysbench est de 60 s et le nombre de tables testées est de 20
Les tests ont été réalisés en mode double 1 (sécurité) et en mode 0 2 (haute performance)
-
AFFICHER LES VARIABLES GLOBALES OÙ Nom_variable IN('sync_binlog','innodb_flush_log_at_trx_commit'); +--------------------------------+-------+ Nom_variable | Valeur | +--------------------------------+-------+ | innodb_flush_log_at_trx_commit | | sync_binlog | +--------------------------------+------+
Performances de mysql5.7 et mysql8.0 en mode lecture-écriture
- Configuration Double 1, en mode lecture-écriture, mysql5. 7.22 Les performances de tps et qps de mysql8.0.15 sont similaires lorsque mysql8.0.15 a 120 threads simultanément, les performances chutent et tremblent :
Performances de mysql5.7 et mysql8.0 en lecture. mode uniquement
- Configuration Double 1, en mode lecture seule, les tps et qps de mysql5.7.22 sont environ 1/3 meilleurs que ceux de mysql8. 0,15 ; le nombre de threads simultanés augmente. Par la suite, les tps et les qps n'ont pas augmenté, mais ont montré une tendance à la baisse.
Performances de mysql5.7 et mysql8.0 en mode écriture seule
- Configuration Double 1, écriture- uniquement en mode, à mesure que le nombre de concurrence augmente, les performances de mysql5.7.22 sont environ 1/4 meilleures que celles de mysql8.0.15.
Mode 0 2
SHOW GLOBAL VARIABLES WHERE Variable_name IN('sync_binlog','innodb_flush_log_at_trx_commit'); +--------------------------------+-------+ | Variable_name | Value | +--------------------------------+-------+ | innodb_flush_log_at_trx_commit | 2 | | sync_binlog | 0 | +--------------------------------+-------+复制代码
Performances de mysql5.7 et mysql8.0 en mode lecture et écriture
- Configuration 0 2, en mode lecture-écriture, lorsque le nombre de concurrence est faible, les performances de mysql5.7.22 sont meilleures que celles de mysql8.0.15 lorsque le nombre de concurrence est relativement élevé, les performances de mysql8 ; .0.15 est meilleur que celui de mysql5.7.22 ; dans la concurrence de 80 threads. Au-dessus, les performances commencent à se dégrader.
Performances de mysql5.7 et mysql8.0 en mode lecture seule
- 0 2配置,只读模式下,mysql5.7.22性能比mysql8.0.15 好1/3左右;随着并发数的上升,性能也没有上升,反而有下降的趋势.
mysql5.7和mysql8.0 在只写模式下的表现
- 0 2 配置,只写模式下,mysql5.7.22的tps 抖动比较大;mysql5.7.22 的qps比mysql8.0.15好1/3左右
结论
- 整体来看,mysql5.7.22在读写模式、只读模式、只写模式下的表现是优于mysql8.0.15的
- 随着并行数的增加,性能表现不会也跟着增加,还会出现下降
- 本次测试结果是在配置很低的情况下进行的,不代表绝对
注意
sysbench 需要设置--db-ps-mode=disable 禁用预编译语句,不然并发测试线程多时会报下面的错误
FATAL: mysql_stmt_prepare() failed FATAL: MySQL error: 1461 "Can't create more than max_prepared_stmt_count statements (current value: 16382)" FATAL: mysql_stmt_prepare() failed FATAL: MySQL error: 1461 "Can't create more than max_prepared_stmt_count statements (current value: 16382)" FATAL: thread_init' function failed: /usr/local/share/sysbench/oltp_common.lua:288: SQL API error FATAL: mysql_stmt_prepare() failed FATAL: MySQL error: 1461 "Can't create more than max_prepared_stmt_count statements (current value: 16382)" FATAL:thread_init' function failed: /usr/local/share/sysbench/oltp_common.lua:288: SQL API error FATAL: mysql_stmt_prepare() failed复制代码
使用脚本
cat sysbench_test_mysql5.7_8.0_tps_qps.sh #!/bin/bash #用于sysbench 测试在读写模式、只读模式、只写模式下 mysql5.7和mysql8.0 的tps,qps #nohup bash $0 >/tmp/sysbench_test 2>& 1 & # user=admin passwd=admin ports="8015 57222" host=127.0.0.1 sysbench_test_mode="oltp_read_write oltp_read_only oltp_write_only" sysbench_test_info_path=/tmp/sysbench-test function red_echo () { local what="$*" echo -e "$(date +%F-%T) e[1;31m ${what} e[0m" } function check_las_comm(){ if [ $1 -ne 0 ];then red_echo $2 exit 1 fi } function restart_mysqld(){ service mysqld${1} restart sleep 2 } function purge_binlog(){ port=$1 mysql -u$user -p$passwd -P$port -h$host /proc/sys/vm/drop_caches } function sysbench_with_diff_thread(){ thread_num=$1 port=$2 order=$3 test_mode=$4 sysbench /usr/local/share/sysbench/${test_mode}.lua --mysql_storage_engine=innodb --table-size=100000 --tables=20 --mysql-db=test_1 --mysql-user=$user --mysql-password=$passwd --mysql-port=$port --mysql-host=$host --threads=$thread_num --time=60 --report-interval=2 --db-ps-mode=disable --events=0 --db-driver=mysql $order } function main(){ for test_mode in $sysbench_test_mode;do for port in $ports;do for thread_num in {5,10,20,30,40,80,120,200};do restart_mysqld "$port" check_las_comm "$?" "restart mysqld${port} failed " clean_os_cache purge_binlog "$port" red_echo "sysbench $thread_num threads cleanup mysqld${port}" sysbench_with_diff_thread "$thread_num" "$port" "cleanup" "$test_mode">/dev/null red_echo "sysbench $thread_num threads prepare mysqld${port}" sysbench_with_diff_thread "$thread_num" "$port" "prepare" "$test_mode">/dev/null mkdir -p $sysbench_test_info_path red_echo "sysbench $thread_num threads run mysqld${port} $test_mode" sysbench_with_diff_thread "$thread_num" "$port" "run" "$test_mode" > $sysbench_test_info_path/${test_mode}_${thread_num}_$port # service mysqld{port} stop done done done } main复制代码
更多相关免费学习推荐:mysql教程(视频)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

MySQL convient aux débutants car il est simple à installer, puissant et facile à gérer les données. 1. Installation et configuration simples, adaptées à une variété de systèmes d'exploitation. 2. Prise en charge des opérations de base telles que la création de bases de données et de tables, d'insertion, d'interrogation, de mise à jour et de suppression de données. 3. Fournir des fonctions avancées telles que les opérations de jointure et les sous-questionnaires. 4. Les performances peuvent être améliorées par l'indexation, l'optimisation des requêtes et le partitionnement de la table. 5. Prise en charge des mesures de sauvegarde, de récupération et de sécurité pour garantir la sécurité et la cohérence des données.

MySQL est un système de gestion de base de données relationnel open source. 1) Créez une base de données et des tables: utilisez les commandes CreateDatabase et CreateTable. 2) Opérations de base: insérer, mettre à jour, supprimer et sélectionner. 3) Opérations avancées: jointure, sous-requête et traitement des transactions. 4) Compétences de débogage: vérifiez la syntaxe, le type de données et les autorisations. 5) Suggestions d'optimisation: utilisez des index, évitez de sélectionner * et utilisez les transactions.

Vous pouvez ouvrir PHPMYADMIN via les étapes suivantes: 1. Connectez-vous au panneau de configuration du site Web; 2. Trouvez et cliquez sur l'icône PHPMYADMIN; 3. Entrez les informations d'identification MySQL; 4. Cliquez sur "Connexion".

Créez une base de données à l'aide de NAVICAT Premium: Connectez-vous au serveur de base de données et entrez les paramètres de connexion. Cliquez avec le bouton droit sur le serveur et sélectionnez Créer une base de données. Entrez le nom de la nouvelle base de données et le jeu de caractères spécifié et la collation. Connectez-vous à la nouvelle base de données et créez le tableau dans le navigateur d'objet. Cliquez avec le bouton droit sur le tableau et sélectionnez Insérer des données pour insérer les données.

MySQL et SQL sont des compétences essentielles pour les développeurs. 1.MySQL est un système de gestion de base de données relationnel open source, et SQL est le langage standard utilisé pour gérer et exploiter des bases de données. 2.MySQL prend en charge plusieurs moteurs de stockage via des fonctions de stockage et de récupération de données efficaces, et SQL termine des opérations de données complexes via des instructions simples. 3. Les exemples d'utilisation comprennent les requêtes de base et les requêtes avancées, telles que le filtrage et le tri par condition. 4. Les erreurs courantes incluent les erreurs de syntaxe et les problèmes de performances, qui peuvent être optimisées en vérifiant les instructions SQL et en utilisant des commandes Explication. 5. Les techniques d'optimisation des performances incluent l'utilisation d'index, d'éviter la numérisation complète de la table, d'optimiser les opérations de jointure et d'améliorer la lisibilité du code.

Vous pouvez créer une nouvelle connexion MySQL dans NAVICAT en suivant les étapes: ouvrez l'application et sélectionnez une nouvelle connexion (CTRL N). Sélectionnez "MySQL" comme type de connexion. Entrez l'adresse Hostname / IP, le port, le nom d'utilisateur et le mot de passe. (Facultatif) Configurer les options avancées. Enregistrez la connexion et entrez le nom de la connexion.

Étapes pour effectuer SQL dans NAVICAT: Connectez-vous à la base de données. Créez une fenêtre d'éditeur SQL. Écrivez des requêtes ou des scripts SQL. Cliquez sur le bouton Exécuter pour exécuter une requête ou un script. Affichez les résultats (si la requête est exécutée).

Erreurs et solutions courantes Lors de la connexion aux bases de données: nom d'utilisateur ou mot de passe (erreur 1045) Blocs de pare-feu Connexion (erreur 2003) Délai de connexion (erreur 10060) Impossible d'utiliser la connexion à socket (erreur 1042) Erreur de connexion SSL (erreur 10055) Trop de connexions Résultat de l'hôte étant bloqué (erreur 1129)
