ทำไม mysql 5.5 ช้ากว่า 5.1 (linux โดยใช้ mysqlslap)


10

my.cnf (5.5 และ 5.1 เหมือนกัน):

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

ทำไม mysql 5.5 ช้ากว่า 5.1

BTW: ฉันพยายามmysql5.5/bin/mysqlslapและmysql5.1/bin/mysqlslapผลเหมือนกัน


5
มาตรฐานที่ใช้เวลา 1 วินาทีหรือไม่? นี่เป็นเรื่องตลกหรือเปล่า?

@pfo ฉันเปลี่ยนเป็น:--concurrency=10 --number-of-queries 5000

1
my.cnf ของคุณกำหนดค่า MyISAM แต่เป็นมาตรฐานใช้ InnoDB ฉันขอโทษนี่ยังเป็นเรื่องตลก (และเป็นค่าเริ่มต้นของ InnoDB หากคุณไม่เปลี่ยน)
Laurynas Biveinis

3
ฉันไม่เห็นการปรับแต่งสำหรับ InnoDB ใน my.cnf ของคุณ การเปรียบเทียบกับค่าเริ่มต้นการกำหนดค่านั้นไร้ประโยชน์และมาตรฐานระยะสั้นนี้ก็ไม่มีประโยชน์เช่นกัน
แอรอนบราวน์

คำตอบ:


9

คุณอาจพบว่าสิ่งนี้น่าประหลาดใจ แต่ MySQL 5.1 อาจมีประสิทธิภาพสูงกว่า MySQL 5.5 ในบางสถานการณ์

Percona ทำ bake-off ท่ามกลาง MySQL รุ่นต่างๆ

  • MySQL 4.1
  • MySQL 5.0
  • MySQL 5.1 (พร้อม InnoDB ในตัว)
  • MySQL 5.1 พร้อม InnoDB-plugin
  • MySQL 5.5
  • MySQL 5.6

การทดสอบทั้งหมดดำเนินการกับ MySQL ที่ไม่ได้ตั้งค่า (กล่าวอีกนัยหนึ่งว่าไม่มีการทำ my.cnf) ผลลัพธ์หรือไม่

  • MySQL 4.1 ทำเธรดเดี่ยวที่ดีที่สุด
  • MySQL 5.1 พร้อมปลั๊กอิน InnoDB ปรับขนาดบนหลายคอร์ได้ดีกว่า 5.1 InnoDB ที่สร้างขึ้น, 5.5 และ 5.6

ถ้าคุณต้องการให้ MySQL เวอร์ชั่นใหม่ทำงานได้ดีขึ้นคุณต้องปรับมัน ในความเป็นจริงผมอธิบายไว้ใน DBA StackExchange ความคิดของการดำเนินการ MySQL Bakeoff

ฉันหมายถึงการปรับแต่งมันคืออะไร?

ใน MySQL 5.5 มีตัวเลือก InnoDB ใหม่สำหรับการใช้เธรดการอ่านเฉพาะเพิ่มเติมการเขียนเธรดและความจุ I / O โดยรวม สิ่งนี้สามารถดึงดูด CPU เพิ่มเติมในเซิร์ฟเวอร์แบบมัลติคอร์ ไม่มีการกำหนดค่า MySQL 5.5 จะทำงานบนสนามเด็กเล่นในระดับเดียวกันโดยส่วนใหญ่เป็น MySQL รุ่นเก่ากว่า บางครั้งมันอาจทำงานได้แย่ลง


1
คำตอบของคุณถูกต้อง แต่ฉันคิดว่ามันใช้ไม่ได้กับ OP เมื่อเขากำหนดค่า InnoDB แล้วเราจะเห็น
Laurynas Biveinis
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.