行サイズの98%を占める大きなBLOBを含むテーブルを作成する必要があります。ただし、このBLOBは一時的に行に保持され、別の場所に移動されてから、BLOB列がNULLに設定されます。MySQLはこのスペースを再利用できますか、それとも常に行の一部になりますか?自動的に再利用できない場合、このスペースを手動で再利用するために使用できる別の方法(たとえば、最適化テーブル)はありますか?そうでない場合は、この特定のデータセットを処理するための別の解決策を見つける必要があるかもしれません。
1 に答える
1
Redisを使用したり、blobをファイルシステムに保存したりする方が確実に良いようです。これは実際私がお勧めするものです。データをファイルに保存し、ファイル名をテーブルに配置します。s3への非同期アップロードが完了したら、nullに設定します。大きなオブジェクトを処理するように最適化されたファイルシステムを使用している場合、これはデータベースへの挿入よりも常に高速になります。
BLOBがどの程度正確に格納されるかは、データの長さだけでなく、実際に使用しているmysqlのバージョンにも依存します。削除された行はいつでも再利用でき、後続の挿入でスペースが再利用されない場合は、optimizeテーブルを使用して回復できます。ただし、optimizeテーブルはそのテーブルをロックします。そのため、システムの速度が2度低下します。
于 2012-05-02T09:59:02.750 に答える