web-dev-qa-db-ja.com

mysqlテーブルを物理的に分散せずに小さなテーブルに分割することの利点は何ですか?

私の会社ではそのようなデザインを見てきました。

大きなmysqlテーブルは、同じデータベース内の同じサーバー上の同じスキーマの数十の小さなテーブルに分割されます。物理的な分散、innodb_file_per_table、パーティション化などはありません。データは均等に分散され、読み取り/書き込みアクセスパターンは、すべてのテーブルで均一です。

パフォーマンス面でそうすることの利点は何ですか?

4
Arrix

読み取り/書き込みが均等に分散されている場合、パフォーマンス上の利点はないと思います。たとえば、大量の書き込みを行っていて、たとえば2〜3個のテーブルに書き込みを行っている場合は、メリットがあります( this プレゼンテーションのスライド28〜34を参照)。

運用上の利点に関するいくつかのアイデア:

  • データが多すぎたりトラフィックが多すぎたりすると、スケールアウト/シャードが簡単になります。
  • バックアップの作成方法によっては、失われたデータがどのテーブルにあるかを特定できれば、何かを回復する方が早い場合があります。

編集:もう1つの考え:クエリが並行して実行される場合、パフォーマンス上の利点がある可能性があります-RAIDからより多くのIOPSを取得し、ローカリゼーションを改善できますワーキングセットがメモリに収まる場合は、マルチコアシステムの.

4
pQd