私は、テーブルの 1 つが非常に大きくなる可能性があり (ギガバイトのオーダー)、テーブル操作の大部分が書き込みである、MySQL データベースによってバックアップされた Web アプリを作成している最中です。テーブル列の 1 つは、非常に大きな文字列シーケンスを格納する必要があります。これまでのテストでは、サイズは 289 バイトに達しましたが、念のため、最大サイズを 1 kb に設計したいと考えています。現在、その列を MySQL MediumBlob フィールドとして InnoDB テーブルに格納しています。
同時に、BLOB と他の形式のストレージの相対的な長所と短所を確立するためにグーグル検索を行ってきました。世の中には情報があふれています。多すぎるかもしれません。私が収集したのは、InnoDB が BLOB の最初の数バイト (メモリが正しく機能する場合は 789) をテーブル行自体に格納し、残りを他の場所に格納することです。行に列ごとに複数の BLOB (私のテーブルにはありません) がある場合、「他の場所」は各 BLOB の異なる場所であるという考えも持っています。それとは別に、BLOB データへのアクセスは、行データへのアクセスよりも大幅に遅いという印象を受けました (これは理にかなっているように思えます)。
私の質問はまさにこれです-私のBLOBサイズとテーブルの潜在的な大きなサイズを考慮して、ブロブをまったく気にする必要がありますか? また、代わりに何らかの形式の行内ストレージを使用すると、テーブルが収容できる行の最大数に悪影響を与えませんか?
MySQL はきちんとしていて、私の開発環境のほとんどすべてを手放すことができます。しかし... それは現実の世界ではありません。