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

Praktik yang baik untuk menggunakan indeks terbalik pada kunci pengganti? (Peramal)

Secara umum, jika Anda tidak menggunakan RAC, tidak ada alasan untuk menggunakan indeks kunci terbalik.

Dari sudut pandang kinerja, Anda jauh lebih baik memiliki satu atau dua blok panas pada titik waktu tertentu yang tunduk pada penyisipan karena itu pada dasarnya menjamin bahwa blok panas akan berada di cache buffer dan INSERT tidak perlu mengeluarkan biaya untuk membaca blok dari disk. Jika Anda memiliki sisipan yang masuk ke blok acak dalam indeks, ada kemungkinan yang jauh lebih besar bahwa blok yang Anda inginkan akan kehabisan cache dan akan dikenakan biaya I/O fisik.

Biaya menjaga keseimbangan indeks cukup minimal tetapi bahkan itu mendukung indeks standar. Jika Anda memiliki kunci utama yang dihasilkan urutan dengan indeks normal, Oracle akan melakukan Pemecahan blok 90/10 di blok paling kanan saat blok itu terisi. Sebaliknya, jika Anda memiliki indeks kunci terbalik, Oracle harus melakukan 50/50 pembagian blok setiap kali blok yang diberikan terisi. Pemisahan blok 50/50 menyalin setengah data dari blok lama ke blok baru, pemisahan blok 90/10 hanya menyalin nilai data paling kanan ke blok baru. Pemisahan blok 90/10, oleh karena itu, jauh lebih murah daripada pembagian blok 50/50 dan Anda harus melakukan jumlah pembagian blok yang kira-kira sama terlepas dari jenis indeks yang Anda pilih. Jadi biaya pemeliharaan indeks biasa lebih kecil daripada biaya pemeliharaan indeks kunci terbalik bahkan mengabaikan efek cache.

Alasan Anda mempertimbangkan untuk menggunakan indeks kunci terbalik adalah karena Anda menggunakan RAC dan Anda ingin menghindari biaya memiliki banyak node RAC yang semuanya memperebutkan blok panas yang sama. Jika Anda terus-menerus harus mengirimkan blok panas dari satu node ke node lain untuk melakukan penyisipan berikutnya, mungkin bermanfaat untuk menggunakan indeks kunci terbalik sebagai gantinya untuk mengurangi pertentangan itu. Jika Anda telah melisensikan opsi partisi, akan lebih baik tetap menggunakan indeks partisi hash (ini dapat dilakukan baik tabel dipartisi atau tidak). Jika Anda belum melisensikan opsi partisi, indeks kunci terbalik mungkin cukup baik untuk menyelesaikan perselisihan di hot block sehingga Anda tidak perlu melisensikan partisi.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nilai dari baris terakhir yang dimasukkan dalam DB

  2. Bagaimana cara menentukan daftar ekspresi variabel dalam kueri Pro*C?

  3. Bagaimana cara menggabungkan cx_Oracle dengan Pyinstaller

  4. Tambahkan Tanda Mata Uang £, $ ke bidang tertentu ORACLE

  5. Oracle:Akses baca-saja ke skema untuk pengguna lain?