ユーザー単位のデータ蓄積方法について
ユーザーごとのデータを蓄積する際に、可能な限り更新系処理(特にinsert)の負荷が低くしたいと思い、その手法について効率的な方法を教えていただきたいと思っています。
○実施内容
ユーザーID,1,データ
ユーザーID,2,データ
ユーザーID,3,データ
・・・
(※↑ユーザーIDは、もちろんながらint系の値です。)
というようなスキーマで、ユーザーID、ユーザーごとのデータが共に非常に多くなることを前提とします。
○前提条件
・ユーザーIDはSQL発行の際必ず指定し、あくまで特定のユーザーデータの出し入れだけを行うことを前提とします。(ユーザーIDやデータでソートしたりなどはしません。)
→ソートや検索を行うとしても、必ず特定のユーザーID内だけで行います。
・InnoDBを利用。
○今までの自身の考え
・一番最初に直感でパーティショニングの使用を思いつきましたが、色々なパーティショニングのタイプを見たうえで、念のため実際に試しましたが、かえってパフォーマンスが落ちました。
(今回は、あくまでHDDは一つで、MySQLの設計ベースの話だけとさせて下さい。)
・他の方法として、テーブル自体をなんらかのユーザーID単位のルールで分割してしまう方法も考えていますが、可能な限り避けたいと思っています。
一番の理想としては、パーティショニングでインデックスまで完全に分割して、一つのテーブルに見えるものの、動きとしては複数のテーブルの集合のような状態ができるのが理想です。
お礼
有難うございます! 大変参考になりました。