これは少し曖昧で、あなた自身の個人的な経験にもっと依存していると思うので、どんな入力でも歓迎します。
データベースXがあり、X内にテーブルYがあります。テーブルYは非常に大きくなり(110万行)、すでに持っている以上にリファクタリングすることはできません。
それで...あなたの経験の中で、問題(もしあれば)が発生し始める前に、このテーブルはどれだけさらに成長することができますか、そしてそれらの問題は何である可能性がありますか?
これは少し曖昧で、あなた自身の個人的な経験にもっと依存していると思うので、どんな入力でも歓迎します。
データベースXがあり、X内にテーブルYがあります。テーブルYは非常に大きくなり(110万行)、すでに持っている以上にリファクタリングすることはできません。
それで...あなたの経験の中で、問題(もしあれば)が発生し始める前に、このテーブルはどれだけさらに成長することができますか、そしてそれらの問題は何である可能性がありますか?
たった110万行で問題が発生するのはなぜですか?ほとんどの(すべてではないにしても)RDBMSは、ストレージなどで十分であり、パーティションがかなりのサイズのファイルを処理できる限り、さらに多く(数十億など)を処理できます(たとえば、Fat32はファイルあたり最大2GBしかサポートしません。例)。
また; 「問題が発生する前に」と言うときは、何を参照しているのかをより具体的にする必要があります。どんな問題?たとえば、クエリの速度が低下する可能性がある正しいインデックスを使用していない場合は、すでに問題が発生している可能性があります。これは問題になる可能性がありますが、場合によっては問題ないこともあります。
実際に問題になる可能性のある別の問題は、タイプ(符号なし)の自動インクリメント主キーフィールドのようなものです。int
これは、約21(符号付き)または42億行(符号なし)の値でオーバーフローする可能性がありますが、現在110万行になっているため、今心配することの外の方法。(もちろん、正確な値は、符号付きと符号なしの場合、それぞれ231-1と232-1です)。その場合、PKにまたは他のタイプ(おそらく(var)charなど)を使用することを検討する必要があります。int
bigint
ここで興味深いのは、特にMySQLの場合、InnoDBとMyISAMのどちらを使用しているかということだけです。私は通常MySQLを使用していないため、正確な詳細はわかりませんが、MyISAMが問題を引き起こす可能性があることを覚えているようです(おそらく<5.0などの古いバージョンで)。私が間違っている場合は私を訂正してください。編集:ここを読んでください。MyISAMは最大をサポートします。特定のオプションでコンパイルされていない限り、明らかに232行です。
使用しているオペレーティングシステムによって異なります。古いシステムの場合、一般的な問題は最大ファイルサイズです。32 bit
古いバージョンのオペレーティングシステムで採用されているファイルシステム(FAT32など)の最大アドレス指定は、過去を求めることができませんでし2GB
た。
最大テーブルサイズのドキュメントを参照してください。