2012-07-19 15 views
6

गतिशील पंक्तियों को अंत में स्थानांतरित होने पर डेटा लाने की गति के बीच कोई अंतर है।टेक्स्ट कॉलम को अंत में ले जाया जाना चाहिए?

उदाहरण: int int, int, int int int int int int से बेहतर है?

मेरे लीड ने मुझे इस तथ्य के बारे में सूचित किया है, इंटरनेट से ऐसी कोई जानकारी कैसे प्राप्त नहीं हो रही है? कृपया सहायता कीजिए ?

+0

यदि आप वास्तव में प्रदर्शन अंतर को माप सकते हैं तो मैं * बहुत * सुपरराइज्ड होगा। –

उत्तर

3

यह डेटा संरेखण के कारण है। INT 4 बाइट लेता है, इसलिए 32-बिट (4 बाइट्स के बराबर) प्रोसेसर 4 बाइट अनुक्रमों में डेटा के साथ काम करेगा। डेटा को उस क्रम में खींचने में सक्षम होने के कारण प्रोसेसर के लिए उपयुक्त सूट परिणाम और बेहतर प्रदर्शन का कारण बनेंगे।

संदर्भ: http://en.wikipedia.org/wiki/Data_structure_alignment

अब, यह अक्सर एक संचार चैनल पर डेटा स्थानांतरित (क्योंकि कुछ compilers आम तौर पर कुछ सदस्यों संरेखित 4 बाइट के लिए एक आरक्षित बाइट जोड़कर अपने डेटा संरचना अनुकूलन करेगी पाया एक समस्या है)। हालांकि, MySQL भी NDBCLUSTER इंजनों के साथ खाते में 4-बाइट संरेखण लेता है। इसका मतलब है कि TEXT संरचना को INT मानों के बीच में रखकर, आप आवश्यकतानुसार अधिक डेटा पुनर्प्राप्ति को मजबूर करते हैं।

इस प्रकार

: के रूप में प्रोसेसर तुरंत TEXT के आकार के बारे में चिंता किए बिना 16-बाइट (चार INT) प्राप्त कर सकते हैं

INTINTINTINTTEXT से INTINTTEXTINTINT तेजी से कार्रवाई करेंगे।

http://dev.mysql.com/doc/refman/5.5/en/storage-requirements.html

1

TEXT और BLOB डेटा स्तंभ खुद के रूप में एक ही स्थान में संग्रहीत नहीं हैं:

अधिक जानकारी के लिए MySQL प्रलेखन देखते हैं। वे इस उद्देश्य के लिए आरक्षित एक विशेष क्षेत्र में संग्रहीत हैं।

ये कॉलम हमेशा पुनर्प्राप्त करने के लिए धीमे हैं, लेकिन धीमी गति की मात्रा आपके सिस्टम ट्यूनिंग और डेटा लोड के आधार पर काफी भिन्न होती है। कभी-कभी यह अप्रासंगिक है, और कभी-कभी यह गंभीर थ्रैशिंग में पड़ता है। बस सलाह दीजिये कि TEXT फ़ील्ड पर आपको VARCHAR फ़ील्ड का उपयोग करना चाहिए यदि आप इसे प्रबंधित कर सकते हैं, तो ब्लॉब फ़ील्ड की काफी लंबी लंबाई मुफ्त में नहीं आती है।

कहा जा रहा है कि, TEXT कॉलम पंक्ति में वास्तविक डेटा के सूचक के रूप में संग्रहीत होते हैं जो उन्हें अधिकांश परिस्थितियों में VARCHAR से काफी छोटा बनाता है। यदि आप उन्हें नहीं चुनते हैं, तो वे लोड नहीं होते हैं, और आप अपने डेटा को इकट्ठा करने के लिए आवश्यक अतिरिक्त मांग नहीं करते हैं।

यह सुनिश्चित करने के लिए कि यह MySQL और आपके ट्यूनिंग के आपके संस्करण पर लागू होता है, प्रतिनिधि डेटा से भरे दो बड़े टेबल बनाएं और इसे स्वयं बेंचमार्क करें।

संबंधित मुद्दे