2012-03-22 9 views
0

My Companyの新しいフォーラムを設計しましたが、MySQLデータベースのフォーラム投稿を保存するとスケーラビリティがあり、パフォーマンスが良いと確認したかったのですが? 投稿の文字数は約400文字です(400文字に制限されます)。 MySQLのフィールドに400文字のテキストを保存し、テーブルに1,000万行がある場合、パフォーマンスに影響しますか? 私の主な制約はパフォーマンスです。誰かがこのMySQLのフィールドの最大データ長

答えて

5

に光を当ててくださいすることができ二つのデータ型は、あなたが決めるどのようなデータ型VARCHARまたはTEXT

を考慮することがあります。あなたはそれを表示する頻度

  • に依存?もし

TEXTとBLOBを保存する文字の

  • 総数表は単に実際の格納場所へのポインタを有する表をオフに格納されています。

    VARCHARはテーブルとともにインラインで格納されます。サイズが合理的である場合、VARCHARは高速ですが、データとハードウェアによってトレードオフが速くなりますので、データで実際のセネリオをベンチマークする必要があります。

    VARCHAR(格納されたインライン)は、データが頻繁に取得される場合(通常、ほとんどのクエリに含まれます)、通常より高速です。ただし、大量のデータが正常に検索されない場合(つまり、クエリによって参照されない場合)、データがインラインで格納されない方がよい場合があります。インラインで格納されたデータの場合、行サイズに上限があります。

    テーブルにTEXT列またはBLOB列がある場合、そのテーブルをメモリに格納することはできません。これは、キャッシュをヒットしないすべてのクエリがファイルシステムにアクセスしなければならないことを意味します。これはメモリよりもはるかに低速です。

    コンテンツを投稿すると大量のTEXTフィールドが使用されますが、テキストフィールドは実際に必要なときにのみアクセスされる個別のテーブルに格納されます。このようにして、元のテーブルをメモリに格納することができ、はるかに高速になります。

    データを1つの「メモリテーブル」と1つの「ファイルテーブル」に分けると考えてください。これを行う理由は、必要な場合(すなわち、テキストが必要な場合のみ)を除いて、ファイルシステムにアクセスしないようにするためです。

    (投稿、post_text)、(投稿の詳細、投稿)などを試すことができます。