MySQL 5.6 GAとMySQL 5.5の性能比較

3172 ワード

MySQL 5.6 GAがリリースされました.間違いなく、これはMySQLの最高のバージョンです.MySQL 5.6の新しい機能と改善内容がまだ分からない場合は、ここから理解することができます.私のこの文章の主な目的は性能のテストです.
Sysbench workloads(Read-ONly/Read-Write)を使用してテストします.次は私のテスト環境です.
ハードウェア構成:
サーバ:32コアbi-thread(HT)Intel 2300 Mhz、128 GB RAM OS:OracleLinux 6.2
ファイルシステム:XFS mounted with"noatime,nodiratime,nobarrier,logbufs=8"MySQL : 5.6-GA, latest 5.5
MySQL構成
#--------------------------------------------------
 max_connections = 4000

 key_buffer_size = 200M
 low_priority_updates = 1
 sort_buffer_size = 2097152
 back_log = 1500
 query_cache_type = 0

# files
 innodb_file_per_table
 innodb_log_file_size = 1024M
 innodb_log_files_in_group = 3
 innodb_open_files = 4000
 table_open_cache = 8000
 table_open_cache_instances = 16

# buffers
 innodb_buffer_pool_size = 32000M
 innodb_buffer_pool_instances = 32
 innodb_log_buffer_size = 64M
 join_buffer_size = 32K
 sort_buffer_size = 32K

# tune
 innodb_checksums = 0
 innodb_doublewrite = 0
 innodb_support_xa = 0
 innodb_thread_concurrency = 0
 innodb_flush_log_at_trx_commit = 2
 innodb_flush_method = O_DIRECT
 innodb_max_dirty_pages_pct = 50
 innodb_use_native_aio =1
 innodb_stats_persistent = 1
 innodb_spin_wait_delay = 6 / 96

# perf special
 innodb_adaptive_flushing = 1
 innodb_flush_neighbors = 0
 innodb_read_io_threads = 16
 innodb_write_io_threads = 4
 innodb_io_capacity = 2000
 innodb_purge_threads =1
 innodb_adaptive_hash_index =  1 / 0

# Monitoring
 innodb_monitor_enable = '%'
 performance_schema = ON
 performance_schema_instrument = '%=on'
#--------------------------------------------------

MySQL調整
構成の最も主要な違いはAHI(innodb_adaptive_hash_index)とSpin Delay(innodb_spin_wait_delay)--他の部分はこのテストの過程で基本的に十分である.
AHIの影響については以前から多くの文章を書いていました.AHIの主な苦境は「使うか使わないか」であり、ロックによる渋滞を助け、インデックスへのアクセスを速めることが多いが、高同時性の場合はbtr_search_latchによるrwロック競合によるボトルネックMySQL 5.6のSpin Delay設定では、内部反発量の管理やrwロック競合の管理において非常に重要な役割を果たすため、パフォーマンスを簡単に2倍に向上させることができます.(ここで詳細を知ることができますが、銀弾も固定されていない最適値は、さまざまな環境に適していることを知っておく必要があります.これはシステム負荷に完全に依存しています.そのため、デフォルト値はMySQL 5.5と同じ6です).
そのため、私のテストでは、異なる負荷で最適なAHIとSpin Delay設定の構成ペアを知りたいと思っています.
次に、MySQL 5.5と5.6の伸縮性に関する制限を覚えておきます.私は8、16、32、64コアの状況でテストを再開しました(64コアはオープンとハイパースレッドの32コアマシンに相当し、その他はハイパースレッドをオープンしていません)まず最初の面白い比較を示して、私の以前のテストと「互換性」を保つために、私はまずTPS(トランザクション/秒)をテストして、それからQPS(クエリー/秒)をテストして、私はこのような方法がもっと好きです.
最初のテストはクラシックなSysbench OLTP_RO(読み取り専用):
Sysbench OLTP_RO:
次は同じOLT P_ROはテストしますが、トランザクションではテーブルの開閉操作は行いません(完全な説明はここを参照してください).
Sysbench OLTP_RO-trx :
次は「point-selects」です.これはデータを読む方法で、以前のMySQL 5.5バージョンではよく表現されていましたが、5.6ではいくつかの違いがあります.
Sysbench OLTP_RO Point-Selects :
これは最も苦痛なテストで、Simple-Langes(この文を読んで、なぜ苦痛と落胆しているのかを知ることができます)
Sysbench OLTP_RO Simple-Ranges :
次は読み書きテストです.これは負荷が最も重い読み書きではありませんが、問題を説明することができます.
Sysbench OLTP_RW :
TPSは256人の同時ユーザから低下し始め,これがより高いレベルになることを期待している.しかし、依然として5.5バージョンより2倍も高く、私を信じて、次のバージョンのMySQLの表現はもっと良いです.この段階ではinnodbスレッドの同時設定を調整することで、より安定で高性能を得ることができます.
MySQL 5.6 GAのリリースを見て嬉しいです.
これはMySQL史上最高のバージョンです.
高負荷でMySQL 5.5よりずっと速いより良いデザインさらに調整可能な性能分析がより透明なより良い計器化これらの方法はあなたが今まで見たよりです.
多くの新しい機能を含む