Mengapa mysql 5.5 lebih lambat dari 5.1 (linux, menggunakan mysqlslap)

10

my.cnf (5.5 dan 5.1 sama):

back_log=200
max_connections=512
max_connect_errors=999999
key_buffer=512M
max_allowed_packet=8M
table_cache=512
sort_buffer=8M
read_buffer_size=8M
thread_cache=8
thread_concurrency=4
myisam_sort_buffer_size=128M
interactive_timeout=28800
wait_timeout=7200

mysql 5.5:

..mysql5.5/bin/mysqlslap -a --concurrency=10 --number-of-queries 5000 
      --iterations=5 -S /tmp/mysql_5.5.sock --engine=innodb
Benchmark
        Running for engine innodb
        Average number of seconds to run all queries: 15.156 seconds
        Minimum number of seconds to run all queries: 15.031 seconds
        Maximum number of seconds to run all queries: 15.296 seconds
        Number of clients running queries: 10
        Average number of queries per client: 500

mysql5.1:

..mysql5.5/bin/mysqlslap -a --concurrency=10 --number-of-queries 5000 
      --iterations=5 -S /tmp/mysql_5.1.sock --engine=innodb
Benchmark
        Running for engine innodb
        Average number of seconds to run all queries: 13.252 seconds
        Minimum number of seconds to run all queries: 13.019 seconds
        Maximum number of seconds to run all queries: 13.480 seconds
        Number of clients running queries: 10
        Average number of queries per client: 500

Mengapa mysql 5.5 lebih lambat dari 5.1?

BTW: Saya sudah mencoba mysql5.5/bin/mysqlslapdan mysql5.1/bin/mysqlslaphasilnya sama

Koerr
sumber
5
Benchmark yang berjalan selama 1 detik? Apakah ini semacam lelucon?
@ pfo, saya ubah ke:--concurrency=10 --number-of-queries 5000
1
My.cnf Anda mengonfigurasi MyISAM tetapi tolok ukur menggunakan InnoDB. Maaf, ini masih lelucon (dan begitu juga default InnoDB jika Anda tidak mengubahnya)
Laurynas Biveinis
3
Saya tidak melihat penyetelan untuk InnoDB di my.cnf Anda. Sebuah tolok ukur terhadap standar konfigurasi tidak berguna dan tolok ukur dari durasi yang singkat ini juga tidak berguna.
Aaron Brown

Jawaban:

9

Anda mungkin menemukan ini mengejutkan, tetapi MySQL 5.1 mungkin mengungguli MySQL 5.5 dalam keadaan tertentu.

Percona melakukan bake-off di antara beberapa rilis MySQL

  • MySQL 4.1
  • MySQL 5.0
  • MySQL 5.1 (dengan InnoDB bawaan)
  • MySQL 5.1 dengan InnoDB-plugin
  • MySQL 5.5
  • MySQL 5.6

Semua tes dilakukan dengan MySQL yang belum dikonfigurasi (Dengan kata lain, tidak ada my.cnf yang dibuat). Hasil?

  • MySQL 4.1 melakukan single-threaded terbaik
  • MySQL 5.1 dengan skala plug-in InnoDB pada beberapa core lebih baik dari 5.1 InnoDB built, 5.5 dan 5.6

Jika Anda ingin versi MySQL yang lebih baru bekerja lebih baik, Anda harus menyetel untuk itu. Bahkan, saya menjelaskan dalam DBA StackExchange gagasan melakukan MySQL Bakeoff .

Apa maksud saya menyetel untuk itu?

Di MySQL 5.5, ada opsi InnoDB baru untuk memanfaatkan utas baca yang lebih berdedikasi, utas tulis, dan kapasitas I / O secara keseluruhan. Ini dapat melibatkan lebih banyak CPU di server multicore. Jika tidak dikonfigurasikan, MySQL 5.5 akan beroperasi pada level bermain yang sama, dalam banyak kasus, sebagai versi MySQL yang lebih lama. Terkadang, itu bisa berkinerja lebih buruk.

RolandoMySQLDBA
sumber
1
Jawaban Anda benar tetapi saya pikir itu tidak berlaku untuk OP. Ketika dia mengkonfigurasi InnoDB, maka kita akan lihat.
Laurynas Biveinis