DeNA Tecnology Seminar #2 自分用メモ

ちょっと遅れて参加。


後でスライド等アップされたらリンクを追加しよう。



一部追加した。

USTREAM: DeNA Technology Seminar: Live at Developers Summit 2012 "DeNA Special Session"
http://engineer.dena.jp/


.



指摘を受け訂正
ManiaDB→MariaDB

参考:






SPIDER Storage Engine: Database Sharding by Storage Engine: MySQL Conference & Expo 2009 - O'Reilly Conferences, April 20 - 23, 2009, Santa Clara, CA

Spider

勉強不足の為、初めて聞いた。

Database Shardingを可能にするストレージエンジン

ウノウラボ by Zynga Japan: 国産MySQLストレージエンジン「Spider」の作者、斯波健徳氏に聞く


ManiaDB MariaDB にバンドルしてもらえる予定ある。現在鋭意対応中。
もちろん単体での利用も継続的に可能。

Q&A

全文検索に対応する可能性はあるか?
余裕があれば。

re-sharding について
別のストレージエンジンの話が出ていた。
その他はあまり良く分からなかった、、。


導入事例だとトップで3つに分散していたがボトルネックにならないか?
トップも分散可能。
アプリケーションからは特定のDBを見にいく事になるのではないか?
ロードバランサで分散できる。

handlersocket plugin

MySQL の非SQL処理。

C++perl で実装


参考:
 mycached 奥一穂氏作
 NDB API


性能が上がるのは単純な参照クエリのみ
取得する列数が多い場合に特に有効
意味がない(設計思想的に)のでトランザクションには対応していない

なぜ早くなるのか

SQL パース処理をしていない
リクエストを集約実行している
独自プロトコルで通信する(偶然効果が上がった)

MySQL の CPU 消費

mysqld の中では SQL パース処理が大部分
カーネルの中ではタスク処理

handlersocket plugin

カーネル処理が CPU 消費の大部分を占める

並列処理

MySQL
接続あたり1スレッド
handlersocket plugin
複数スレッドサポート
規定では epoll 使用
理論上接続数は無制限


途中頭がオーバーヒートしかかるwww

C/S プロトコル比較

何だかバイナリな世界になってきてる?
とにかく handlersocket 早い

myqld/libmysql のプロトコル

結果セットのメタデータが大きい
プロトコルを圧縮できるが CPU 消費が上がる


lbhsclient を xs で呼び出し
肝心の perl モジュール名メモり損なった ><

(perl 界隈で最近 xs はやってますね、
この瞬間 twitter 上で gfx さんが喜んでました)

Q&A

本番投入されているのか?
現在はテスト運用中

MySQL TIPS

MySQL 5.5 Update #denatech

免責事項

個人的見解であり oracle の公式見解ではない www

MySQL 5.5 の新機能

InnoDB の改善


設定ファイルに2行追加で plugin が有効に
互換性があるので既存のデータにも安心して使える
plugin 有効により高速化

もう一つの新フォーマット DYNAMIC

TEXTが完全にページ外に


バイナリログを有効にするとグループコミットが効かなくなる問題を修正
クラッシュリカバリ時間の短縮
4バイト UTF-8 のサポート

レプリケーションの問題点と解決法

マスターがクラッシュするとマスターにしか存在しないデータが存在する
マスターが最低1つのスレーブに更新が飛んだことを確認してから commit を返す

Dtrace

本買って読んでね。

SIGNAL/RESIGNAL

ストアドルーチンで自発的にエラーを発生させる

トラブルシューティング

MySQL を良く知る
ソースコードを読む
さらに本の宣伝www



サインをいただきました。
nippondanji 様ありがとうございました。


しかし自分用のメモとはいえひどい雑な内容だな。
もっと勉強してきちんと細かい部分まで書ける様になりたいな。