タグ付けされた質問 「bulk」

2
PostgreSQLでの一括更新パフォーマンスの最適化
Ubuntu 12.04でPG 9.1を使用します。 現在、データベースで次の形式の多数のUPDATEステートメントを実行するのに最大24時間かかります。 UPDATE table SET field1 = constant1, field2 = constant2, ... WHERE id = constid (IDで識別されるオブジェクトのフィールドを上書きしているだけです。)値は外部データソースから取得されます(テーブル内のDBにはまだありません)。 テーブルにはそれぞれ少数のインデックスがあり、外部キー制約はありません。最後までCOMMITは行われません。 pg_dumpデータベース全体をインポートするには2時間かかります。これは、合理的に対象とすべきベースラインのようです。 PostgreSQLのデータセットを何らかの方法で再インポートするカスタムプログラムを作成する以外に、バルクUPDATEパフォーマンスをインポートのパフォーマンスに近づけるためにできることはありますか?(これは、ログ構造化されたマージツリーがうまく処理できると信じている領域ですが、PostgreSQL内でできることはないかと考えています。) いくつかのアイデア: すべての非IDインデックスを削除し、その後再構築しますか? checkpoint_segmentsを増やしますが、これは実際に長期的なスループットの持続に役立ちますか? ここで述べたテクニックを使用しますか?(新しいデータをテーブルとしてロードし、新しいデータにIDが見つからない古いデータを「マージ」する) 基本的に試してみることがたくさんありますが、最も効果的なものが何か、他のことを見落としているかどうかはわかりません。今後数日間は実験に費やしますが、ここでも同様に質問すると思いました。 テーブルには同時ロードがありますが、読み取り専用です。

2
postgresから行を一括削除する最も効率的な方法
私はPostgreSQLから大量の行を削除する最も効率的な方法は何だろうと思っています。このプロセスは、テーブルにデータ(挿入と削除のデルタ)を一括インポートするための毎日の定期的なタスクの一部になります。削除する行は数千、場合によっては数百万になる可能性があります。 1行に1つの主キーのファイルがあります。私が考えていた2つの選択肢は以下のようなものでしたが、PostgreSQLの内部について十分な知識がなく、十分な情報を得た上で最善の判断を下すことができません。 主キーを使用DELETEして、ファイル内の各行に対してクエリを実行しますWHERE(またはn、IN()句を使用してバッチで削除をグループ化します)。 COPYコマンドを使用して主キーを一時テーブルにインポートし、結合を使用してメインテーブルから削除する どんな提案でも大歓迎です!

3
「LOAD DATA INFILE」が通常のINSERTステートメントよりも高速なのはなぜですか?
私は、csvファイルから読み取り、データベースにデータを挿入するステートメントを使用して、1秒あたり60,000の挿入を達成できると述べた記事をLOAD DATA IN FILE読みました。 なぜ通常の挿入と異なるのですか? 編集: 私はただ1つのINSERTステートメントを呼び出すことでラウンドトリップを減らしました: INSERT INTO tblname VALUES (NULL,2,'some text here0'),(NULL,2,'some text here1') ,(NULL,2,'some text here2'),(NULL,2,'some text here3') .....,(NULL,2,'some text here3000'); これはどうですか?
22 mysql  import  bulk 

2
OracleBulkCopyの具体的な機能とパフォーマンスを最適化するにはどうすればよいですか?
詳細を要約すると、約500万行をベンダー(Oracle)データベースにステージングする必要があります。OracleBulkCopy(ODP.NET)を使用して50万行のバッチですべてがうまくいきますが、5Mにスケールアップしようとすると、1Mマークに達するとパフォーマンスが低下してクロールになり、行がロードされるにつれて徐々に遅くなり、最終的には3時間程度でタイムアウトします。 テーブルの主キーに関連していると思われますが、情報と私が読んでいる多くのことのためにOracleフォーラムとStack Overflowを探し回っています(また、多くの投稿が互いに矛盾しているようです) 。私は誰かがプロセスに関するいくつかの密接に関連した質問にまっすぐに記録を立てることができることを望んでいます: ないOracleBulkCopyクラスは、従来の、またはダイレクト・パス・ロードを使用しますか?何らかの方法でこれを確認できますか? 仮定すると、それはありません使用ダイレクト・パス・ロード:それはOracleが自動的にロードおよびプットバックオンラインその後、それらの間に使用不可能にすべてのインデックスを設定していることは本当ですか?私はこの効果に関するいくつかの声明を読みましたが、繰り返しますが、確認することはできません。 #2がtrueの場合、一括コピー操作を開始する前に、テーブルにどのインデックスが存在するか違いがありますか?もしそうなら、なぜですか? #3に関連して、一般に、使用できないインデックスを使用したバルクロードと、ロードの前に実際にインデックスを削除してから再作成する間に、実際的な違いはありますか? #2が正しくない場合、または理解していないいくつかの警告がある場合、バルクロードの前に明示的にインデックスを使用不可にし、その後 明示的に再構築することは違いがありますか? インデックスビルド以外に、レコードが追加されるにつれて一括コピー操作が徐々に遅くなる原因はありますか?(たぶん、ロギングと関係がありますが、バルク操作はログに記録されないと思われますか?) 最初にPK /インデックスを削除する以外にパフォーマンスを完全に向上させる方法が他にない場合、インデックスが完全に消えないようにするためにどのような手順を実行できますか。つまり、データベースへの接続が失われた場合プロセスの途中?
14 oracle  bulk 

3
ヘッダー付きのCSVファイルからテーブルを作成する
指定したCSVの内容のみに基づいて新しいMySQLテーブルを生成する方法を探しています。私が使用するCSVファイルには、次のプロパティがあります。 「|」区切られた。 最初の行は列名(ヘッダー)を指定し、 "|"も指定します 区切られた。 列名と順序は固定されていません。 列の数は固定されていません。 ファイルのサイズが大きい(1 mil行/ 50列)。 Excelではこれはすべてかなり単純ですが、MySQLではそうではありません(Googleでは運がありません)。私が見ているべきものについて何か提案はありますか?
12 mysql  csv  import  bulk 

1
最小限のダウンタイムで大量のデータを再インポートする最良の方法
週に1回(3つのint / bigint列のみ)のIPルックアップ(読み取り専用参照)データを含む約500,000件のレコードをインポートする必要があります。 データを既存のテーブルとマージすることについて心配したくないので、古いものをクリアして再インポートしたいと思います。 理想的には、データに対して実行されるクエリは引き続き実行されます(これらのクエリの多くは取得されず、インポートの実行中は少し遅く実行することは許容されますが、24時間年中無休で実行する必要があるため、これを実行します)時間外」はオプションではありません)。 これまでに試したこと SSIS:テーブルを切り捨ててインポートするSSISパッケージを作成しました-実行に約30秒かかります(実際には長すぎます)。 一時テーブル:一時テーブルへのインポート、切り捨て、および全体のコピーにも、約30秒かかります。 BCP:一括インポートもかなり遅い(何らかの理由で、SSISよりも遅い(インデックスを維持する必要がない場合でも))-char-> int / bigintトランザクションと関係があると思います:/ ミラーテーブル?したがって、現時点では、ビューを介してテーブルを読み取り、ミラーテーブルにデータをインポートし、このテーブルを指すようにビューを変更することについて疑問に思っています。ちょっとハッキー。 これは一般的な問題のように思われますが、推奨される方法を見つけることができません。 ありがとう

4
一括データインポートの提案
現在、Excelスプレッドシートからデータをインポートする必要があるプロジェクトに取り組んでいます。データは事前​​に定義されたテンプレートからインポートされ、考えていることから、まず一時テーブルにデータをアップロードしてクリーニング操作を実行します(不要な情報の削除、親テーブルへの新しい行の追加、それらのFKの取得など)。 私が知っている必要があるのは、私たちの努力を減らすことができるツールやユーティリティがあることです。 さまざまなソース(主にExcelスプレッドシートから)から一括レコードを挿入する最良の方法は何ですか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.