Benutzer-Werkzeuge

Webseiten-Werkzeuge


mysql_-_benchmark

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
mysql_-_benchmark [2022-02-22 15:51:59] – [INSERT] manfredmysql_-_benchmark [2022-08-09 13:20:59] (aktuell) – [sysbench] manfred
Zeile 1: Zeile 1:
 ====== MySQL - Benchmark ====== ====== MySQL - Benchmark ======
  
-  * [[http://blog.flux7.com/blogs/benchmarks/using-sysbench-to-benchmark-mysql]]+siehe auch: 
 +  * [[::MySQL Benchmark]] 
 +  * [[::MySQL-Lasttest]] 
 +  * [[::MySQL Tuning]]
  
  
-===== INSERT =====+===== wie skaliert MySQL/MariaDB über mehrere CPU-Kerne ===== 
 + 
 +Aktuelle [[https://dodwell.us/mysql-tuning.html|Infos]] findet man darüber fast nur zu MySQL und diese besagen, dass MySQL vor Version 5.5 nur bis 4-8 CPU-Kerne schneller wurde. 
 +Die Version 5.5 soll schon bis ca. 32 Kerne an Leistung gewonnen haben und dann zumindest gleichbleibende Leistung aufgewiesen haben (Plateau-Bildung). 
 +Mit der Version 5.6 soll MySQL bis zu 48 Kernen an Leistung gewinnen. 
 +Es ist anzunehmen, dass spätere Versionen diese Fähigkeit weiter ausbauen... 
 + 
 +Da es eine gewisse Beziehung [[https://mariadb.com/kb/en/mariadb-vs-mysql-compatibility/|Drop-in Compatibility]] zwischen MySQL und MariaDB gibt: 
 +  * MySQL 5.1 -> MariaDB 5.1 
 +  * MySQL 5.1 -> MariaDB 5.2 
 +  * MySQL 5.1 -> MariaDB 5.3 
 +  * MySQL 5.5 -> MariaDB 5.5 
 +  * MySQL 5.6 -> MariaDB 10.0 
 +  * MySQL 5.6 -> MariaDB 10.1 
 +  * MySQL 5.7 -> MariaDB 10.2 
 +  * MySQL 5.7 -> MariaDB 10.3 
 +  * MySQL 5.7 -> MariaDB 10.4 
 + 
 +...kann man die oben erwähnten Aussagen, über die MySQL-DB, auch auf die MariaDB anwenden. 
 + 
 +//Meine Tests mit "MariaDB 10.3" haben gezeigt, dass sie auch von Hyper-Threading profitiert, was oft ja anders geäußert wird.// 
 + 
 + 
 +===== mit vielen kleinen INSERTs ===== 
 + 
 +hiermit werden 10 Prozesse gestartet, von denen jeder 100000 Datensätze in eine Test-Tabelle schreibt: 
 +  > ~/bin/MySQL-Test.sh localhost 3306 10 100000 
 +  Es werden in 10 Tabellen jeweils 100000 Datensätze eingetragen. 
 +  Laufzeit: 28 Sekunden
  
 hiermit werden 100 Prozesse gestartet, von denen jeder 10000 Datensätze in eine Test-Tabelle schreibt: hiermit werden 100 Prozesse gestartet, von denen jeder 10000 Datensätze in eine Test-Tabelle schreibt:
   > ~/bin/MySQL-Test.sh localhost 3306 100 10000   > ~/bin/MySQL-Test.sh localhost 3306 100 10000
-  > watch -n1 'echo "SHOW PROCESSLIST;" | mysql -t' +  Es werden in 100 Tabellen jeweils 10000 Datensätze eingetragen. 
- +  Laufzeit: 22 Sekunden
-nach dem Start muß man in der PROCESSLIST nachsehen, wie lange die Prozesse laufen; +
-je schneller eine Kombination fertig ist, desto besser;+
  
 das ist nicht genau, aber es liefert Anhaltspunkte das ist nicht genau, aber es liefert Anhaltspunkte
Zeile 21: Zeile 50:
 #==============================================================================# #==============================================================================#
    
-VERSION="v2022022200"           # universell umgebaut+#VERSION="v2022022200         # universell umgebaut 
 +VERSION="v2022022300          # universell umgebaut
    
    
Zeile 42: Zeile 72:
 MYSQL_USR=root                  # Voreinstellung: sbtest MYSQL_USR=root                  # Voreinstellung: sbtest
 MYSQL_PWD="$(echo Z2VoZWltCg== | base64 -d)" MYSQL_PWD="$(echo Z2VoZWltCg== | base64 -d)"
-MYSQL_DB=mytest                 # Voreinstellung: sbtest+MYSQL_DB=mytest                   # Voreinstellung: sbtest
  
 echo " echo "
Zeile 55: Zeile 85:
 #set -x #set -x
  
-date+START_ZEIT="$(date -u +'%s')"
  
 for i in $(seq 1 ${THREADS}) for i in $(seq 1 ${THREADS})
Zeile 70: Zeile 100:
  
         (         (
 +        date > /tmp/${MYSQL_DB}.tabelle${i}
         for A in $(seq 1 ${REQUESTS})         for A in $(seq 1 ${REQUESTS})
         do         do
                 echo "INSERT INTO  ${MYSQL_DB}.tabelle${i} (spalte01) VALUES ('${A}');"                 echo "INSERT INTO  ${MYSQL_DB}.tabelle${i} (spalte01) VALUES ('${A}');"
-        done | mysql -h${MYSQL_HOST} -P${MYSQL_PORT} -u${MYSQL_USR} -p${MYSQL_PWD} ${MYSQL_DB}+        done | taskset --cpu-list 0-8 mysql -h${MYSQL_HOST} -P${MYSQL_PORT} -u${MYSQL_USR} -p${MYSQL_PWD} ${MYSQL_DB
 +        rm -f /tmp/${MYSQL_DB}.tabelle${i}
         ) &         ) &
 done done
  
-#echo "SHOW PROCESSLIST;" | mysql -h${MYSQL_HOST} -P${MYSQL_PORT} -u${MYSQL_USR} -p${MYSQL_PWD} -t+echo "Es werden in ${THREADS} Tabellen jeweils ${REQUESTS} Datensätze eingetragen." 
 +#echo "echo \"SHOW PROCESSLIST;\" | mysql -h${MYSQL_HOST} -P${MYSQL_PORT} -u${MYSQL_USR} -p${MYSQL_PWD} -t
 + 
 +WARTEN="$(ls /tmp/${MYSQL_DB}.tabelle* 2>/dev/null | wc -l)" 
 +while [ 0 -lt ${WARTEN} ] 
 +do 
 +        WARTEN="$(ls /tmp/${MYSQL_DB}.tabelle* 2>/dev/null | wc -l)" 
 +        sleep 0.2 
 +done 
 + 
 +STOP_ZEIT="$(date -u +'%s')" 
 +echo "Laufzeit: $(echo "${START_ZEIT} ${STOP_ZEIT}" | awk '{print $2 - $1}') Sekunden"
 </file> </file>
  
Zeile 83: Zeile 126:
 ===== sysbench ===== ===== sysbench =====
  
-Sysbench ist ungeeignet um die Leistung einer bestehenden Datenbank zu testen!+__Sysbench ist nicht in jedem Fall geeignet um die Leistung einer bestehenden Datenbank zu testen!__ 
 + 
 +[[https://www.mortensi.com/2021/06/how-to-install-and-use-sysbench/|How to Install and Use Sysbench]] 
 +  sysbench oltp_read_write --table-size=1000000 --db-driver=mysql --mysql-host=<HOST> --mysql-db=<SCHEMA> --mysql-user=<USER> --mysql-password=<PASSWORD> prepare 
 +   
 +  sysbench oltp_read_write --table-size=1000000 --db-driver=mysql --mysql-host=<HOST> --mysql-db=<SCHEMA> --mysql-user=<USER> --mysql-password=<PASSWORD> --threads=2 --report-interval=3 --histogram --time=50 run
  
  
/home/http/wiki/data/attic/mysql_-_benchmark.1645545119.txt · Zuletzt geändert: von manfred