Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

परिणाम कैश

मैं दूसरे दिन रिजल्ट कैश के साथ खेल रहा था ... मुझे पता है ... यह कोई नई सुविधा नहीं है और कुछ समय के लिए उपलब्ध है। दुर्भाग्य से, मेरे हिसाब से चीजों तक पहुंचने में कुछ समय लग सकता है।

मेरे साधारण परीक्षण में, मेरे पास एक प्रश्न था जो इस व्यवहार को प्रदर्शित करता था:

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

1 पंक्ति वापस करने के लिए 75,000 डिस्क पढ़ता है। आउच! अब इसे रिजल्ट कैश के माध्यम से चलाएं और कुछ बहुत अच्छे नंबर प्राप्त करें।

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

फिर भी 1 पंक्ति लौटा लेकिन शून्य डिस्क पढ़ता है, शून्य वर्तमान ब्लॉक, और मूल रूप से शून्य बीता हुआ समय। बढ़िया!

परिणाम कैश उन तालिकाओं पर पंक्तियों की कुछ संख्या लौटाते समय सबसे अच्छा काम करता है जो अक्सर नहीं बदलती हैं। अंतर्निहित तालिकाओं पर DML संचालन परिणाम कैश प्रविष्टि को अमान्य कर देगा और परिणाम कैश में संग्रहीत किए जाने से पहले कार्य को नए सिरे से करने की आवश्यकता होगी।

कभी-कभी, जब मुझे मौका मिलता है, तो मैं परिणाम कैश का उपयोग करने वाली क्वेरी पर बाइंड वैरिएबल के प्रभाव का पता लगाने जा रहा हूं।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ओरेकल मामले में लापता कीवर्ड त्रुटि जब एसक्यूएल बयान

  2. SQLAlchemy का उपयोग करके Oracle डेटाबेस से कनेक्ट करना

  3. Oracle में सबस्ट्र या LIKE तेज है?

  4. केवल बैकअप SQL स्कीमा?

  5. पैरामीटर के साथ Oracle में फ़ंक्शन कैसे निष्पादित करें