Save 37% off PRO during our Black Friday Sale! »

sysbench-mysql-tester

0d91e4e792fb936633033b38e57f28c8?s=47 tom--bo
August 19, 2019

 sysbench-mysql-tester

0d91e4e792fb936633033b38e57f28c8?s=128

tom--bo

August 19, 2019
Tweet

Transcript

  1. sysbench-mysql-tester ~ MySQL 8.0以降のベンチマーク ~ tom__bo @MyNA(2019/8/19)

  2. はじめに • ベンチマークの⽬的 • 1機能・変数に着⽬した研究 • 内部構造・挙動の正確な理解が前提 • 特定のワークロード・アクセスパターンに限定 •

    ベンチマーク中のモニタリングや詳細なメトリクスが必須 • 統合的な理解 • 内部構造・ワークロードはある程度抽象化・⼀般化 • 代表的・⼀般的なワークロードを想定 • ベンチマーク中の詳細なメトリクスは必要があれば検証 • ex) Version間のperformance⽐較, HW変更, PM⇔VM移⾏
  3. はじめに • ベンチマークの⽬的 • 1機能・変数に着⽬した研究 • 内部構造・挙動の正確な理解が前提 • 特定のワークロード・アクセスパターンに限定 •

    ベンチマーク中のモニタリングや詳細なメトリクスが必須 • 統合的な理解 • 内部構造・ワークロードはある程度抽象化・⼀般化 • 代表的・⼀般的なワークロードを想定 • ベンチマーク中の詳細なメトリクスは必要があれば検証 • ex) Version間のperformance⽐較, HW変更, PM⇔VM移⾏ ←今回の⽬的
  4. ベンチマークの⾃動化できていますか? • ⾃動化までの壁 • そもそも本番環境に近い負荷を作ることが難しい • ⼿動でないとやりづらいことが多い • my.cnfの書き換え(sshアクセス) •

    再起動 • 結果の集計(ツールのアウトプットの整理)
  5. ベンチマークの⾃動化できていますか? • ⾃動化までの壁 • そもそも本番環境に近い負荷を作ることが難しい • ⼿動でないとやりづらいことが多い • my.cnfの書き換え(sshアクセス) •

    再起動 • 結果の集計(ツールのアウトプットの整理) sysbenchのlua scriptで 頑張る 8.0の新機能で対応 sysbenchのparser, sm-parserを使って シリアライズ
  6. ベンチマークの⾃動化できていますか? • ⾃動化までの壁 • そもそも本番環境に近い負荷を作ることが難しい • ⼿動でないとやりづらいことが多い • my.cnfの書き換え(sshアクセス) •

    再起動 • 結果の集計(ツールのアウトプットの整理) sysbenchのlua scriptで 頑張る 8.0の新機能で対応 sysbenchのparser, sm-parserを使って シリアライズ sysbench-mysql-tester
  7. MySQL 8.0の新機能 • 8.0でcloud環境向けに⼊ったコマンド • SET PERSIST • RESET PERSIST

    • RESTART • ssh等のリモートアクセスを介した再起動やconfigファイルの 書き換えが不要になる!
  8. ベンチマーク⾃動化ツール作りました • sysbench-mysql-tester • https://github.com/tom--bo/sysbench-mysql-tester

  9. sysbench-mysql-testerとは • sysbenchを使ったMySQLベンチマークの⾃動化ツール • シナリオ単位でBackendDB(MySQL)にConfigを追加すれば、 ⾃動でベンチマークを実⾏ • シナリオ • ベンチマークを実⾏する1セット

    • 実験回数, sysbenchのシナリオ, イベントごとのmysql commandを指定 • sysbenchの結果をパースしてBackendDBに保存 • シナリオの前後、prepare(sysbench)の後でスクリプトを実⾏ できる • 詳細な検証前の網羅的な検証・集計が可能
  10. Target MySQL Overview sysbench-mysql- tester Backend MySQL confの設定, 再起動 benchmark

    (sysbench) ベンチマークシナリオの読み込み 結果の保存 Target MySQL Target MySQL
  11. • 各イベントで実⾏するScriptを 定義 • before_senario • after_prepare • after_senario •

    Script, 実験回数(N), parameterを 指定してsenarioを定義 • smtの起動 • 結果の取得 ⼤まかな流れ Before Senario Prepare (sysbench) After Prepare Run (sysbench) After Senario Restart Restart x N Senario Set Variables Sleep (120sec)
  12. デモ (後⽇ブログを書くので、ブログかREADMEを⾒てください)

  13. collation (oltp_read_write) innodb_buffer_pool_size = 1G innodb_buffer_pool_size = 40G

  14. 今後の課題 • UIがない (現状DBに直insert) • daemon化 • set variables部分の登録が⾯倒 •

    versionの変化によるparameter変化への追従が厳しい
  15. END