pyodbc を使用して MS SQL Server で一括挿入操作を最適化するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-11-02 22:44:30
オリジナル
489 人が閲覧しました

How can I optimize bulk insert operations in MS SQL Server using pyodbc?

pyodbc を使用した MS SQL Server での一括挿入操作の最適化

Python コードから大量のデータを MS SQL Server に効率的に挿入するという課題pyodbc の使用には慎重な検討が必要です。個々の挿入を繰り返し実行するのは簡単そうに見えますが、特に 1,300,000 行を超えるデータセットを扱う場合には、重大なパフォーマンスのボトルネックが発生する可能性があります。

考えられる解決策の 1 つは、T-SQL BULK INSERT コマンドを利用することです。データの取り込みを高速化します。ただし、この方法では、データ ファイルが SQL Server インスタンスと同じマシン上、またはサーバーにアクセス可能なネットワーク上の場所に配置されている必要があります。この条件が満たされない場合は、代替オプションを検討する必要があります。

pyodbc の Fast ExecuteMany 機能の探索

Pyodbc バージョン 4.0.19 では、強力なパフォーマンス最適化手法 Cursor# が導入されています。 fast_executemany。この機能を有効にすると、データベース接続はサーバーへの 1 回のラウンドトリップ内で複数のバッチパラメータ実行を実行できます。

fast_executemany を利用するには、次の行をコードに追加するだけです:

<code class="python">crsr.fast_executemany = True</code>
ログイン後にコピー

この設定により、挿入速度が大幅に向上します。ベンチマーク テストでは、fast_executemany を有効にすると 1 秒強で 1,000 行がデータベースに挿入されましたが、この最適化なしでは 22 秒かかりました。

ループ実行の最適化

fast_executemany の使用に加えて、ループ実行のパフォーマンスを微調整する追加の戦略があります。

  • バッチ パラメーター リスト: 行を反復処理して個々の挿入ステートメントを実行する代わりにでは、データをバッチにグループ化し、executemany を使用して複数の行を同時に挿入することを検討してください。
  • Pandas DataFrames を使用した一括挿入: ソース データが Pandas DataFrame に格納されている場合は、pyodbc の to_sql( ) メソッドを使用して一括挿入操作を実行します。この方法では、最適化されたデータベース固有の挿入技術を活用することで、パフォーマンスを大幅に向上させることができます。
  • データベース接続プーリング: 複数の同時リクエストを処理することが予想される場合は、接続プーリングの実装を検討して、オープンに関連するオーバーヘッドを削減します。

これらの最適化を実装すると、pyodbc を使用して MS SQL Server に大量のデータを挿入するプロセスを大幅に高速化できます。

以上がpyodbc を使用して MS SQL Server で一括挿入操作を最適化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート