1. परिचय
MySQL सबसे व्यापक रूप से उपयोग किए जाने वाले डेटाबेस प्रबंधन प्रणालियों में से एक है, और इसकी प्रमुख विशेषताओं में से एक, Collation सेटिंग स्ट्रिंग डेटा की तुलना और क्रमबद्ध करने के तरीके को निर्धारित करने में महत्वपूर्ण भूमिका निभाती है।
Collation का महत्व
उचित collation सेटिंग्स के बिना, खोज परिणाम गलत हो सकते हैं या डेटाबेस प्रदर्शन घट सकता है। यह बहुभाषी प्रणालियों में विशेष रूप से महत्वपूर्ण हो जाता है, जहां सटीक वर्ण तुलना और खोज आवश्यक हैं।
यह लेख MySQL collation को विस्तार से समझाता है—इसकी कॉन्फ़िगरेशन, प्रकार, और प्रमुख विचार—ताकि आप अपने डेटाबेस को अधिक प्रभावी ढंग से प्रबंधित कर सकें।
2. Collation क्या है?
Collation उन नियमों को परिभाषित करता है जिनका उपयोग MySQL स्ट्रिंग मानों की तुलना और क्रमबद्ध करने के लिए करता है।
Collation की भूमिका
- स्ट्रिंग क्रमबद्धन: यह तय करता है कि स्ट्रिंग्स कैसे क्रमबद्ध होंगी।
- स्ट्रिंग तुलना:
WHERE name = 'Sagawa'जैसे अभिव्यक्तियों में उपयोग होता है। - खोज सटीकता: बहुभाषी संगतता को प्रभावित करता है।
Character Set के साथ संबंध
Collation चरित्र सेट से घनिष्ठ रूप से जुड़ा होता है। उदाहरण के लिए, utf8 चरित्र सेट में निम्नलिखित collation शामिल हैं:
utf8_general_ci: केस-असंवेदी तुलना।utf8_bin: बाइनरी (केस-संवेदी) तुलना।
नामकरण परंपरा
character_set_name_comparison_method
उदाहरण:
utf8_general_ci: केस-असंवेदी (ci= case insensitive)।utf8_bin: बाइनरी तुलना।
3. MySQL में Collation स्तर
MySQL collation को पाँच स्तरों पर सेट करने की अनुमति देता है:
सर्वर स्तर
SHOW VARIABLES LIKE 'collation_server';
इसे बदलने के लिए, my.cnf को संशोधित करें और सर्वर को पुनः आरंभ करें:
[mysqld]
collation_server=utf8mb4_unicode_ci
डेटाबेस स्तर
ALTER DATABASE db_name DEFAULT COLLATE utf8mb4_unicode_ci;
टेबल स्तर
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
कॉलम स्तर
ALTER TABLE table_name MODIFY COLUMN column_name VARCHAR(255) COLLATE utf8mb4_unicode_ci;
स्ट्रिंग लिटरल स्तर
SELECT * FROM table_name WHERE column_name = 'value' COLLATE utf8mb4_bin;
4. प्रमुख Collation प्रकार और उनकी विशेषताएँ
utf8_general_ci
- विशेषताएँ: केस-असंवेदी और तेज तुलना।
- नोट: कम सटीक; पूर्णतः Unicode अनुपालन नहीं।
utf8_unicode_ci
- विशेषताएँ: Unicode मानकों पर आधारित उच्च-परिशुद्ध तुलना।
- नोट:
utf8_general_ciसे थोड़ा धीमा।
utf8_bin
- विशेषताएँ: केस-संवेदी; सटीक मेल आवश्यक।
- उपयोग: पासवर्ड और पहचानकर्ता।
utf8mb4_unicode_ci
- विशेषताएँ: आधुनिक Unicode मानकों के अनुरूप; बहु-भाषा समर्थन।
- उपयोग: इमोजी और विशेष प्रतीकों को संभालने वाले अनुप्रयोग।
5. Collation कैसे जांचें और बदलें
आप डेटाबेस, तालिका, या कॉलम स्तर पर collation की जाँच या संशोधन कर सकते हैं।
Collation की जाँच
डेटाबेस Collation
SELECT SCHEMA_NAME, DEFAULT_COLLATION_NAME
FROM INFORMATION_SCHEMA.SCHEMATA
WHERE SCHEMA_NAME = 'database_name';
टेबल Collation
SHOW TABLE STATUS WHERE Name = 'table_name';
कॉलम Collation
SHOW FULL COLUMNS FROM table_name;
Collation बदलना
डेटाबेस
ALTER DATABASE database_name
DEFAULT CHARACTER SET utf8mb4
DEFAULT COLLATE utf8mb4_unicode_ci;
टेबल
ALTER TABLE table_name
CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
कॉलम
ALTER TABLE table_name
MODIFY COLUMN column_name VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
अस्थायी Collation परिवर्तन
जब विभिन्न collation वाले कॉलमों की तुलना कर रहे हों, तो त्रुटियों से बचने के लिए COLLATE क्लॉज का उपयोग करें।
SELECT * FROM table_name
WHERE column1 COLLATE utf8mb4_unicode_ci = column2;
परिवर्तन करने से पहले हमेशा अपने डेटा का बैकअप लें और अनुप्रयोग संगतता की जाँच करें।

6. नोट्स और सर्वोत्तम प्रथाएँ
MySQL में collation कॉन्फ़िगर करते समय, सर्वोत्तम प्रदर्शन सुनिश्चित करने के लिए निम्नलिखित सावधानियों और प्रथाओं पर विचार करें।
महत्वपूर्ण नोट्स
अलग-अलग कोलेशन को मिलाना
अलग-अलग कोलेशन वाले कॉलमों की तुलना या जॉइन करने पर त्रुटियाँ हो सकती हैं।
- त्रुटि का उदाहरण:
ERROR 1267 (HY000): Illegal mix of collations for operation '='
- समाधान: कोलेशन को मानकीकृत करने के लिए
COLLATEक्लॉज़ का उपयोग करें।
SELECT * FROM table_name
WHERE column1 COLLATE utf8mb4_unicode_ci = column2;
कोलेशन बदलना और मौजूदा डेटा
कोलेशन बदलने से मौजूदा डेटा की तुलना या खोज के तरीके पर असर पड़ सकता है।
प्रदर्शन पर असर
utf8mb4_unicode_ciअधिक सटीक है लेकिनutf8_general_ciसे धीमा है।- बड़े डेटासेट के लिए, कोलेशन का चयन क्वेरी की गति पर महत्वपूर्ण प्रभाव डालता है।
माइग्रेशन समस्याएँ
कोलेशन बदलते समय अनुप्रयोगों और अन्य प्रणालियों के साथ संगतता सुनिश्चित करें।
सर्वोत्तम प्रथाएँ
1. आवश्यकताओं के आधार पर कोलेशन चुनें
- सटीकता: सटीक तुलना के लिए
utf8_unicode_ciयाutf8mb4_unicode_ciका उपयोग करें। - प्रदर्शन: कम सटीकता वाले तेज़ तुलना के लिए
utf8_general_ciका उपयोग करें। - बहुभाषी समर्थन: इमोजी और विशेष वर्णों के लिए
utf8mb4-आधारित कोलेशन को प्राथमिकता दें।
2. संगति बनाए रखें
- डेटाबेस, टेबल, और कॉलम में समान कोलेशन का उपयोग करें ताकि असंगति से बचा जा सके।
- आवश्यक होने पर
COLLATEका उपयोग केवल अस्थायी रूप से करें।
3. परिवर्तन से पहले परीक्षण और बैकअप लें
- स्टेजिंग वातावरण में कॉन्फ़िगरेशन परिवर्तनों का परीक्षण करें।
- बदलाव लागू करने से पहले उत्पादन डेटा का हमेशा बैकअप लें।
4. प्रदर्शन को अनुकूलित करें
- अक्सर क्वेरी किए जाने वाले कॉलम (जैसे इंडेक्स्ड) के लिए उच्च-प्रदर्शन कोलेशन का उपयोग करें।
- आवश्यकता अनुसार क्वेरी के अनुसार कोलेशन समायोजित करें।
5. नवीनतम यूनिकोड मानकों का उपयोग करें
बहुभाषी प्रणालियों के लिए बेहतर सटीकता और संगतता हेतु utf8mb4_0900_ai_ci का उपयोग करें।
7. निष्कर्ष
MySQL कोलेशन यह निर्धारित करता है कि स्ट्रिंग डेटा डेटाबेस के भीतर कैसे तुलना और क्रमबद्ध किया जाता है। इस मार्गदर्शिका में अवधारणा, कॉन्फ़िगरेशन विधियाँ, प्रकार, और प्रभावी कोलेशन प्रबंधन के लिए सर्वोत्तम प्रथाएँ कवर की गईं।
प्रमुख निष्कर्ष
- परिभाषा: कोलेशन स्ट्रिंग तुलना और क्रमबद्धता को नियंत्रित करता है। सही कोलेशन चुनने से सटीकता और प्रदर्शन में सुधार होता है।
- कई स्तर: कोलेशन सर्वर, डेटाबेस, टेबल, कॉलम, और लिटरल स्तर पर सेट किया जा सकता है।
- मुख्य प्रकार:
utf8_general_ci: तेज़ लेकिन कम सटीक।utf8_unicode_ci: सटीक लेकिन धीमा।utf8mb4_unicode_ci: यूनिकोड-अनुपालक और इमोजी-फ्रेंडली।
- कॉन्फ़िगरेशन: कोलेशन की जांच और संशोधन के लिए SQL उदाहरण प्रदान किए गए हैं।
- सर्वोत्तम प्रथाएँ: परिवर्तन करते समय हमेशा परीक्षण और बैकअप लें।
कोलेशन उपयोग का अनुकूलन
कोलेशन सीधे स्ट्रिंग तुलना और क्रमबद्धता व्यवहार को प्रभावित करता है। इस दस्तावेज़ में चर्चा की गई विधियों और सर्वोत्तम प्रथाओं का पालन करके आप अपने MySQL डेटाबेस सिस्टम में सटीकता और प्रदर्शन दोनों को बनाए रख सकते हैं।


