MySQL Weeekly Seminor 2008/06/13

Falcon/Mariaについて知りたかったので行ってきました.業務として行かせてくれた会社に感謝.内容はMySQL Updateとかなり被ってたんですが,さらにつっこんだ内容もありました.以下,そのログ.

ストレージエンジンとは?

  • MySQL はテーブル毎にエンジン変更可能
  • SQL Interface や Parser の後ろにいる
    • データ実体を保存などする機能・場所
  • ポイント
    • テーブル毎に変更できるので柔軟性が高い
    • MySQL だけではなく,サードパーティやコミュニティが作っているものもある
  • ストレージエンジンが提供する価値
    • 各テーブルの機能に応じて,適材適所のエンジンを選択できる
    • エンジンの種類は MySQL Server に隠蔽されるので,ユーザは,どのエンジンを使っているかを気にしなくてもいい
      • ただしチューニングは別
  • 役割
  • 情報は資料を参照
    • Forge に Engine に関する情報がある

利用例と関連コマンド

  • ストレージエンジン
    • Federated
      • 分散配置したデータに透過アクセスできるエンジンらしい
    • Archive
      • ログ向け?SELECT/INSERT しか使えない
      • MyISAM よりも秒間INSERT可能件数は多い(1.5倍程度)
      • SELECT 性能も MyISAM よりもよい
      • ただしインデックス非対応
    • Merge
      • パーティショニングできる (5.1 まで?)
      • Enterprise で利用率が高い
      • 情報分析に利用されている
        • 年月でテーブルを分割して利用
    • Blackhole(/dev/null)
    • 多段レプリケーションの中間DBに使うと,中間DB自体のアクセスによる速度劣化が少ない?
      • Proxy/Wrapper とかそういう感じ
      • bin-log だけあればいいサーバでは,Blackhole エンジンを使うと,I/O がないのでいい
  • 利用状況
  • ALTER TABLE t ENGINE = NEW_ENGINE;
    • 内部的には,
      1. 新テーブル作成
      2. INSERT INTO NEW_TABLE SELECT ....

各機能概要

  • MyISAM
    • ファイル構造
      • .frm テーブルテー擬
      • .myd データ
      • .myi インデックス
    • トランザクション非対応
    • 圧縮できる
      • 圧縮すると読み取り専用となる
      • ログには便利
    • Concurrent Inser は可能
      • テーブルロック中でも INSERT 可能
  • InoDB
    • サーバ障害時に自動リカバリ機能あり
    • クラスタ構造インデックス
    • Primary キー以外のインデックスは,BTree の先に,Primary キーにたどり着き,そこからPrimary キーインデックスを見る
    • 表領域ファイルは中身を消しても小さくならない
  • Memory
  • Federated
    • テーブルの枠だけを作り,実体は別サーバのテーブルに割り当てる
    • Proxy サーバ的な感じ
  • Archive
    • SELECT/INSERT のみ
    • UPDATE/DELEE が使えない
  • NDB Clusterストレージエンジン
    • SQL を処理する部分と,データ実体を保持する部分が別のサーバに
    • データがあるサーバは,全て同じデータがあるので,1台が落ちてもサービスは続行できる
    • 一度やってみなくてはわからない感じ.
    • 現在は MySQL Cluster 6.2 = MySQL Server 5.1 + ndb 6.2
  • Falcon
    • トランザクション対応のストレージエンジン
    • 大容量メモリがあるサーバで,あたかも印メモリデータベースのように振る舞い,実際はデータ実体はファイルにあるような感じ
      • 32GB 以上が適当か
    • 全てのログ・情報をメモリ上で処理しようとする
    • Worker Threads(別スレッド) でファイルシステムへ反映する
    • InnoDB よりもトランザクション性能が高い
    • 中身を消せば表領域ファイルも小さくなる
    • MySQL 6.0 で登場予定
  • PBXT
    • コミュニティ開発のトランザクション対応エンジン
    • InnoDB と同等の機能を目指して開発中
    • HTTP 経由(BLOG Streaming Engineと組み合わせて)で MySQL に格納可能
  • Nitroedb & Infobright
    • リアルタイム・データウェアハウス向け
    • オンラインでかつリアルタイムで大量のデータを扱うところ向け
  • Maria

雑多なストレージエンジン

質疑応答

  • Falcon は小さなトランザクションで有利
  • Falcon は数十GB単位でメモリがないとパフォーマンス発揮できない
  • Maria は InnoDB でできないことをやろうとしている
  • Maria は大きなトランザクション性能も良くしたいらしい
  • ndb はデータ本体を持つサーバでトランザクションを管理している
  • Fedeated で他社DBサーバを見れるようにするのは,なくなるかも?

その他情報

  • 6/12に5.1.25RCが出たらしい
  • MySQL 5.1 からGeneral Log(MySQL Serverがはき出すログ)をテーブルに保存可能になる.その際に CSV エンジンを使うようだ.
  • MySQL 5.1 から起動中に InnoDB を外したりできるようになるようだ