Daftar Isi:
Video: Cara Update Data Stok Secara Otomatis Menggunakan Trigger Dari MySQL 2024
Bit cache database Oracle 12c biasanya merupakan bagian terbesar dari SGA. Ini memiliki data yang berasal dari file pada disk. Karena mengakses data dari disk lebih lambat dari pada memori, satu-satunya tujuan buffer buffer database adalah untuk menyimpan data di memori agar akses lebih cepat.
Cache buffer database dapat berisi data dari semua jenis objek:
-
Tabel
-
Indexes
-
Tampilan yang terwujud
-
Data sistem
Dalam cache cache buffer , buffer mengacu pada blok database. Blok database adalah jumlah minimum penyimpanan yang dibaca atau ditulis Oracle. Semua segmen penyimpanan yang berisi data terdiri dari blok. Bila Anda meminta data dari disk, minimal Oracle membaca satu blok. Sekalipun Anda hanya meminta satu baris, banyak baris dalam tabel yang sama kemungkinan akan diambil. Hal yang sama berlaku jika Anda meminta satu kolom dalam satu baris. Oracle membaca keseluruhan blok, yang kemungkinan besar memiliki banyak baris, dan semua kolom untuk baris itu.
Buffer cache state di Oracle 12c
Kontrol cache
mengendalikan blok yang bisa bertahan tergantung pada ruang yang tersedia dan status blok (mirip dengan bagaimana kolam bersama menentukan apa yang akan tinggal SQL). Cache buffer menggunakan versi algoritma LRU sendiri.
Bebas:
-
Saat ini tidak digunakan untuk apa pun Pinned:
-
Saat ini diakses > Kotor: Blokir telah dimodifikasi namun belum ditulis ke disk
-
Blok bebas Idealnya, blok bebas tersedia kapan pun Anda membutuhkannya. Namun, mungkin tidak demikian kecuali database Anda sangat kecil sehingga semuanya bisa muat di memori.
Algoritma LRU bekerja sedikit berbeda dalam cache buffer daripada di kolam bersama. Ini mencetak setiap blok dan kemudian berapa lama sudah sejak diakses. Misalnya, blok mendapat satu poin setiap kali disentuh.
Semakin tinggi titik, semakin kecil kemungkinan blok tersebut akan disiram dari memori. Namun, harus sering diakses atau skor menurun. Sebuah blok harus bekerja keras untuk tetap diingat jika persaingan untuk sumber daya memori tinggi.
Memberi setiap blok skor dan waktu mencegah situasi seperti ini muncul: Blok diakses pada akhir bulan untuk laporan.Skornya lebih tinggi dari blok lainnya di sistem. Blok itu tidak pernah diakses lagi.
Berada di sana membuang-buang memori sampai database di-restart atau blok lain akhirnya memberi nilai cukup poin untuk mengalahkannya. Komponen waktu mengatasinya dengan sangat cepat setelah Anda tidak lagi mengaksesnya.
Blok yang disematkan
Blok saat ini diakses adalah blok terjepit
.
Blok terkunci (atau disematkan) ke dalam cache buffer sehingga tidak dapat lama keluar dari buffer cache sementara proses Oracle (sering mewakili pengguna) adalah mengaksesnya. Blok kotor Blok yang dimodifikasi adalah blok kotor
.
Untuk memastikan perubahan Anda disimpan di penghentian database, blok kotor ini harus ditulis dari buffer cache ke disk. Nama database blok kotor dalam daftar kotor atau menulis antrian. Anda mungkin berpikir bahwa setiap kali sebuah blok dimodifikasi, itu harus ditulis ke disk untuk meminimalkan data yang hilang. Ini tidak terjadi - bahkan saat ada komitmen
(bila Anda menyimpan perubahan Anda secara permanen)! Beberapa struktur membantu mencegah kehilangan data. Selanjutnya, Oracle memiliki masalah perjudian. Kinerja sistem akan merangkak jika Anda menulis blok ke disk untuk setiap modifikasi. Untuk mengatasi hal ini, Oracle memainkan kemungkinan bahwa database tidak mungkin gagal dan menulis blok ke disk hanya dalam kelompok yang lebih besar. Jangan khawatir; Ini bahkan bukan risiko terhadap data yang hilang. Oracle mendapatkan kinerja dari database
sekarang
pada kemungkinan biaya pemulihan yang lebih lama nanti. Karena kegagalan sistem yang dikelola dengan baik jarang terjadi, ini adalah cara murah untuk mendapatkan beberapa kinerja. Namun, bukan seolah-olah Oracle meninggalkan blok kotor tanpa membersihkannya sendiri. Blokir pemicu penulisan di Oracle 12c Apa yang memicu blok menulis dan oleh karena itu merupakan blok kotor?
Database dikeluarkan perintah shutdown.
Pos pemeriksaan penuh atau sebagian terjadi - saat itulah sistem secara berkala membuang semua buffer kotor ke disk.
-
Ambang waktu pemulihan, yang ditetapkan oleh Anda, terpenuhi; jumlah total blok kotor menyebabkan waktu pemulihan yang tidak dapat diterima.
-
Blok bebas diperlukan dan tidak ada yang ditemukan setelah jumlah pencarian tertentu.
-
perintah bahasa definisi data tertentu (DDL). (Perintah DDL adalah pernyataan SQL yang mendefinisikan objek dalam database.)
-
Setiap tiga detik.
-
Alasan lain. Algoritma ini rumit, dan Anda tidak dapat yakin dengan semua perubahan yang terjadi pada setiap rilis perangkat lunak.
-
Faktanya adalah database tetap cukup sibuk menulis blok di lingkungan dimana ada banyak perubahan.