お手軽MySQLウォームアップ(MySQL::Warmer)
TIME
rest time
current
/
total
TopicsPlaceHolder
お手軽MySQLウォームアップ(MySQL::Warmer)
Gotanda.pm #2
Sep 17th, 2014
Profile
id:
Songmu
(ソンムー)
Masayuki Matsuki
おそらくはそれさえも平凡な日々
http://www.songmu.jp/riji/
https://metacpan.org/author/SONGMU
趣味はCPANizeです
転職しました
株式会社はてな
シニアアプリケーションエンジニア
先週まで京都旅行
今週から東京オフィスでぼっち
Mackerelチーム
Scala & Go
エンジニア募集中です
Mackerelリリースしました!
https://mackerel.io/
「新しいアプリケーションパフォーマンスマネジメント」
サーバー管理ツールのSaaS
Mackerel Meetup #2
募集中です
宣伝終わり
MySQLのウォームアップ
起動したてのサーバーはメモリにデータが乗っていない
サービスに投入する前にデータを読み込んでメモリに乗っけてやる
ISUCONで重要!!!(かも知れない)
MySQL(InnoDB)の場合OSのキャッシュレイヤではなくて、ちょっと特殊
InnoDB Buffer Poolに乗せてやる必要がある
MySQLのウォームアップ戦略
MySQL のウォームアップ (InnoDB編)
INDEXを使うようなクエリを軒並み呼び出す(データが全部メモリに乗るような環境だとそれで良い)
プライマリインデックスをキーにして全行をロード
各インデックスをロード
自動化できる!
MySQL::Warmer
Songmu先生の新作モジュールです(まだGithub止まり)
Perlで書いたのはDBIx::Inspectorがあるから
DBIx::Inspector
DBのメタデータを色々取るのに便利なやつ
苦難の道程
DBIx::InspectorはテーブルのPK以外のindex情報が取れなかった…
$dbh->statistics_info
ってのがあるらしい
DBD::mysqlでは
statistics_info
が未定義 \(^o^)/
https://rt.cpan.org/Public/Bug/Display.html?id=86030
information_schema.statisticsを自前でSELECTする世界観
実装状況
コア部分は完成
コマンドラインツールが未完成
mysql-warmup -u songmu -h localhost mydbname
DEMO
ところで
今のプロジェクト
PostgreSQLだった… orz
はてなではPostgreSQLに詳しいエンジニアも募集中です