5

MySQL データベースにログ テーブルを作成しています。フィールドの 1 つはログの約 5% でのみ使用され、スタック トレースやその他の開発者向けの長い情報が含まれます。LONGTEXT フィールドの使用を検討していましたが、この列が行の 95% で空であっても、これを使用するとデータベースが急速に拡大するかどうか疑問に思っていました。

だから私の質問は明確です.LONGTEXT列がほとんどの行で空の場合でも、LONGTEXT列を持つことでメモリが消費されますか? たとえば、代わりに TEXT を使用し、長すぎる文字列を切り捨てると、データベースのスペースを大幅に節約できます。

時間の経過とともに大量のログが発生することを付け加えておくことが重要です。

ありがとう!

4

1 に答える 1

7

MySQL の違いによって多少異なりますが、一般的に LONGTEXT のような BLOB 型のカラムは本質的に可変長であり、使用しない場合はストレージをほとんど占有しません。NULLそれらが必要とするスペースは、値の場合には割り当てられません。

スケーリングに関する懸念については、それを確認する方法が 1 つしかありません。膨大な量のログ データを生成して、使用する予定のスキーマをテストすることです。ほぼ死ぬほどいっぱいにプッシュしてから、処理できる量に関するいくつかのメトリックを取得します。これにより、あなたのアプローチがどれほど実行可能であるかがわかります。

于 2015-06-10T17:03:54.910 に答える