Vertica DB
のINSERT
sが非常に遅いという問題に直面しました。私はそのようなテストを行いました:投影のない空のテーブルを作成し、を使用してバッチで挿入を開始します
> INSERT INTO table
SELECT 111,222,333 UNION ALL
SELECT 444,555,666 UNION ALL
SELECT 777,888,999;
1つのクエリで1000行。
アイドル状態のサーバーでは、1つのクエリが約2秒実行され、問題ありませんが、その後、SELECT
s(32コアサーバーで約10 LA、それほど大きな負荷ではありません)とINSERT
sを作成する負荷の生成を開始します。実行速度は20倍遅くなります(1000行ごとに40〜60秒INSERT
)。私の状態には遅すぎます。 Verticaサーバーにファイルをコピーして、パフォーマンスは良いように見えるが複雑すぎるCOPYを作成する以外に、どうすればよいですか?
リソースの使用量が多いほど、読み込みに時間がかかることに驚かないでください。ただし、パフォーマンスの低下については、おそらく簡単な説明があります。私は以下を調べます:
INSERT
とUNION ALL
sは非常に疑わしいものです。負荷は100MBを超えていますか?はいの場合は、COPY
を使用します。「1000行」は、行の幅が10MBになる可能性があるため、またはJSON
をロードしたり、LONG VARCHAR
をロードしたりする可能性があるため、役に立ちません。実際のロードサイズの方が価値があります。一般的なDL380Gen2では、約350GB/HR /ノードが表示されます。