2011-07-17 13 views
0

私はMySQLを使用しています。 XMLファイルの内容をデータベースに保存する必要があります。ファイルのサイズは通常10k未満です。大きなサイズのデータ​​を持つテーブルを分割する必要がありますか?

テーブルは次のようになります。

articles 
----------- 
id 
date 
writer 
... 
file_name 
file_content (Text) 
file_date 

は、私はちょうどdatewriterを選択するときのパフォーマンスを向上させるテーブルを分割していますか?または、このテーブルを分割する他の理由はありますか?

+0

テーブルを分割するとパフォーマンスが向上するとは思わないが、余分なクエリを実行するごとにパフォーマンスが低下することがわかっている。 –

+0

ファイルの内容は何ですか?複雑なxml構造の場合、そのabを別の列/テーブルに分割することができます。 – Jacob

+0

@cularis file_contentには、アーティクルに関するXMLデータの起源データがあります。私はXMLを分割する必要はありません。 –

答えて

3

これは垂直パーティショニングと呼ばれます。

合計データセットが非常に大きい(たとえばRAMより大きい)場合、ほとんどのクエリで大きなfile_contentデータが使用されない場合、別のテーブルに配置するとメインテーブルが大幅に小さくなりますRAMにキャッシュされ、はるかに高速です。

もちろん、file_contentを取得するのは少し遅くなるため、使用頻度によって異なります。

私はフォーラムでこの手法を使用しました。メインのテーブルに投稿テキスト(HTMLに解析されたbbcode)を格納し、別のテーブルに元の投稿(bbcode)を格納しました。フォーラムページを表示すると、メインテーブルのみがヒットします。元の投稿テキストは投稿の編集にのみ使用されます。これにより、ポストテーブルのサイズが2分割され、このサーバーのRAMを2倍にする必要がなくなりました。