sql >> データベース >  >> RDS >> Mysql

Python:MySQLに挿入するマルチプロセスのコードの何が問題になっていますか?

    はい、同じテーブルに3億行を一括挿入する場合は、この挿入を並列化しようとしないでください。すべての挿入は、同じボトルネックを通過する必要があります。つまり、インデックスの更新と、ハードディスク上の物理ファイルへの書き込みです。これらの操作には、基盤となるリソース(インデックスまたはディスクヘッド)への排他的アクセスが必要です。

    実際には、データベースに無駄なオーバーヘッドを追加しているため、複数の同時トランザクションを処理する必要があります。これはメモリを消費し、コンテキストスイッチを強制し、ディスク読み取りヘッドを常にジャンプさせます。

    すべてを同じスレッドに挿入します。

    ある種のCSVファイルから実際にデータをインポートしているようです。組み込みのLOAD DATA INFILE この目的のために設計されたMySQLコマンド。このコマンドの調整についてサポートが必要な場合は、ソースファイルについて説明してください。




    1. PHP / SQL:1つのクエリのみを使用して、データが両方のテーブルにある場合は2つのテーブルから行を選択し、そうでない場合は1つのテーブルからのみSELECTを使用します

    2. Oracle 11g-低速の並列挿入選択を最適化する方法は?

    3. PythonのSSHトンネリングを介したPostgreSQLデータベースへの接続

    4. ランダムなPHPFastCGI/ピアによる接続のリセット/不完全なヘッダー