मूल रूप से TriCore द्वारा प्रकाशित: 12 अप्रैल, 2017
यह दो-भाग ब्लॉग पोस्ट श्रृंखला Oracle® Database में नई प्रदर्शन-ट्यूनिंग सुविधाओं को कवर करती है। भाग 1 ने Oracle Database संस्करण 12.1.0.1 पर चर्चा की। यह अनुवर्ती पोस्ट संस्करण 12.1.0.2 को कवर करता है।
इन-मेमोरी कॉलम स्टोर का परिचय
इन-मेमोरी कॉलम स्टोर (IM कॉलम स्टोर) सिस्टम ग्लोबल एरिया (SGA) का एक वैकल्पिक क्षेत्र है जो टेबल, पार्टीशन, और अन्य डेटाबेस ऑब्जेक्ट्स की प्रतियों को एक कॉलमर प्रारूप में स्टोर करता है जो तेजी से स्कैन के लिए अनुकूलित है। IM कॉलम स्टोर एनालिटिक्स, डेटा वेयरहाउसिंग, और ऑनलाइन ट्रांजेक्शन प्रोसेसिंग (OLTP) एप्लिकेशन के डेटाबेस प्रदर्शन को तेज करता है।
IM कॉलम स्टोर कैसे काम करता है
IM कॉलम स्टोर SGA में डेटाबेस ऑब्जेक्ट्स की प्रतियों को स्टोर करता है। यह डेटाबेस बफर कैश को प्रतिस्थापित नहीं करता है। दोनों मेमोरी क्षेत्र अलग-अलग प्रारूपों में समान डेटा स्टोर कर सकते हैं। IM कॉलम स्टोर में स्टोर की गई पंक्तियों को कॉलमर प्रारूप में बड़े मेमोरी क्षेत्रों में विभाजित किया जाता है। प्रत्येक क्षेत्र के भीतर एक कॉलम मेमोरी के एक सन्निहित क्षेत्र में अलग से रहता है।
आप निम्नलिखित में से किसी भी डेटाबेस ऑब्जेक्ट के लिए IM कॉलम स्टोर को सक्षम कर सकते हैं:
- टेबल
- मटेरियलाइज़्ड व्यू
- पार्टीशन
- टेबलस्पेस
आप या तो टेबल के सभी कॉलम को IM कॉलम स्टोर में स्टोर कर सकते हैं, या उनमें से केवल एक सबसेट। इसी तरह, पार्टीशन की गई टेबल के लिए, आप या तो टेबल के सभी पार्टीशन को स्टोर कर सकते हैं, या केवल उनमें से एक सबसेट। यदि आप टेबलस्पेस स्तर पर IM कॉलम स्टोर को सक्षम करते हैं, तो Oracle Database स्वचालित रूप से टेबलस्पेस में सभी टेबल और मटेरियलाइज़्ड व्यू को IM कॉलम स्टोर के लिए सक्षम करता है।
IM कॉलम स्टोर का उपयोग करने के प्रदर्शन लाभ
डेटाबेस ऑब्जेक्ट्स को डिस्क के बजाय मेमोरी में स्टोर करने से Oracle Database को स्कैन, क्वेरी, जॉइन, और एग्रीगेट बहुत तेजी से करने में सक्षम बनाता है। IM कॉलम स्टोर निम्नलिखित कार्यों को करते समय प्रदर्शन को बढ़ावा दे सकता है:
- बड़ी संख्या में पंक्तियों को स्कैन करना और फिल्टर का उपयोग करना
- कॉलम के बड़े सेट के एक छोटे सबसेट को क्वेरी करना
- एक छोटी टेबल को बड़ी टेबल से जोड़ना, विशेष रूप से जब जॉइन शर्तें अधिकांश पंक्तियों को फ़िल्टर करती हैं
- क्वेरी में डेटा एग्रीगेट करना
IM कॉलम स्टोर डेटा मैनिपुलेशन लैंग्वेज (DML) स्टेटमेंट के प्रदर्शन को भी बढ़ाता है। OLTP सिस्टम को आमतौर पर आमतौर पर एक्सेस किए जाने वाले कॉलम पर कई इंडेक्स बनाने की आवश्यकता होती है। इन इंडेक्स का DML स्टेटमेंट के प्रदर्शन पर नकारात्मक प्रभाव पड़ सकता है। डेटाबेस ऑब्जेक्ट को IM कॉलम स्टोर में स्टोर करने से ये इंडेक्स अनावश्यक हो जाते हैं क्योंकि स्कैन बहुत तेजी से चलते हैं। अनावश्यक इंडेक्स को समाप्त करने से DML स्टेटमेंट के प्रदर्शन में सुधार होता है क्योंकि कम इंडेक्स को अपडेट करना पड़ता है।
छवि स्रोत: Oracle लर्निंग लाइब्रेरी YouTube वीडियो: Oracle Database 12c डेमो: इन-मेमोरी कॉलम स्टोर आर्किटेक्चर अवलोकन
आवश्यक IM कॉलम स्टोर आकार का अनुमान लगाना
IM कॉलम स्टोर निम्नलिखित संपीड़न विधियों का समर्थन करता है:
| संपीड़न विधि | इन-मेमोरी डेटा के संपीड़न का क्रम | इन-मेमोरी डेटा के संपीड़न की तुलना |
|---|---|---|
| NO MEMCOMPRESS | 1 | NIL |
| MEMCOMPRESS FOR DML | 2 (कम से कम संपीड़न) | B<all |
| MEMCOMPRESS FOR QUERY LOW | 3 | B<C<D |
| MEMCOMPRESS FOR QUERY HIGH | 4 | C<D<E |
| MEMCOMPRESS FOR CAPACITY LOW | 5 | D<E<F |
| MEMCOMPRESS FOR CAPACITY HIGH | 6 (उच्च संपीड़न) | all<F |
निम्नलिखित उदाहरण दिखाता है कि oe.product_information टेबल को IM कॉलम स्टोर के लिए कैसे सक्षम किया जाए और संपीड़न विधि MEMCOMPRESS FOR CAPACITY HIGH निर्दिष्ट करें:
SQL>ALTER TABLE oe.product_information INMEMORY MEMCOMPRESS FOR CAPACITY HIGH;
IM कॉलम स्टोर का आकार तय करना
IM कॉलम स्टोर में डेटाबेस ऑब्जेक्ट्स को स्टोर करने के लिए आवश्यक मेमोरी निर्धारित करने के बाद, आप INMEMORY_SIZE इनिशियलाइज़ेशन पैरामीटर का उपयोग करके इसका आकार सेट कर सकते हैं।
IM कॉलम स्टोर का आकार सेट करने के लिए निम्नलिखित चरणों का उपयोग करें:
-
INMEMORY_SIZEइनिशियलाइज़ेशन पैरामीटर को आवश्यक आकार पर सेट करें।इस पैरामीटर का डिफ़ॉल्ट मान
0है, जिसका अर्थ है कि IM कॉलम स्टोर उपयोग नहीं किया जाता है। IM कॉलम स्टोर को सक्षम करने के लिए, इस पैरामीटर को शून्येतर मान पर सेट करें।मल्टीटेनेंट वातावरण में, आप इस पैरामीटर को प्रति PDB सेट करके प्रत्येक प्लगेबल डेटाबेस (PDB) के लिए IM कॉलम स्टोर का आकार निर्दिष्ट कर सकते हैं। PDB के मानों का योग CDB के मान के बराबर नहीं होना चाहिए, और इससे अधिक हो सकता है।
-
IM कॉलम स्टोर का आकार सेट करने के बाद, आपको अपने डेटाबेस इंस्टेंस को रीस्टार्ट करना होगा ताकि यह डेटाबेस ऑब्जेक्ट्स को स्टोर करने में सक्षम हो सके।
निम्नलिखित उदाहरण दिखाता है कि IM कॉलम स्टोर का आकार 100 GB पर कैसे सेट करें:
ALTER SYSTEM SET INMEMORY_SIZE = 100G;
IM कॉलम स्टोर के लिए प्रबंधनीयता समर्थन
SQL मॉनिटर रिपोर्ट, एक्टिव सेशन हिस्ट्री (ASH) रिपोर्ट, और ऑटोमैटिक वर्कलोड रिपॉजिटरी (AWR) रिपोर्ट अब विभिन्न इन-मेमोरी ऑपरेशन के लिए आंकड़े दिखाते हैं।
डेटाबेस कैशिंग मोड
दो डेटाबेस कैशिंग मोड हैं:
- पिछले Oracle Database संस्करणों द्वारा उपयोग किया जाने वाला डिफ़ॉल्ट डेटाबेस कैशिंग मोड
- फोर्स फुल डेटाबेस कैशिंग मोड जो Oracle Database 12c रिलीज 1 (12.1.0.2) में नया है
डिफ़ॉल्ट डेटाबेस कैशिंग मोड
डिफ़ॉल्ट रूप से, Oracle Database फुल टेबल स्कैन करते समय डिफ़ॉल्ट डेटाबेस कैशिंग मोड का उपयोग करता है।
यदि Oracle Database इंस्टेंस यह निर्धारित करता है कि बफर कैश में फुल डेटाबेस को कैश करने के लिए पर्याप्त जगह है और ऐसा करना फायदेमंद है, तो इंस्टेंस स्वचालित रूप से फुल डेटाबेस को बफर कैश में कैश करता है।
यदि इंस्टेंस यह निर्धारित करता है कि बफर कैश में फुल डेटाबेस को कैश करने के लिए पर्याप्त जगह नहीं है, तो यह निम्नलिखित कार्रवाई करता है:
- छोटी टेबल जो बफर कैश आकार के दो प्रतिशत से कम हैं: इन टेबल को मेमोरी में लोड करता है।
- मध्यम आकार की टेबल: अंतिम टेबल स्कैन और बफर कैश के एजिंग टाइमस्टैम्प के बीच अंतर का विश्लेषण करता है। यदि अंतिम टेबल स्कैन में पुनः उपयोग की गई टेबल का आकार शेष बफर कैश आकार से अधिक है, तो टेबल को कैश करता है।
- बड़ी टेबल: इन्हें मेमोरी में लोड नहीं करता जब तक कि आप टेबल को
KEEPबफर पूल के लिए स्पष्ट रूप से घोषित न करें।
फोर्स फुल डेटाबेस कैशिंग मोड
फोर्स फुल डेटाबेस कैशिंग मोड आपको संपूर्ण डेटाबेस को मेमोरी में कैश करने में सक्षम बनाता है, जो फुल टेबल स्कैन या बड़े ऑब्जेक्ट्स (LOBs) तक पहुंच करते समय पर्याप्त प्रदर्शन सुधार प्रदान कर सकता है।
डिफ़ॉल्ट कैशिंग मोड में, Oracle Database हमेशा अंतर्निहित डेटा को कैश नहीं करता जब कोई उपयोगकर्ता बड़ी टेबल को क्वेरी करता है। फोर्स फुल डेटाबेस कैशिंग मोड में, Oracle Database मानता है कि बफर कैश संपूर्ण डेटाबेस को कैश करने के लिए पर्याप्त बड़ा है और क्वेरी द्वारा एक्सेस किए गए सभी ब्लॉकों को कैश करने का प्रयास करता है। यह तब सफल होता है जब डेटाबेस का आकार डेटाबेस बफर कैश आकार से छोटा होता है।
Oracle Database सभी डेटा फाइलों को एक्सेस के रूप में बफर कैश में लोड करता है, जिसमें NOCACHE LOBs और Oracle Database SecureFiles का उपयोग करने वाले LOBs शामिल हैं।
छवि स्रोत: फुल DB इन-मेमोरी कैशिंग।
फोर्स फुल डेटाबेस कैशिंग मोड का उपयोग कब करें
निम्नलिखित स्थितियों में फोर्स फुल डेटाबेस कैशिंग मोड का उपयोग करने पर विचार करें:
- लॉजिकल डेटाबेस आकार (या वास्तविक उपयोग की गई जगह) Oracle रियल एप्लिकेशन क्लस्टर्स (RAC) वातावरण में प्रत्येक डेटाबेस इंस्टेंस के व्यक्तिगत बफर कैश से छोटा है। यह सिफारिश नॉन-Oracle RAC डेटाबेस पर भी लागू होती है।
- लॉजिकल डेटाबेस आकार Oracle RAC वातावरण में अच्छी तरह से विभाजित वर्कलोड (इंस्टेंस एक्सेस द्वारा) के लिए सभी डेटाबेस इंस्टेंस के संयुक्त बफर कैश आकार के 80% से छोटा है।
- डेटाबेस
SGA_TARGETयाMEMORY_TARGETका उपयोग करता है। NOCACHELOBs को कैश करने की आवश्यकता है।NOCACHELOBs कभी कैश नहीं किए जाते जब तक कि फोर्स फुल डेटाबेस कैशिंग का उपयोग न किया जाए।
पहली तीन स्थितियों में, आपको समय-समय पर सिस्टम प्रदर्शन की निगरानी करनी चाहिए ताकि यह सत्यापित किया जा सके कि प्रदर्शन संकेतक आपकी अपेक्षाओं को पूरा करते हैं।
नोट: जब एक Oracle RAC डेटाबेस इंस्टेंस फोर्स फुल डेटाबेस कैशिंग मोड का उपयोग करता है, तो Oracle RAC वातावरण में अन्य सभी डेटाबेस इंस्टेंस भी इस मोड का उपयोग करते हैं। मल्टीटेनेंट वातावरण में, फोर्स फुल डेटाबेस कैशिंग मोड संपूर्ण CDB पर लागू होता है, जिसमें इसके सभी PDB शामिल हैं।
डेटाबेस कैशिंग मोड सेट अप और सत्यापित करें
पहले, डेटाबेस और मेमोरी आकार की जांच करें। आप SYSAUX टेबलस्पेस को बाहर कर सकते हैं, जैसा कि निम्नलिखित उदाहरण में दिखाया गया है:
SQL> col size_mb format 9999
SQL> SELECT sum(bytes)/1024/1024 seg_size_mb FROM dba_segments where tablespace_name != 'SYSAUX';
SEG_SIZE_MB
-----------
4971
बफर कैश के आकार की जांच करने के लिए निम्नलिखित कमांड का उपयोग करें:
SQL> SELECT round(sum(cnum_set * blk_size)/1024/1024) size_mb FROM X$KCBWDS;
SIZE_MB
-------
5283
अपने डेटाबेस को फोर्स फुल डेटाबेस कैशिंग के लिए कॉन्फ़िगर करने के लिए निम्नलिखित चरणों का उपयोग करें:
SQL> startup mount;
Database mounted.
SQL> ALTER DATABASE FORCE FULL DATABASE CACHING;
Database altered.
SQL> SELECT force_full_db_caching FROM v$database;
FORCE_FULL_DB_CACHING
---
YES
SQL> alter database open;
Database altered.
फोर्स फुल डेटाबेस कैशिंग मोड सक्षम है या नहीं, यह सत्यापित करने के लिए निम्नलिखित चरणों का उपयोग करें:
-
V$DATABASEव्यू को क्वेरी करने के लिए निम्नलिखित कमांड का उपयोग करें:SQL>SELECT FORCE_FULL_DB_CACHING FROM V$DATABASE;आउटपुट या तो
YESयाNOहै। -
फोर्स फुल डेटाबेस कैशिंग मोड को सक्षम करने के लिए, निम्नलिखित
ALTER DATABASEकमांड का उपयोग करें:ALTER DATABASE FORCE FULL DATABASE CACHING;कमांड निम्नलिखित पुष्टि लौटाता है:
Database altered. -
फोर्स फुल डेटाबेस कैशिंग को अक्षम करने के लिए, निम्नलिखित कमांड का उपयोग करें:
SQL> ALTER DATABASE NO FORCE FULL DATABASE CACHING;कमांड निम्नलिखित पुष्टि लौटाता है:
Database altered.
निष्कर्ष
सारांश में, IM कॉलम स्टोर DML स्टेटमेंट के लिए निष्पादन समय को कम करता है, और फोर्स फुल डेटाबेस कैशिंग मोड महत्वपूर्ण प्रदर्शन सुधार प्रदान करता है। Oracle Database की नई प्रदर्शन-ट्यूनिंग सुविधाओं पर अधिक जानकारी के लिए, Oracle Enterprise Manager (OEM) द्वारा प्रदान की गई रिपोर्ट देखें।
कोई भी टिप्पणी करने या प्रश्न पूछने के लिए फीडबैक टैब का उपयोग करें।
संदर्भ
निम्नलिखित स्रोतों का उपयोग इस ब्लॉग पोस्ट के लिए संदर्भ के रूप में किया गया था:
-
डेटाबेस प्रदर्शन ट्यूनिंग गाइड: इन-मेमोरी कॉलम स्टोर का उपयोग करने के प्रदर्शन लाभ
-
फुल DB इन-मेमोरी कैशिंग
-
Oracle Database 12c डेमो: इन-मेमोरी कॉलम स्टोर आर्किटेक्चर अवलोकन