आपको निश्चित रूप से इंजन प्रकार के आधार पर अपना दृष्टिकोण चुनना है ... for MyISAM या for InnoDB अनुकूलित करना।
हमने हाल ही में डेटा सम्मिलित करने के लिए विभिन्न तरीकों की तुलना में एक बेंचमार्क चलाया और सम्मिलन से पहले समय माप लिया और जब तक सभी सूचकांक पूरी तरह से बहाल नहीं हो जाते। यह एक खाली टेबल पर था, लेकिन हमने 10 मिलियन पंक्तियों का उपयोग किया।
LOAD DATA INFILE
और ALTER TABLE ... ENABLE/DISABLE KEYS
के साथ MyISAM हमारे परीक्षण में (विंडोज 7 सिस्टम, MySQL 5.5.27 पर - अब हम एक लिनक्स सिस्टम पर कोशिश कर रहे हैं) में हाथ मिलाया।
सक्षम और अक्षम कुंजी InnoDB के लिए काम नहीं करती है, यह केवल MyISAM है। InnoDB के लिए, SET AUTOCOMMIT = 0; SET FOREIGN_KEY_CHECKS = 0; SET UNIQUE_CHECKS = 0;
का उपयोग करें यदि आप सुनिश्चित हैं कि आपके डेटा में डुप्लिकेट नहीं हैं (अपलोड पूर्ण होने के बाद उन्हें 1
पर सेट करना न भूलें)।
मुझे नहीं लगता कि आपको थोक प्रविष्टि के बाद OPTIMIZE TABLE
की आवश्यकता है - MySQL पंक्तियों को प्रविष्टि द्वारा आदेश दिया जाता है और सूचकांक को फिर भी बनाया जाता है। थोक डालने से कोई "अतिरिक्त विखंडन" नहीं होता है।
अगर मैंने तथ्यात्मक त्रुटियां की हैं तो टिप्पणी करने के लिए स्वतंत्र महसूस करें।
अद्यतन: हमारे हालिया और पूर्ण परीक्षण परिणामों के अनुसार, अक्षम/सक्षम कुंजी की सलाह गलत है।
एक सहकर्मी एक कार्यक्रम सी अलग-अलग परीक्षण चला था - InnoDB/MyISAM पहले से भरे हुए और खाली, चयन और सम्मिलन के साथ एक मेज, LOAD DATA LOCAL
, INSERT INTO
, REPLACE INTO
और UPDATE
साथ गति "घने" और "खंडित" टेबल पर (मैं कर रहा हूँ बिल्कुल यकीन नहीं है कि, मुझे लगता है कि यह DELETE FROM ... ORDER BY RAND() LIMIT ...
के साथ एक निश्चित बीज के साथ था, इसलिए यह अभी भी तुलनीय है) और सक्षम और डायजेक्टेड इंडेक्स।
हमने विंडोज और लिनक्स पर कई अलग-अलग MySQL संस्करणों (5.0.27, 5.0.96, 5.1.something, 5.5.27, 5.6.2) के साथ इसका परीक्षण किया (हालांकि ओएस दोनों पर समान संस्करण नहीं)। माईसाम केवल तभी जीता जब टेबल खाली था। इनओडीबी तेज था जब डेटा पहले से मौजूद था और आम तौर पर बेहतर प्रदर्शन किया जाता था (एचडीडी-स्पेस को छोड़कर - माईसाम डिस्क पर छोटा है)।
फिर भी, इससे वास्तव में लाभ उठाने के लिए, आपको इसे स्वयं परीक्षण करना होगा - विभिन्न संस्करणों, विभिन्न कॉन्फ़िगरेशन सेटिंग्स और बहुत धैर्य के साथ - विशेष रूप से अजीब असंगतताओं के बारे में (5.0.97 5.5.27 से बहुत तेज था एक ही कॉन्फ़िगरेशन - हम अभी भी कारण खोज रहे हैं)। हमने जो पाया वह था DISABLE KEYS
और ENABLE KEYS
बेकार और कभी-कभी हानिकारक के बगल में हैं यदि आप खाली तालिका से शुरू नहीं करते हैं।
क्या आप निश्चित हैं कि कुंजी अपडेट एक बाधा है? – abcde123483
यह मेरी चिंता है और यहां कोई भी चिंता है http://forums.mysql.com/read.php?21,68820,68939#msg-68939 – Mellon
वैसे भी, उन इंडेक्स को फिर से सक्षम करने के बाद बनाया जाएगा । पंक्ति/पंक्ति के बजाए एक थोक डालने का प्रयास करें और अपडेट आंकड़े भी करें और देखें कि इससे कुछ भी सुधारता है या नहीं। – Rahul