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;
- 内部的には,
- 新テーブル作成
- 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 ストレージエンジン
- 登場時期は未定
- Application -> MySQL Server -> memcached x n
- http://tangent.org/
- 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 を外したりできるようになるようだ