Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Oracle 11g - Bagaimana cara mengoptimalkan pemilihan penyisipan paralel lambat?

Tingkatkan statistik. Perkiraan jumlah baris adalah 1, tetapi jumlah baris sebenarnya lebih dari 7 juta dan terus bertambah. Ini menyebabkan rencana eksekusi menggunakan loop bersarang alih-alih gabungan hash. Loop bersarang bekerja lebih baik untuk sejumlah kecil data dan hash join bekerja lebih baik untuk sejumlah besar data. Memperbaiki itu mungkin semudah memastikan tabel yang relevan memiliki statistik terkini yang akurat. Ini biasanya dapat dilakukan dengan mengumpulkan statistik dengan pengaturan default, misalnya:exec dbms_stats.gather_table_stats('SIRS_UATC1', 'TBL_RECON_PM'); .

Jika itu tidak meningkatkan perkiraan kardinalitas, coba gunakan petunjuk pengambilan sampel dinamis, seperti /*+ dynamic_sampling(5) */ . Untuk kueri yang berjalan lama seperti itu, ada baiknya menghabiskan sedikit waktu ekstra di awal pengambilan sampel data jika mengarah ke rencana yang lebih baik.

Gunakan paralelisme tingkat pernyataan alih-alih paralelisme tingkat objek. Ini mungkin kesalahan paling umum dengan SQL paralel. Jika Anda menggunakan paralelisme tingkat objek, petunjuk harus merujuk pada alias dari objek. Sejak 11gR2 tidak perlu khawatir tentang menentukan objek. Pernyataan ini hanya membutuhkan satu petunjuk:INSERT /*+ PARALLEL(16) APPEND */ ... . Perhatikan bahwa NOLOGGING bukan petunjuk nyata.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORA-27154 / ORA-27146

  2. Oracle Regexp untuk mengganti \n,\r dan \t dengan spasi

  3. Langkah-langkah untuk menyinkronkan Siaga dengan Basis Data Utama di Oracle

  4. AUTONOMOUS_TRANSACTION

  5. Kesalahan SQL:ORA-02291:batasan integritas