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

CLOB पर SUBSTR का प्रदर्शन

(झूठ, लानत है झूठ, और बेंचमार्क...)

मैंने आपके परीक्षण को 10 बार फिर से चलाया, स्ट्रिंग का विस्तार किया ताकि यह पूरे 30 वर्णों का हो, और निम्नलिखित औसत परिणाम प्राप्त हुए:

+000000000 00:00:00.011694200 (VARCHAR2)
+000000000 00:00:00.901000600 (CLOB SUBSTR)
+000000000 00:00:00.013169200 (DBMS_LOB.SUBSTR)

मैंने तब सबस्ट्रिंग रेंज को 5,14 (DBMS_LOB.SUBSTR के लिए 14,5) में बदल दिया और प्राप्त किया:

+000000000 00:00:00.011731000 (VARCHAR2)
+000000000 00:00:01.010840000 (CLOB SUBSTR)
+000000000 00:00:00.011427000 (DBMS_LOB.SUBSTR)

मैंने तब सीमा को 17,14 (DBMS_LOB.SUBSTR के लिए 14,17) में बदल दिया और प्राप्त किया

+000000000 00:00:00.013578900 (VARCHAR2)
+000000000 00:00:00.964527400 (CLOB SUBSTR)
+000000000 00:00:00.011416800 (DBMS_LOB.SUBSTR)

अंत में, मैंने सीमा को 25,14 (DBMS_LOB.SUBSTR के लिए 14,25) में बदल दिया और मिल गया

+000000000 00:00:00.011210200 (VARCHAR2)
+000000000 00:00:00.916439800 (CLOB SUBSTR)
+000000000 00:00:00.013781300 (DBMS_LOB.SUBSTR)

मेरा निष्कर्ष यह है कि सीएलओबी के खिलाफ काम करते समय DBMS_LOB.SUBSTR का उपयोग करना सबसे अच्छा है क्योंकि ऐसा लगता है कि "सामान्य" VARCHAR2 के विरुद्ध SUBSTR का उपयोग करने की तुलना में प्रभावी रूप से कोई प्रदर्शन जुर्माना नहीं है। एक CLOB के विरुद्ध SUBSTR एक महत्वपूर्ण प्रदर्शन दंड से ग्रस्त प्रतीत होता है। रिकॉर्ड के लिए - ओएस =एचपी/यूएक्स (यूनिक्स संस्करण), ओरेकल संस्करण =11.1, प्रोसेसर =एचपी इटेनियम 2-प्लेक्स। वाईएमएमवी.

साझा करें और आनंद लें।

और क्योंकि अगर यह करने लायक है तो यह अति-करने योग्य है, यहां कुछ और परिणाम हैं जिनमें स्ट्रिंग्स को 32767 वर्णों तक विस्तारित किया गया है। परिणामों के प्रत्येक सेट के साथ दी गई सबस्ट्रिंग श्रेणियां:

1, 25000
+000000000 00:00:00.198466400 (VARCHAR2)
+000000000 00:00:02.870958700 (CLOB SUBSTR)
+000000000 00:00:00.174490100 (DBMS_LOB.SUBSTR)

1000, 25000
+000000000 00:00:00.253447900 (VARCHAR2)
+000000000 00:00:02.491790500 (CLOB SUBSTR)
+000000000 00:00:00.193560100 (DBMS_LOB.SUBSTR)

10000, 25000
+000000000 00:00:00.217812000 (VARCHAR2)
+000000000 00:00:02.268794800 (CLOB SUBSTR)
+000000000 00:00:00.222200200 (DBMS_LOB.SUBSTR)

उसी दिन, वही निष्कर्ष।

Cthulhu fhtagn.

(एक बार फिर उल्लंघन के लिए, प्यारे दोस्तों, एक बार फिर...)

बेंचमार्क को फिर से चलाया, सीएलओबी के आकार को 3276700 में बदल दिया, और बीच से सबस्ट्रिंग को 2475000 से लंबाई 25000 के लिए शुरू करने के लिए मुझे मिलता है:

+000000000 00:00:00.176883200 (VARCHAR2)
+000000000 00:00:02.069482600 (CLOB SUBSTR)
+000000000 00:00:00.175341500 (DBMS_LOB.SUBSTR)

(ध्यान दें कि परिवर्तन केवल पिछले दो परीक्षणों को प्रभावित करते हैं)।

और...समान परिणाम, अलग दिन।

वाईएमएमवी.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle केस शॉर्ट-सर्किट समूह द्वारा काम नहीं कर रहा है

  2. Oracle डिक्शनरी व्यू का उपयोग करके PL/SQL पैकेज-स्तरीय प्रकारों की खोज करें

  3. जावा में पीएल/एसक्यूएल फ़ंक्शन को कॉल करें?

  4. DBMS_SCHEDULER.CREATE_JOB प्रक्रिया के साथ एक प्रक्रिया कैसे निष्पादित करें

  5. क्वेरी से अधिक मान लौटाने की प्रक्रिया में कर्सर