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

MySQL प्रदर्शन:MySQL डेटाबेस इंडेक्सिंग का लाभ कैसे उठाएं

इस पूरे ट्यूटोरियल में, हम इंडेक्सिंग के कुछ मूलभूत सिद्धांतों को कवर करेंगे। MySQL श्रृंखला के हिस्से के रूप में, हम MySQL अनुक्रमण की क्षमताओं और डेटाबेस प्रदर्शन को अनुकूलित करने में इसकी भूमिका का परिचय देंगे। लिक्विड वेब आपके उत्पादन स्तर एप्लिकेशन में कोई भी परिवर्तन करने से पहले डीबीए से परामर्श करने की अनुशंसा करता है।

इंडेक्सिंग क्या है?

MySQL में इंडेक्सिंग एक शक्तिशाली संरचना है जिसका उपयोग सामान्य प्रश्नों से सबसे तेज़ प्रतिक्रिया समय प्राप्त करने के लिए किया जा सकता है। MySQL क्वेरीज़ एक निर्दिष्ट कॉलम या कॉलम के सेट से एक छोटी तालिका, जिसे इंडेक्स कहा जाता है, उत्पन्न करके दक्षता प्राप्त करते हैं। इन स्तंभों, जिन्हें एक कुंजी कहा जाता है, का उपयोग विशिष्टता को लागू करने के लिए किया जा सकता है। कुंजी के रूप में दो स्तंभों का उपयोग करते हुए एक उदाहरण अनुक्रमणिका का सरल दृश्य नीचे दिया गया है।

+------+----------+----------+
| ROW | COLUMN_1 | COLUMN_2 |
+------+----------+----------+
| 1 | data1 | data2 |
+------+----------+----------+
| 2 | data1 | data1 |
+------+----------+----------+
| 3 | data1 | data1 |
+------+----------+----------+
| 4 | data1 | data1 |
+------+----------+----------+
| 5 | data1 | data1 |
+------+----------+----------+

क्वेरीज़ इंडेक्स का उपयोग लक्षित डेटा को पहचानने और पुनः प्राप्त करने के लिए करती हैं, भले ही वे चाबियों का एक संयोजन हों। एक इंडेक्स के बिना, उसी क्वेरी को चलाने से आवश्यक डेटा के लिए प्रत्येक पंक्ति का निरीक्षण होता है। अनुक्रमण एक शॉर्टकट बनाता है, विस्तृत तालिकाओं पर बहुत तेज़ क्वेरी समय के साथ। अनुक्रमणिका कैसे कार्य करती है, इसकी कल्पना करने के लिए पाठ्यपुस्तकों की सादृश्यता एक और सामान्य तरीका प्रदान कर सकती है।

इंडेक्सिंग कब सक्षम करें?

नियमित रूप से एक्सेस की जाने वाली जानकारी के साथ विशाल तालिकाओं के लिए अनुक्रमण केवल फायदेमंद है। उदाहरण के लिए, हमारी पाठ्यपुस्तक की सादृश्यता को जारी रखने के लिए, केवल एक दर्जन पृष्ठों वाली बच्चों की कहानी की किताब को अनुक्रमित करने का कोई मतलब नहीं है। "कछुए" शब्द की प्रत्येक घटना को खोजने के लिए केवल पुस्तक को पढ़ने के लिए यह अधिक कुशल है कि यह इंडेक्स को स्थापित करने और बनाए रखने, उन इंडेक्स के लिए क्वेरी करने और फिर प्रदान किए गए प्रत्येक पृष्ठ की समीक्षा करने के लिए होगा। कंप्यूटिंग की दुनिया में, अनुक्रमण के आस-पास के अतिरिक्त कार्य व्यर्थ संसाधनों का प्रतिनिधित्व करते हैं जिनका बेहतर उद्देश्य अनुक्रमण नहीं करना होगा।

अनुक्रमणिका के बिना, जब तालिकाएँ बहुत बड़े अनुपात में बढ़ती हैं, तो प्रतिक्रिया समय उन अधिक तालिकाओं को लक्षित करने वाले प्रश्नों से ग्रस्त होता है। अक्षम क्वेरी एप्लिकेशन या वेबसाइट के प्रदर्शन के भीतर विलंबता में प्रकट होती हैं। हम आमतौर पर MySQL धीमी क्वेरी लॉग सुविधा का उपयोग करके इस विलंबता की पहचान करते हैं। आप इस श्रृंखला के पहले लेख में धीमी क्वेरी लॉग सुविधा का उपयोग करने के बारे में अधिक विवरण प्राप्त कर सकते हैं:MySQL प्रदर्शन:लंबी क्वेरी की पहचान। . बढ़ते डेटाबेस के लिए नियमित मूल्यांकन करना इष्टतम डेटाबेस प्रदर्शन को स्थापित करता है और लंबी क्वेरीज़ के अंतर्निहित रुकावटों को दूर करता है।

MySQL अनुक्रमण पेशेवरों बनाम विपक्ष

MySQL इंडेक्सिंग का उपयोग करने के फायदे और नुकसान हैं, और हम आपके विचार के लिए महत्वपूर्ण पेशेवरों और विपक्षों पर चर्चा करेंगे। ये पहलू आपको यह तय करने में मार्गदर्शन करेंगे कि अनुक्रमण आपकी स्थिति के लिए उपयुक्त विकल्प है या नहीं।

वन इंडेक्स क्या सूचना देता है?

अपने डेटाबेस को अनुक्रमित करने के लिए क्या अनुक्रमणित करना है यह चुनना शायद सबसे चुनौतीपूर्ण हिस्सा है। यह निर्धारित करना कि क्या अनुक्रमणिका के लिए पर्याप्त महत्वपूर्ण है और क्या अनुक्रमणिका न करने के लिए पर्याप्त सौम्य है। आम तौर पर, अनुक्रमण उन स्तंभों पर सबसे अच्छा काम करता है जो आपके सामान्य रूप से निष्पादित प्रश्नों में WHERE क्लॉज का विषय हैं। निम्नलिखित सरलीकृत तालिका पर विचार करें:

ID, TITLE, LAST_NAME, FIRST_NAME, MAIDEN_NAME, DOB, GENDER, AGE, DESCRIPTION, HISTORY, ETC...

यदि आपके प्रश्न LAST_NAME और FIRST_NAME का उपयोग करके WHERE क्लॉज के परीक्षण पर निर्भर हैं, तो इन दो स्तंभों द्वारा अनुक्रमणित करने से क्वेरी प्रतिक्रिया समय में उल्लेखनीय वृद्धि होगी। वैकल्पिक रूप से, यदि आपके प्रश्न एक साधारण आईडी लुकअप पर निर्भर करते हैं, तो आईडी द्वारा अनुक्रमणित करना बेहतर विकल्प होगा।

ये उदाहरण केवल एक प्राथमिक उदाहरण हैं, और MySQL में अंतर्निहित कई प्रकार की अनुक्रमण संरचनाएं हैं। निम्नलिखित MySQL पृष्ठ इस प्रकार के इंडेक्स पर अधिक विस्तार से चर्चा करता है, और इंडेक्सिंग पर विचार करने वाले किसी भी व्यक्ति के लिए अनुशंसित पढ़ने:MySQL इंडेक्स का उपयोग कैसे करता है

अद्वितीय अनुक्रमणिका क्या है?

आपकी अनुक्रमणिका में कुंजी के रूप में काम करने के लिए कौन से कॉलम का मूल्यांकन करते समय विचार करने के लिए एक अन्य बिंदु यह है कि क्या अद्वितीय बाधा का उपयोग करना है। UNIQUE बाधा सेट करने से कॉन्फ़िगर की गई अनुक्रमण कुंजी के आधार पर विशिष्टता लागू होगी। किसी भी कुंजी की तरह, यह एक एकल स्तंभ या कई स्तंभों का संयोजन हो सकता है। इस बाधा का कार्य यह सुनिश्चित करता है कि कॉन्फ़िगर की गई कुंजी के आधार पर तालिका में कोई डुप्लिकेट प्रविष्टियाँ नहीं हैं।

प्राथमिक कुंजी अनुक्रमणिका क्या है?

जैसा कि आमतौर पर UNIQUE बाधा के रूप में लागू किया जाता है, प्राथमिक कुंजी का उपयोग अनुक्रमणिका को अनुकूलित करने के लिए किया जाता है। यह बाधा सुनिश्चित करती है कि निर्दिष्ट प्राथमिक कुंजी शून्य मान की नहीं हो सकती है। परिणामस्वरूप, विचाराधीन तालिका के लिए InnoDB संग्रहण इंजन पर चलते समय प्रदर्शन में वृद्धि होती है। यह बढ़ावा इस वजह से है कि कैसे InnoDB डेटा को भौतिक रूप से संग्रहीत करता है, शून्य मान वाली पंक्तियों को कुंजी के साथ सन्निहित अनुक्रम की कुंजी में रखता है जिसमें मान होते हैं। इस बाधा को सक्षम करने से यह सुनिश्चित होता है कि तालिका की पंक्तियों को त्वरित प्रतिक्रियाओं के लिए सन्निहित क्रम में रखा गया है।

इंडेक्स प्रबंधित करना

अब हम MySQL सिंटैक्स का उपयोग करके इंडेक्स में हेरफेर करने की कुछ बुनियादी बातों को कवर करेंगे। उदाहरणों में, हम अनुक्रमणिका का निर्माण, विलोपन और सूचीकरण शामिल करेंगे। ध्यान रखें, इन उदाहरणों में विशिष्ट कीवर्ड के लिए प्लेसहोल्डर प्रविष्टियां हैं। आसान पढ़ने के लिए ये खोजशब्द स्वभाव से स्व-व्याख्यात्मक हैं, और नीचे उनकी एक रूपरेखा है।

सूचीबद्ध करना/सूचकांक दिखाना

टेबल्स में कई इंडेक्स हो सकते हैं। इंडेक्स को मैनेज करना अनिवार्य रूप से एक टेबल पर मौजूदा इंडेक्स को सूचीबद्ध करने में सक्षम होने की आवश्यकता होगी। किसी इंडेक्स को देखने का सिंटैक्स नीचे है।

SHOW INDEX FROM tableName;

सूचकांक बनाना

अनुक्रमणिका निर्माण का एक सरल सिंटैक्स होता है। कठिनाई यह निर्धारित करने में है कि किन स्तंभों को अनुक्रमणित करने की आवश्यकता है और क्या विशिष्टता को लागू करना आवश्यक है। नीचे हम बताएंगे कि प्राथमिक कुंजी और अद्वितीय बाधाओं के साथ और बिना इंडेक्स कैसे बनाएं।

जैसा कि पहले उल्लेख किया गया है, तालिकाओं में कई अनुक्रमणिकाएँ हो सकती हैं। आपके एप्लिकेशन या वेबसाइट के लिए आवश्यक प्रश्नों के अनुरूप इंडेक्स बनाने के लिए मल्टीपल इंडेक्सिंग उपयोगी है। डिफ़ॉल्ट सेटिंग्स प्रति टेबल 16 इंडेक्स तक की अनुमति देती हैं, इस संख्या को बढ़ाएं लेकिन आम तौर पर आवश्यकता से अधिक है। अनुक्रमणिका को तालिका के निर्माण के दौरान बनाया जा सकता है या बाद में अतिरिक्त अनुक्रमणिका के रूप में तालिका में जोड़ा जा सकता है। हम नीचे दोनों विधियों पर विचार करेंगे।

उदाहरण:मानक अनुक्रमणिका वाली तालिका बनाएं

CREATE TABLE tableName (
ID int,
LName varchar(255),
FName varchar(255),
DOB varchar(255),
LOC varchar(255),
INDEX ( ID )
);

उदाहरण:अद्वितीय अनुक्रमणिका और प्राथमिक कुंजी के साथ तालिका बनाएं

CREATE TABLE tableName (
ID int,
LName varchar(255),
FName varchar(255),
DOB varchar(255),
LOC varchar(255),
PRIMARY KEY (ID),
UNIQUE INDEX ( ID )
);

उदाहरण:मौजूदा तालिका में एक अनुक्रमणिका जोड़ें

CREATE INDEX indexName ON tableName (ID, LName, FName, LOC);

उदाहरण:प्राथमिक कुंजी के साथ मौजूदा तालिका में एक अनुक्रमणिका जोड़ें

CREATE UNIQUE INDEX indexName ON tableName (ID, LName, FName, LOC);

अनुक्रमणिका हटाना

अनुक्रमणिका का प्रबंधन करते समय, आपको कुछ को निकालना आवश्यक लग सकता है। अनुक्रमणिका हटाना भी एक बहुत ही सरल प्रक्रिया है, नीचे दिया गया उदाहरण देखें:

DROP INDEX indexName ON tableName;

वास्तविक दक्षता के लिए अपने डेटाबेस को अनुकूलित करने के कई तरीके हैं। यदि आप अधिक जानना चाहते हैं या MySQL में उपलब्ध खोज इंजन प्रकारों को परिवर्तित करना चाहते हैं तो हमारे MyISAM बनाम InnoDB ट्यूटोरियल को पढ़ें। या यदि आपको उच्च कार्यशील डेटाबेस की आवश्यकता है तो विभिन्न विकल्पों को देखने के लिए हमारा MySQL उत्पाद पृष्ठ देखें।

<फ़ील्डसेट>श्रृंखला नेविगेशन<<पिछला लेखअगला लेख>>

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL बनाम MySQL:कौन सा सर्वश्रेष्ठ है?

  2. PHP MySQL में छवियों को स्टोर करने के लिए या नहीं?

  3. MySQL विदेशी कुंजी बाधा नहीं जोड़ सकता

  4. मैं MySQL में एक सरणी चर का अनुकरण कैसे कर सकता हूं?

  5. कक्षाओं में पीडीओ का प्रयोग