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

Pemindaian sekuensial Postgresql kinerja lambat pada 500 juta baris

Hanya ada beberapa hal yang akan membantu kueri ini:

  • Pemindaian yang sebenarnya tampaknya tidak menjadi masalah (butuh 42 detik), tetapi jika tabel dapat disimpan dalam RAM, mungkin akan lebih cepat.

  • Masalah utama Anda adalah jenisnya, yang telah diparalelkan oleh PostgreSQL.

    Ada beberapa hal yang dapat Anda sesuaikan:

    • Tingkatkan work_mem sebanyak mungkin, yang akan membuat pengurutan lebih cepat.

    • Tingkatkan max_worker_processes (ini akan membutuhkan restart), max_parallel_workers dan max_parallel_workers_per_gather sehingga lebih banyak inti yang dapat digunakan untuk kueri.

      PostgreSQL memiliki logika internal untuk menghitung jumlah maksimum pekerja paralel yang siap digunakan untuk sebuah tabel:PostgreSQL akan mempertimbangkan pekerja paralel sebanyak

      log3 (ukuran tabel / min_parallel_table_scan_size )

      Anda dapat memaksanya untuk menggunakan lebih banyak proses dari itu dengan:

      ALTER TABLE ohlcv SET (parallel_workers = 20);
      

      Tapi max_parallel_workers masih merupakan batas atas.

Jika tidak ada penghapusan dan pembaruan pada tabel, dan data dimasukkan dalam urutan pengurutan, Anda dapat menghapus ORDER BY saja. klausa, asalkan Anda menyetel synchronize_seqscans = off .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana Now() Bekerja di PostgreSQL

  2. PHP dan Basis Data:Tampilan, Fungsi, dan Kinerja Prosedur Tersimpan

  3. Instalasi PostgresSQL 9.5 gagal:"inisialisasi cluster database gagal" MAC os (lebih besar 11.4)

  4. Postgresql dapatkan hari pertama dan terakhir dari semua minggu iso di tahun tertentu

  5. PostgreSQL - Tidak ada hubungan yang ditemukan.