Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mengoptimumkan Kelajuan Masukkan Pukal ke MS SQL Server Menggunakan Pyodbc?

Bagaimana untuk Mengoptimumkan Kelajuan Masukkan Pukal ke MS SQL Server Menggunakan Pyodbc?

Barbara Streisand
Barbara Streisandasal
2024-11-02 09:12:29969semak imbas

How to Optimize Bulk Insert Speed to MS SQL Server Using Pyodbc?

Mempercepatkan Sisipan Pukal ke MS SQL Server Menggunakan Pyodbc

Dalam kod ini, penulis menyasarkan untuk mengoptimumkan sisipan lebih 1.3 juta baris ke dalam pangkalan data MS SQL Server . Pada masa ini, proses mengambil masa kira-kira 40 minit untuk memasukkan 300,000 baris. Berdasarkan kod yang disediakan, pendekatan berikut disyorkan untuk meningkatkan kelajuan pemasukan:

Menggunakan Perintah T-SQL Sisipan Pukal

Arahan T-SQL BULK INSERT direka khusus untuk data pukal yang cekap memuatkan. Walau bagaimanapun, ia memerlukan fail sumber untuk ditempatkan pada mesin yang sama seperti contoh SQL Server atau di lokasi rangkaian yang boleh diakses melalui SMB/CIFS.

Memanfaatkan Ciri fast_executemany Pyodbc

Pyodbc 4.0.19 memperkenalkan ciri fast_executemany dalam kelas Kursornya. Apabila didayakan, ciri ini mengoptimumkan pelaksanaan melaksanakan banyak pertanyaan, yang melibatkan memasukkan berbilang baris data.

Kod berikut menunjukkan cara menggunakan fast_executemany:

<code class="python">import pyodbc
import time

conn_str = 'connection string'

cnxn = pyodbc.connect(conn_str, autocommit=True)
crsr = cnxn.cursor()
crsr.execute("TRUNCATE TABLE fast_executemany_test")

sql = "INSERT INTO fast_executemany_test (txtcol) VALUES (?)"
params = [(f'txt{i:06d}',) for i in range(1000)]
t0 = time.perf_counter()
crsr.executemany(sql, params)
print(f'{time.perf_counter() - t0:.1f} seconds')

crsr.fast_executemany = True
t0 = time.perf_counter()
crsr.executemany(sql, params)
print(f'{time.perf_counter() - t0:.1f} seconds')</code>

Dalam kod di atas, mendayakan fast_executemany mengurangkan masa pelaksanaan dengan ketara.

Mengoptimumkan Lelaran Ke Atas Baris

Daripada mengulangi baris satu demi satu, pertimbangkan untuk menggunakan senarai atau tatasusunan NumPy untuk menyimpan data dan kemudian masukkan keseluruhan koleksi dalam satu laksanakan banyak panggilan. Pendekatan ini menghapuskan overhed pelaksanaan kursor berulang.

Dengan melaksanakan pengoptimuman ini, adalah mungkin untuk meningkatkan prestasi operasi sisipan pukal secara drastik dalam MS SQL Server menggunakan pyodbc.

Atas ialah kandungan terperinci Bagaimana untuk Mengoptimumkan Kelajuan Masukkan Pukal ke MS SQL Server Menggunakan Pyodbc?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn