sql >> Databáze >  >> RDS >> Oracle

Mezipaměť výsledků

Onehdy jsem si hrál s Result Cache...já vím...toto není nová funkce a je již nějakou dobu k dispozici. Bohužel to může chvíli trvat, než se k věcem dostanu.

V mém jednoduchém testu jsem měl dotaz, který vykazoval toto chování:

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 přečtení disku pro návrat 1 řádku. Au! Nyní to projděte Result Cache a získejte opravdu pěkná čísla. 🙂

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

Stále se vrátil 1 řádek, ale nula čtení disku, nula aktuálních bloků a v podstatě nula uplynulého času. Pěkné!

Mezipaměť výsledků funguje nejlépe při vracení několika řádků v tabulkách, které se často nemění. Operace DML na podkladových tabulkách zneplatní záznam v mezipaměti výsledků a před uložením do mezipaměti výsledků bude nutné provést práci znovu.

Někdy brzy, až budu mít příležitost, zjistím dopad proměnných vazby na dotazy, které používají mezipaměť výsledků.


  1. Chyba příkazu Postgresql COPY poskytující oprávnění byla odepřena

  2. Chyby T-SQL, úskalí a doporučené postupy – poddotazy

  3. Prehistorický a moderní přístup k návrhovým databázím

  4. 5 funkcí pro extrakci čísla týdne z data v MariaDB