MySQL Weeekly Seminor 2008/06/13

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

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

  • MySQL はテーブル毎にエンジン変更可能
  • SQL Interface や Parser の後ろにいる
    • データ実体を保存などする機能・場所
  • ポイント
    • テーブル毎に変更できるので柔軟性が高い
    • MySQL だけではなく,サードパーティやコミュニティが作っているものもある
  • ストレージエンジンが提供する価値
    • 各テーブルの機能に応じて,適材適所のエンジンを選択できる
    • エンジンの種類は MySQL Server に隠蔽されるので,ユーザは,どのエンジンを使っているかを気にしなくてもいい
    • ただしチューニングは別
  • 役割
    • どこに(Filesystem 上での実体),どのよう(Format)に保管するか
    • インデックスの実装アルゴリズム
    • InnoDB は Clustered Index?
    • メモリの利用方法
    • トランザクション性
    • 同時実効性
  • 情報は資料を参照
    • Forge に Engine に関する情報がある

##利用例と関連コマンド

  • ストレージエンジン
    • Federated
    • 分散配置したデータに透過アクセスできるエンジンらしい
      • トランザクション非対応なので,InnoDB の代わりにはならない
    • 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 がないのでいい
  • 利用状況
    • MyISAM/InnoDB が6割以上
  • 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
    • 固定長のみ
    • TEXT/BLOG 型は使えない
    • トランザクション非対応
  • 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
    • トランザクション対応
    • トランザクション対応にするかどうかはテーブル単位で選べる
    • サーバクラッシュ時の自動リカバリ機能実装予定
    • MyISAM の拡張版

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

  • memcached ストレージエンジン
  • Amazon S3 ストレージエンジン
    • Amazon S3 と連携するエンジン
  • 様々なエンジンがある
  • source-code にはエンジンのひな形がある

##質疑応答

  • 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 を外したりできるようになるようだ
 
comments powered by Disqus