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

Oracle Sequence nextval adalah lompatan nomor bolak-balik

Saya akan bertaruh bahwa database Anda menjalankan RAC (Real Application Clusters). Dengan asumsi itu masalahnya dan Anda membuat urutan dengan semua pengaturan default, itulah perilaku yang diharapkan.

Pengaturan default adalah untuk men-cache 20 nilai. Setiap node di cluster RAC, secara default, akan memiliki cache terpisah. Dengan asumsi bahwa Anda memiliki sebuah cluster dengan dua node A dan B, pertama kali nextval diminta pada A, A akan menyimpan nilai 1-20 dan mengembalikan nilai 1. Jika permintaan berikutnya untuk nextval dibuat pada B, B akan menyimpan nilai 21-40 dan mengembalikan nilai 21. Dari sana, nilai yang Anda dapatkan akan bergantung pada simpul tempat koneksi Anda berjalan.

Secara umum, ini seharusnya tidak menjadi masalah. Urutan menghasilkan angka unik. Angka-angka umumnya tidak perlu berurutan. Jika Anda benar-benar membutuhkan nilai untuk dikembalikan secara berurutan karena Anda melakukan sesuatu seperti mengurutkan berdasarkan nilai yang dihasilkan urutan untuk menentukan baris "pertama" atau "terakhir", Anda dapat menggunakan ORDER klausa saat Anda membuat urutan untuk memaksa nilai dikembalikan secara berurutan. Namun, itu memiliki implikasi kinerja negatif dalam database RAC, karena meningkatkan jumlah komunikasi yang perlu dilakukan di antara node untuk menyinkronkan nilai yang dikembalikan. Jika Anda perlu menentukan baris "pertama" atau "terakhir", biasanya lebih baik menambahkan date atau timestamp kolom ke tabel dan urutkan dengan itu daripada mengasumsikan bahwa kunci utama dihasilkan secara berurutan.



  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 cara menghapus / menghapus sepenuhnya Oracle 11g (klien)?

  2. Bagaimana cara menyalin atau mengimpor skema Oracle antara dua database yang berbeda di server yang berbeda?

  3. Oracle:bagaimana situasinya menggunakan RAISE_APPLICATION_ERROR?

  4. Cara Memasukkan String Panjang ke Tipe Data CLOB di Oracle

  5. Fungsi Analitik LEAD dan LAG