2011-01-29 9 views
0

エンティティデータとエンティティ属性値を格納する「マスター」テーブルにcsv→データベースインポートを実行する従来のPHP Webアプリケーションがあります各エンティティの動的データを格納するテーブル。動的属性のEAVテーブルを使用するシステムでのINSERTとLOAD DATA

インポートプロセスは、マスタテーブルへのINSERTと、各行のEAVテーブルへの複数のINSERTを使用して、csvファイルによる行単位の反復処理です。

このプロセスはSLOOWであり、mysqlチューニングについてわかっていることは、LOAD DATA文が一般に一連のINSERTよりはるかに高速であることを示しています。しかし、EAVプロセスのために、csvファイルではなくデータベースクエリの結果に基づいていても、反復はまだ行われなければなりません。

  • 変更するのは価値がありますか?

  • 各ファイルに数千万のレコードがあり、一般にファイルフィールドの2/3未満が実際に属性にマップされていると、違いがありますか?

答えて

0

サウンドは便利な変更のようです。私がやることは、CSVをマスタファイルとeavテーブルの2つのファイルに前処理することです。トリッキーな部分は、これらの2つのファイルの間にある種のリンケージを確立しているため、正しい外部キーを使用してeavテーブルに挿入できます。

場合、問題が簡略化されています。あなたは、負荷

  • マスターテーブルの主キーをインクリメント整数
  • での実行中にシステムに他の書き込みアクセスをロックアウトすることができます

    1. その場合、事前に外部キー値を簡単に「知る」ことができ、いずれかの表のデータをロードする前に適切に設定することができます。

      もしそうでなければ、マスターテーブルレコードのプライマリキー値を取得し、LOAD DATAをポストし、それに応じてeavレコードにリンクする方法を理解する必要があります。

    関連する問題