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

Hasil Cache

Saya bermain-main dengan Result Cache tempo hari…Saya tahu…ini bukan fitur baru dan telah tersedia untuk sementara waktu. Sayangnya, mungkin perlu beberapa saat untuk mencapai hal-hal yang saya kira.

Dalam pengujian sederhana saya, saya memiliki kueri yang menunjukkan perilaku ini:

select
   max(det.invoice_date)
from
   invoices i
join
   invoice_detail det
on i.dept_id=det.dept_id
 
call    count       cpu   elapsed       disk      query   current       rows
------- ------  -------  -------- ---------- ---------- ---------  ---------
Parse        1     0.00      0.00          0          0          0         0
Execute      1     0.00      0.00          0          0          0         0
Fetch        2     2.77      6.66      75521      75583          0         1
------- ------  -------  -------- ---------- ---------- ---------- ---------
total        4     2.77      6.67      75521      75583          0         1

75.000 disk membaca untuk mengembalikan 1 baris. Aduh! Sekarang jalankan ini melalui Result Cache dan dapatkan beberapa angka yang sangat bagus.

select
   /*+ result_cache */
   max(det.invoice_date)
from
   invoices i
join
   invoice_detail det
   on i.dept_id=det.dept_id
 
call     count     cpu   elapsed       disk      query    current       rows
------- ------  ------ --------- ---------- ---------- ----------  ---------
Parse        1    0.00      0.00          0          0          0          0
Execute      1    0.00      0.00          0          0          0          0
Fetch        2    0.00      0.00          0          0          0          1
------- ------  ------ --------- ---------- ---------- ----------  ---------
total        4    0.00      0.00          0          0          0          1

Masih 1 baris kembali tetapi nol disk membaca, nol blok saat ini, dan pada dasarnya nol waktu yang telah berlalu. Bagus!

Cache Hasil berfungsi paling baik saat mengembalikan beberapa baris pada tabel yang tidak sering berubah. Operasi DML pada tabel yang mendasarinya akan membatalkan entri Result Cache dan pekerjaan harus dilakukan lagi sebelum disimpan di Result Cache.

Dalam waktu dekat, ketika saya mendapat kesempatan, saya akan mencari tahu dampak variabel pengikatan pada kueri yang menggunakan Cache Hasil.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. kegilaan versi driver oracle jdbc

  2. Bagaimana Anda menentukan klausa IN dalam kueri dinamis menggunakan variabel?

  3. Pengantar Oracle RMAN

  4. Fungsi NLS_INITCAP() di Oracle

  5. SYS_GUID() Fungsi di Oracle