MySQL: बड़े वर्कर बनाम पाठ?


845

मुझे MySQL में एक संदेश तालिका मिली है जो उपयोगकर्ताओं के बीच संदेश रिकॉर्ड करती है। ठेठ आईडी और संदेश प्रकार (सभी पूर्णांक प्रकार) के अलावा मुझे वास्तविक संदेश पाठ को या तो VARCHAR या पाठ के रूप में सहेजने की आवश्यकता है। मैं 3000 अक्षरों की फ्रंट-एंड लिमिट सेट कर रहा हूं, जिसका मतलब है कि संदेशों को इससे अधिक लंबे समय तक डीबी में नहीं डाला जाएगा।

वहाँ VARCHAR (3000) या पाठ के साथ जाने के लिए एक तर्क है? VARCHAR (3000) लिखने के बारे में कुछ ऐसा है जो कुछ प्रति-सहज महसूस करता है। मैं स्टैक ओवरफ्लो पर अन्य समान पोस्ट के माध्यम से गया हूं, लेकिन इस प्रकार के आम संदेश के भंडारण के लिए विशिष्ट विचार प्राप्त करना अच्छा होगा।


27
थोड़ा पुराना, लेकिन मैं यहां आया क्योंकि मैं एक समस्या में भाग गया जिसने मुझे इस बारे में सोचा। मेरे मामले में मेरा फ्रंट-एंड फॉर्म 2,000 वर्णों तक सीमित था, लेकिन मेरे स्टोरेज मेथड में निहित एन्कोडिंग ने अंतर्राष्ट्रीय पात्रों को कई वर्णों के रूप में एन्कोड किया (जो कि स्पष्ट रूप से 3 - 12 प्रति चरित्र से कहीं भी हो सकता है)। तो मेरा 2,000 अचानक 24,000 तक हो जाता है। कुछ सोचने के लिए ...
जेम्स एस

3
मैंने कई समवर्ती आवेषण के लिए पाठ को काफी तेज पाया है।
रे एस।

1
@ जेम्स: utf8mb4 ...>। <
अविभाजित

10
@RickJames एक अपडेटेड उत्तर पोस्ट करने पर विचार करते हैं, प्रश्न को बंद करने के बजाय
यवेट

3
@YvetteColomb - मैंने एक उत्तर जोड़ा। मैं मुख्य रूप से स्वीकृत उत्तर से छुटकारा पाना चाहूंगा क्योंकि यह पुराना है । मैं क्यू एंड ए में आया था, क्योंकि कोई व्यक्ति गलत जानकारी उद्धृत कर रहा था, "754 अपवोट्स, इसलिए यह सही होना चाहिए"। ठीक है, मैंने स्वीकृत उत्तर को भी संपादित किया। (हालांकि यह अनुचित लगता है।)
रिक जेम्स

जवाबों:


811
  • TEXTऔर BLOB हो सकता है के आधार पर तालिका सिर्फ वास्तविक भंडारण के स्थान पर एक सूचक होने के साथ टेबल पर से संग्रहीत। जहाँ इसे संग्रहीत किया जाता है, यह डेटा आकार, कॉलम आकार, row_format और MySQL संस्करण जैसी बहुत सी चीज़ों पर निर्भर करता है।

  • VARCHARतालिका के साथ इनलाइन संग्रहीत है। VARCHARजब आकार उचित होता है तो तेज होता है, जिसका ट्रेडऑफ़ तेज़ी से आपके डेटा और आपके हार्डवेयर पर निर्भर करता है, आप अपने डेटा के साथ वास्तविक दुनिया के परिदृश्य को मापना चाहते हैं।


148
+1: VARCHAR (संग्रहीत इनलाइन) आमतौर पर तेज़ होता है यदि डेटा अक्सर पुनर्प्राप्त किया जाता है (अधिकांश प्रश्नों द्वारा शामिल किया गया है)। हालांकि, डेटा की एक बड़ी मात्रा के लिए जिसे सामान्य रूप से पुनर्प्राप्त नहीं किया जाता है (जो कि किसी भी प्रश्न द्वारा संदर्भित नहीं है), फिर डेटा इनलाइन संग्रहीत नहीं करना बेहतर हो सकता है। डेटा संग्रहीत इनलाइन के लिए पंक्ति आकार पर एक ऊपरी सीमा है।
spencer7593

21
@ स्पेसर: "इनलाइन" स्टोरेज से बचने का सटीक लाभ उन पंक्तियों की संख्या में वृद्धि है जो एक ब्लॉक में संग्रहीत की जा सकती हैं, जिसका मतलब है कि इनोबीडी बफर कैश (कम मेमोरी फुटप्रिंट) में कम ब्लॉक पर कब्जा करने वाली तालिका पंक्तियां, और कम का मतलब है ब्लॉक डिस्क और (I / O कम) से स्थानांतरित करने के लिए। लेकिन, यह केवल एक प्रदर्शन लाभ है अगर "ऑफ रो" संग्रहीत कॉलम मोटे तौर पर प्रश्नों से अपरिचित हैं। यदि उन "ऑफ रो" कॉलमों को अधिकांश प्रश्नों द्वारा संदर्भित किया जाता है, तो यह काफी हद तक वाष्पित हो जाता है। इनलाइन को पसंद किया जाता है यदि कॉलम अधिकतम पंक्तियों में फिट होते हैं और अक्सर संदर्भित होते हैं।
spencer7593

231
"VARCHAR तेज है जब आकार उचित है"। वर्णों की "उचित" संख्या 100 क्या है? 1000? 100,000?
टिम पीटरसन

125
यह उत्तर InnoDB के लिए सही नहीं है। VARCHAR और BLOB / TEXT दोनों को अन्य कॉलम के साथ इनलाइन में संग्रहित किया जाता है यदि किसी दिए गए पंक्ति पर मान पृष्ठ आकार (16KB और प्रत्येक पृष्ठ में कम से कम दो पंक्तियों का होना चाहिए) में फिट बैठता है। यदि स्ट्रिंग इसके लिए बहुत बड़ी है, तो यह अतिरिक्त पृष्ठों पर पहुंच जाती है। विस्तृत विवरण के लिए mysqlperformanceblog.com/2010/02/09/blob-storage-in-innodb देखें ।
बिल करविन

14
@BillKarwin ... अगर मैं सही तरीके से समझ रहा हूं तो छोटे टेक्स्ट आइटम के लिए InnoDB में varcharऔर blob/ textपर कोई प्रदर्शन अंतर नहीं होना चाहिए ? तो यह तो बुद्धिमान हो तो बस हर बनाने के लिए होगा varcharएक textऔर प्रकार जाने डीबी इनलाइन बनाम अतिप्रवाह का प्रबंधन?
ryvantage

473

क्या आप अनुमान लगा सकते हैं कि उपयोगकर्ता इनपुट कब तक होगा?

VARCHAR (एक्स)

केस: उपयोगकर्ता नाम, ईमेल, देश, विषय, पासवर्ड


पाठ

मामला: संदेश, ईमेल, टिप्पणियां, स्वरूपित पाठ, HTML, कोड, चित्र, लिंक


MEDIUMTEXT

केस: बड़े जोंस बॉडीज, शॉर्ट टू मीडियम लेंथ बुक्स, सीएसवी स्ट्रिंग्स


LongText

मामला: पाठ्यपुस्तकें, कार्यक्रम, लॉग फाइल के वर्ष, हैरी पॉटर और आग का गोला, वैज्ञानिक अनुसंधान लॉगिंग


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

29
@ -rew-barber हालांकि यह मेरी बात है। अन्य सभी पोस्ट मतभेदों के बारे में अच्छी तरह से समझाते हैं लेकिन उन स्थितियों के बारे में नहीं जब आपको वास्तव में दोनों के बीच चयन करना होता है। मैं भविष्यवाणी करने के लिए varchar का उपयोग करके इंगित करने की कोशिश कर रहा था कि शॉर्ट एक अच्छा विकल्प है और मनमाने ढंग से लंबे समय के लिए टेक्स्ट का उपयोग करना एक अच्छा विकल्प है।
माइकल जे। कैलकिंस

1
यदि सभी कॉलम छोटे और अनुमानित हैं (उदाहरण के लिए: मैक पता, IMEI, आदि ... ऐसी चीजें हैं जो कभी नहीं बदलती हैं) तो CHAR कॉलम का उपयोग करें और आप अपनी पंक्ति का आकार निश्चित कर सकते हैं, जो कि MyISAM का उपयोग करते हुए चीजों को तेजी से बढ़ाना चाहिए, संभवतः भी InnoDb हालांकि मैं इसके बारे में निश्चित नहीं हूं।
मैट

1
@ माइकलजे.कल्किंस थिंग जो MySQL 5.6 में हुआ था। अब आप भी InnoDB में पूर्ण खोज है। Dev.mysql.com/doc/refman/5.6/en/fulltext-search.html
PhoneixS

7
चरित्र सीमाएँ: टिनटाइप: 255; पाठ: 65,535; MEDIUMTEXT: 16,777,215; लंबाटच: 4,294,967,29।
विक्टर स्टोडार्ड

218

सबसे अच्छा अभ्यास स्पष्ट करने के लिए:

  1. पाठ प्रारूप संदेशों को लगभग हमेशा TEXT के रूप में संग्रहीत किया जाना चाहिए (वे अंत में मनमाने ढंग से लंबे होते हैं)

  2. स्ट्रिंग विशेषताओं को VARCHAR (गंतव्य उपयोगकर्ता नाम, विषय, आदि ...) के रूप में संग्रहीत किया जाना चाहिए।

मैं समझता हूं कि आपको फ्रंट एंड लिमिट मिल गई है, जो तब तक बढ़िया है जब तक यह नहीं होती। * मुस्कराहट * डीबी के बारे में सोचना है कि जो एप्लिकेशन इसे कनेक्ट करते हैं, उनसे अलग हो। सिर्फ इसलिए कि एक अनुप्रयोग डेटा पर एक सीमा रखता है, इसका मतलब यह नहीं है कि डेटा आंतरिक रूप से सीमित है।

यह उन संदेशों के बारे में क्या है जो उन्हें 3000 से अधिक वर्ण कभी नहीं होने के लिए मजबूर करते हैं? यदि यह केवल एक मनमाना एप्लिकेशन बाधा है (जैसे, टेक्स्ट बॉक्स या कुछ के लिए), TEXTडेटा स्तर पर फ़ील्ड का उपयोग करें ।


क्या "जो महान है जब तक यह मतलब नहीं है"? "संदर्भित नहीं" क्या है?
पचेरियर

7
@Pacerier आपको "नहीं है" का एक उदाहरण देने के लिए जेम्स के बारे में संभावना है: उदाहरण के लिए ट्विटर ले लो, जो बहुत हाल ही में पीएम पर एक वर्ण की सीमा 140 थी। उन्होंने फैसला किया कि यह अब समझदार नहीं था और उस सीमा को पूरी तरह से हटाने के लिए चुना। यदि वे इसके बारे में आगे नहीं सोचते थे (जो मुझे पूरा यकीन है कि उन्होंने शायद किया है ...) वे ऊपर उल्लिखित परिदृश्य के लिए चले थे।
पॉलस्किनर

9
मैं सिर्फ अपना नया डेटाबेस डाल रहा हूं, और मुझे लगता है कि कोई भी संभवत: 2000 से अधिक पात्रों को हमारे छोटे कमेंट बॉक्स में नहीं डाल सकता है, और फिर, जेम्स नोट के रूप में, आज रात यह अचानक "ठीक नहीं था" क्योंकि एक उपयोगकर्ता एक के माध्यम से डालता है बहुत ही मान्य टिप्पणी जो 2600 वर्णों की थी। मैं varchar (2000) का उपयोग करते हुए सोचता हूं कि यह संभवतः इससे अधिक समय तक नहीं मिल सकता है, और मैं गलत था। हां, यह बहुत अच्छा है जब तक यह नहीं है। हमारे मामले में जिसे प्रकट होने में कुछ ही दिन लगे थे। नीचे का नियम, माइकल जे। कल्किंस, मुझे लगता है कि मैं अभी से उपयोग करूंगा। संदेशों, टिप्पणियों के लिए पाठ।
छिपकली

1
@Pacerier "जो महान है जब तक यह महान नहीं है"। दूसरे शब्दों में, यह लगभग हर समय काम करता है और अद्भुत है ... उन असाधारण स्थितियों को छोड़कर जहां यह इतना महान नहीं है।
सीमित प्रायश्चित

@Pacerier का एक और दिलचस्प उदाहरण चयनित उत्तर की टिप्पणियों में उल्लिखित है, मूल रूप से उनके पास 2,000 अक्षरों की फ्रंट-एंड सीमा थी, लेकिन पेश किए गए अक्षर एक कोडपेज में थे जो वास्तव में सामान्य अक्षरों की तुलना में अधिक बाइट्स का उपयोग करते थे, उनके डेटाबेस को अंतरिक्ष की आवश्यकता समाप्त हो गई थी 24k वर्णों के लिए सिर्फ इसलिए कि उसे पेश किए जा रहे पात्रों के वास्तविक बाइट आकार के लिए खाता था।
रैप्टरएक्स

32

अस्वीकरण: मैं एक MySQL विशेषज्ञ नहीं हूँ ... लेकिन यह मुद्दों की मेरी समझ है।

मुझे लगता है कि Txt को mysql रो के बाहर संग्रहीत किया जाता है, जबकि मुझे लगता है कि VARCHAR को पंक्ति के भाग के रूप में संग्रहीत किया जाता है। Mysql पंक्तियों के लिए अधिकतम पंक्ति की लंबाई है .. ताकि आप यह सीमित कर सकें कि VARCHAR का उपयोग करके आप किसी पंक्ति में कितने अन्य डेटा संग्रहीत कर सकते हैं।

इसके अलावा VARCHAR को पंक्ति का हिस्सा बनाने के कारण, मुझे संदेह है कि उस फ़ील्ड को देखने वाले प्रश्न TEXT कबाड़ का उपयोग करने वालों की तुलना में थोड़ा तेज़ होंगे।


38
पंक्ति की लंबाई सीमा 65,535 बाइट्स [ dev.mysql.com/doc/refman/5.0/en/column-count-limit.html ] है। यदि आपका स्तंभ utf8-encoded है, तो इसका मतलब है कि 3000-वर्ण varcharस्तंभ 9000 बाइट्स तक ले सकता है।
जन फैब्री

7
UTF-8 वर्ण 4 बाइट्स तक हो सकते हैं, इसलिए मुझे लगता है कि आप 12,000 बाइट्स का मतलब है (जब तक कि कुछ MySQL बात नहीं है जो मैं यहां समझ नहीं रहा हूं)।
रिलु जूल

13
@raylu MySQL का UTF-8 "नकली UTF-8" है जिसमें यह केवल प्रति वर्ण अधिकतम 3 बाइट्स का समर्थन करता है, इसलिए MySQL के UTF-8 में BMP विमान से परे यूनिकोड वर्णों को सीधे स्टोर करने का कोई तरीका नहीं है। यह MySQL 5.5 में तय किया गया है।
पचेरियर

2
मेरा मानना ​​है कि यह दावा केवल MyISAM के लिए मान्य है। मुझे कोई निश्चित स्रोत नहीं मिल रहा है लेकिन मेरा मानना ​​है कि इनोबीडी स्टोर TEXTइनलाइन को टेबल में भी इनलाइन करता है।
डॉटकेनहेन

2
@dotancohen मुझे यहां एक स्रोत मिला, जिसमें बताया गया है कि InnoDB का उपयोग करके परिवर्तनीय लंबाई के डेटा का भंडारण अलग-अलग हो सकता है (पंक्ति के भीतर बाह्य या इनलाइन में संग्रहीत किया जा सकता है) mysqlserverteam.com/externally-stored-fields-in-innodb
KiX Ortillan

30

संक्षिप्त उत्तर: कोई व्यावहारिक, प्रदर्शन या भंडारण, अंतर नहीं।

लंबा जवाब:

VARCHAR(3000)(या किसी अन्य बड़ी सीमा के बीच) या ( MySQL में) अनिवार्य रूप से कोई अंतर नहीं है TEXT। पूर्व में 3000 वर्णों की छंटनी होगी ; उत्तरार्द्ध 65535 बाइट्स में विभाजित हो जाएगा । (मैं बाइट्स और वर्णों के बीच अंतर करता हूं क्योंकि एक चरित्र कई बाइट्स ले सकता है।)

में छोटी सीमा के लिए VARCHAR, वहाँ कुछ फायदे हैं TEXT

  • "छोटा" का अर्थ संस्करण, संदर्भ और, के आधार पर 191, 255, 512, 767, या 3072, आदि है CHARACTER SET
  • INDEXesसीमित कर दिया जाता है कि एक स्तंभ को कितना बड़ा किया जा सकता है। (767 या 3072 बाइट्स ; यह संस्करण और सेटिंग्स निर्भर है)
  • जटिल द्वारा बनाई गई मध्यवर्ती तालिकाओं SELECTsको दो अलग-अलग तरीकों से नियंत्रित किया जाता है - मेमोरी (तेज) या MyISAM (धीमा)। जब 'बड़े' कॉलम शामिल होते हैं, तो धीमी तकनीक स्वचालित रूप से चुन ली जाती है। (संस्करण 8.0 में आने वाले महत्वपूर्ण परिवर्तन; इसलिए यह बुलेट आइटम परिवर्तन के अधीन है।)
  • पिछले आइटम से संबंधित, सभी TEXTडेटाटिप्स (विपरीत के रूप में VARCHAR) सीधे MyISAM में कूदते हैं। अर्थात्, TINYTEXTसमतुल्य से उत्पन्न अस्थायी तालिकाओं के लिए स्वचालित रूप से बदतर है VARCHAR। (लेकिन यह चर्चा को एक तीसरी दिशा में ले जाता है!)
  • VARBINARYजैसा है VARCHAR; BLOBकी तरह है TEXT

अन्य उत्तरों के लिए रिबूटल

मूल प्रश्न ने एक बात पूछी (जो उपयोग करने के लिए डेटाटाइप); स्वीकृत उत्तर ने कुछ और उत्तर दिया (ऑफ-रिकॉर्ड स्टोरेज)। वह जवाब अब पुराना हो चुका है।

जब इस धागे को शुरू किया गया था और उत्तर दिया गया था , तो इनोबीडी में केवल दो "पंक्ति प्रारूप" थे। इसके तुरंत बाद, दो और प्रारूप ( DYNAMICऔर COMPRESSED) पेश किए गए।

के लिए भंडारण स्थान TEXTऔर आकारVARCHAR() पर आधारित है , डेटाटाइप के नाम पर नहीं । एक के लिए अद्यतन / बंद रिकॉर्ड बड़े पाठ / ब्लॉब स्तंभों की भंडारण की चर्चा, देखना यह


1
यहाँ कुछ अच्छी अंतर्दृष्टि। यह स्वीकृत उत्तर होना चाहिए।
कोस्टा कोंटोस

2
@KostaKontos - प्रशंसा और टाइपो फिक्स के लिए धन्यवाद। जब मुझे एक बेहतर उत्तर की आवश्यकता होती है, तो मैं एक उत्तर जोड़ूंगा, भले ही 8 साल और 800 अपटाउन बहुत देर से हो।
रिक जेम्स

7

पूर्ववर्ती उत्तर मुख्य समस्या पर पर्याप्त जोर नहीं देते हैं: यहां तक ​​कि बहुत ही सरल प्रश्नों में भी

(SELECT t2.* FROM t1, t2 WHERE t2.id = t1.id ORDER BY t1.id) 

एक अस्थायी तालिका की आवश्यकता हो सकती है, और यदि कोई VARCHARफ़ील्ड शामिल है, तो इसे CHARअस्थायी तालिका में फ़ील्ड में बदल दिया जाता है । इसलिए यदि आप अपनी तालिका में किसी VARCHAR(65000)फ़ील्ड के साथ 500 000 लाइनें कहते हैं , तो यह कॉलम अकेले 6.5 * 5 * 10 ^ 9 बाइट का उपयोग करेगा । ऐसे टेम्प टेबल को स्मृति में संभाला नहीं जा सकता है और डिस्क पर लिखा जाता है। प्रभाव के विनाशकारी होने की उम्मीद की जा सकती है।

स्रोत (मेट्रिक्स के साथ): https://nicj.net/mysql-text-vs-varchar-performance/ (यह "मानक" (?) MyISAM भंडारण इंजन में TEXTबनाम की हैंडलिंग को संदर्भित करता है VARCHAR। यह दूसरों में अलग हो सकता है। उदाहरण के लिए, InnoDB)


3
InnoDB: यही संस्करण 5.7 के माध्यम से लागू होता है। 8.0 के साथ, varchar temps वैरिएबल लेंथ होते हैं।
रिक जेम्स

3

वर्च और पाठ के बीच एक बड़ा अंतर है। जबकि VARCHAR क्षेत्रों को अनुक्रमित किया जा सकता है, TEXT फ़ील्ड नहीं कर सकते हैं। VARCHAR प्रकार के फ़ील्ड को इनलाइन संग्रहीत किया जाता है, जबकि TEXT को ऑफ़लाइन संग्रहीत किया जाता है, केवल TEXT डेटा को इंगित करने वाले को वास्तव में रिकॉर्ड में संग्रहीत किया जाता है।

अगर आपको VARCHAR के लिए जाने की तुलना में तेजी से खोज, अपडेट या डिलीट करने के लिए अपने क्षेत्र को इंडेक्स करना है, तो कोई बात नहीं। एक VARCHAR (10000000) कभी भी TEXT फ़ील्ड के समान नहीं होगा क्योंकि ये दोनों डेटा प्रकार प्रकृति में भिन्न हैं।

  • यदि आप केवल संग्रह के लिए फ़ील्ड का उपयोग करते हैं
  • आप डेटा गति के बारे में परवाह नहीं है
  • आप गति के बारे में परवाह करते हैं, लेकिन आप अपनी खोज क्वेरी में ऑपरेटर '% LIKE%' का उपयोग करेंगे ताकि अनुक्रमण ज्यादा मदद नहीं करेगा
  • आप डेटा की लंबाई की सीमा का अनुमान नहीं लगा सकते

पाठ के लिए जाने से।


आंशिक रूप से भ्रामक जानकारी: पाठ कॉलम अपनी संपूर्णता में अनुक्रमणिका नहीं हो सकते। जब आप सूचकांक में एक पाठ कॉलम शामिल करते हैं तो आपको लंबाई निर्दिष्ट करनी चाहिए। इसके अलावा VARCHARs> 255 के मामले में VARCHARs को उनकी संपूर्णता में अनुक्रमित नहीं किया जा सकता है क्योंकि सूचकांक आकार पर अधिकतम लंबाई है।
eRadical

2

Varchar ईमेल पतों जैसे छोटे डेटा के लिए है, जबकि टेक्स्ट समाचार लेखों जैसे बड़े डेटा के लिए है, बाइनरी डेटा के लिए Blob जैसे चित्र।

वर्चर का प्रदर्शन अधिक शक्तिशाली है क्योंकि यह पूरी तरह से मेमोरी से चलता है, लेकिन varchar(4000)उदाहरण के लिए डेटा बहुत बड़ा होने पर ऐसा नहीं होगा ।

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

बूँद ज्यादा धीमी होती है इसलिए इसका उपयोग केवल तभी करें जब आपके पास १०००० चित्र जैसा डेटा न हो जिसमें १०००० रिकॉर्ड खर्च होंगे।

अधिकतम गति और प्रदर्शन के लिए इन युक्तियों का पालन करें:

  1. नाम, शीर्षक, ईमेल के लिए varchar का उपयोग करें

  2. बड़े डेटा के लिए पाठ का उपयोग करें

  3. विभिन्न तालिकाओं में अलग पाठ

  4. एक फोन नंबर जैसे आईडी पर बायां सम्मिलित प्रश्नों का उपयोग करें

  5. यदि आप ब्लॉब का उपयोग करने जा रहे हैं तो टेक्स्ट में उसी तरह की युक्तियां लागू करें

इससे डेटा> 10 M के साथ तालिकाओं पर प्रश्नों की लागत मिलिसेकंड हो जाएगी और 10GB तक की गारंटी होगी।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.