MySQLでは、サイズが1MBを超えるBLOBフィールドを保存または読み取るには、サーバー側のパラメータmax_allowed_packetをデフォルトよりも大きくする必要があります。実際には、このパラメータには16-32MBを大きく超えることはできません。この増加のための価格は、すべての新しいdbクライアントが少なくとも多くのメモリを消費し、一般にサーバーのパフォーマンスが大幅に低下するということです。
つまり、MySQLはBLOBフィールドのサイズが1MBを超えていても(実際にはサーバ設定をしていない、またはしたくない場合)、約16MBまで処理することはできません。
これは哲学的な質問になる可能性があります。大きなブロブをデータベースに保存することをお勧めしますか?私は多くのタスク(ただしすべてではない)は素晴らしいアイデアだと思います.MySQLはそれほど悪く(他の理由のために)、SQLサーバーソリューションとして使用しないでください。
代わりに、私はPostgreSQLを使用しています。これは、BLOB(実際はBYTEA)を完全にサポートしており、クライアントまたはサーバーの調整なしに4GBの上限を宣言しています。それに加えて、実際には、gzipよりもわずかに悪いLZアルゴリズムで透過的に圧縮しますが、圧縮を行わない場合よりもはるかに優れています。
出典
2012-10-19 07:13:14
mvp
ファイルをデータベースに保存する必要がありますか?ファイルをファイルシステムに保存し、そのファイルシステムへの参照をデータベースに保存する方が良いでしょう。 papercliの使用を検討しましたか? (https://github.com/thoughtbot/paperclip) – samullen
私は同様の問題を抱えていました(私のコメントと共にオンライン論文を保存したがっていました)、 '/ public/res// '。それは簡単に実装でき、データベースは小さく保たれました。 –
mliebelt
問題は、アプリケーションにのみファイルにアクセスできる必要があることです。 – sfate