PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Mengapa psycopg2 INSERT membutuhkan waktu lama untuk berjalan dalam satu lingkaran dan bagaimana cara mempercepatnya?

Ada beberapa opsi untuk mempercepat penyisipan data massal.

1.) commit() setelah loop selesai:

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.) Gunakan pembantu eksekusi cepat dari psycopg2 , seperti execute_batch() or execute_values() .

3.) Konsentrasi string menggunakan mogrify() :

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

Untuk perbandingan detail INSERT kecepatan eksekusi lihat ini tolok ukur.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara menyembunyikan dekorasi set hasil dalam output Psql

  2. Postgres - FATAL:file database tidak kompatibel dengan server

  3. Buat array int8[] di fungsi PostgreSQL C

  4. Kunci asing tipe serial - pastikan selalu diisi secara manual

  5. Cara Membuat Titik Akhir Tunggal untuk Pengaturan Replikasi PostgreSQL Anda menggunakan HAProxy