PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Tại sao psycopg2 INSERT mất quá nhiều thời gian để chạy trong một vòng lặp và làm cách nào để tăng tốc?

Có nhiều tùy chọn để tăng tốc độ chèn dữ liệu hàng loạt.

1.) commit() sau khi vòng lặp kết thúc:

for ele in coordinates:
    cursor.execute('INSERT INTO gmaps (source_latitude, source_longitude, destination_latitude, destination_longitude) VALUES (%s, %s, %s, %s)', (ele[0], ele[1], ele[2], ele[3])))
conn.commit()

2.) Sử dụng trình trợ giúp thực thi nhanh của psycopg2 , như execute_batch() or execute_values() .

3.) Tập trung chuỗi bằng cách sử dụng mogrify() :

dataText = ','.join(cur.mogrify('(%s,%s,%s,%s)', row) for ele in coordinates)
cur.execute('INSERT INTO gmaps VALUES ' + dataText)
cur.commit()

Để so sánh chi tiết về INSERT tốc độ thực thi hãy xem điều này điểm chuẩn.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL có cột giả như LEVEL trong Oracle không?

  2. Cách xây dựng lại một PostgreSQL Slave không nhất quán

  3. Lỗi thả cơ sở dữ liệu postgres:pq:không thể thả cơ sở dữ liệu hiện đang mở

  4. psql:FATAL:vai trò postgres không tồn tại

  5. truyền số lượng tham số chưa biết vào mệnh đề IN bằng cách sử dụng JDBC và Postgres