# MySQLのシャーディングは事態を悪化させる

![`smart`](ArchBeforeTiDBSharding_en_001_20220721.png)

------------------------------------------------------------------------------
書き込みの増加に対処する方法の1つは、シャーディングと呼ばれる手法を使ってデータを複数のデータベースに分割することです。

ユーザーIDがAからZの文字で始まるユーザーのすべての情報を1つのデータベース（複製付き）に保存することができます。

書き込み容量を増やすために、データベースを2つに分割できます。一部のユーザーは第1データベースで処理し、他のユーザーは第2データベースで処理します。この場合、クエリが正しいデータベースに対して実行されるように、アプリケーションにロジックが必要になる場合があります。ユーザーIDの最初の文字を例として使用していますが、より一般的には、特定のデータのシャードを決定するために、一貫性のあるハッシュを使用することがあります。

もしさらにキャパシティを増やす必要がある場合、同じことをしてデータセットを再分割します。その結果、導入や運用にまつわる悪夢が始まります。
