信頼はずっと、挑戦はもっと。

お問い合わせ
TEL:03-3496-3888

BLOG コアテックの社員ブログ (毎週月曜~金曜更新中)

2019

13

9月

MySQLパーティショニング実践編

テクログ

MySQLパーティショニングの話をします!

基本的なことや導入方法はグーグル先生で検索するといっぱい出てくるのでそちらで。


☆パーティショニングが適切なパターン


そもそも自分が考えるパーティショニングが適切であるパターンは、


・int型のカラムでステータスを判定している(パターン分岐がそれほど多くない)

・一週間毎に生成されるようなデータ

など


つまりあまりパターンが多くなく、indexが効きづらいものですね。

イメージとしては、別テーブルに分けるという選択肢が出てくるものが適切だと思います。

(パーティショニングってそういうことやってる訳ですし)


☆実際に導入した時に気をつけたこと


導入した事例の仕様は

・一週間毎にユーザーに紐づいた計算されたレコードができる(200万くらい)

・そのデータを一週間ごとで参照する


▼レコードを入れる前にパーティショニング


まず、パーティションの導入はテーブルを新規作成するときに行いました。

テストで2ヶ月分、1000万レコード程度が存在する想定の状態でパーティショニングをして見ましたが、

全然終わりませんでしたw


なるべくサービスを止める選択を取りたくなかったため、

事前にパーティショニングされたテーブルにinsertする形になりました


▼PHP側の定期バッチで一週間毎にパーティションを追加


今回の仕様的に定期的なパーティション追加が必要でした。

と言っても簡単なSQLを流すだけです。


▼そもそもパーティションを考えたテーブル構成にする


パーティションの判定をするカラムがuniqueなindexに含まれている必要があります。

とはいえ複合主キーとかに含めるだけでもオッケーです。

逆にここで想定していたカラムが上手くユニークにできない場合、おそらくパーティションするのに向いていないです。



長々と書きましたが、結構導入は簡単です!

パーティションを辞めるときにデータが消えたりもしませんし。

気になる方はやってみましょう!

この記事を書いた人

画像:投稿者アイコン

福神漬け

所 属:
WEBインテグレーション事業部
出身地:
チーバくんの目のあたり
仕事内容:
開発やりつつちょっと管理っぽい仕事

RELATED ARTICLE

関連記事

記事一覧へ