आपको निश्चित रूप से इंजन के प्रकार के आधार पर अपना दृष्टिकोण चुनना होगा... ऑप्टिमाइज़ करना MyISAM के लिए या InnoDB के लिए ।
हमने हाल ही में डेटा डालने के विभिन्न तरीकों की तुलना करते हुए एक बेंचमार्क चलाया और सम्मिलन से पहले और सभी सूचकांक पूरी तरह से बहाल होने तक के समय को मापा। यह एक खाली टेबल पर था, लेकिन हमने 10 मिलियन पंक्तियों तक का उपयोग किया।
MyISAM LOAD DATA INFILE
. के साथ और ALTER TABLE ... ENABLE/DISABLE KEYS
हमारे परीक्षण में जीत हासिल की (विंडोज 7 सिस्टम पर, MySQL 5.5.27 - अब हम इसे लिनक्स सिस्टम पर आजमा रहे हैं)।
सक्षम और अक्षम कुंजियाँ InnoDB के लिए काम नहीं करती हैं, यह केवल MyISAM है। InnoDB के लिए, SET AUTOCOMMIT = 0; SET FOREIGN_KEY_CHECKS = 0; SET UNIQUE_CHECKS = 0;
यदि आप सुनिश्चित हैं कि आपके डेटा में डुप्लीकेट नहीं हैं (उन्हें 1
पर सेट करना न भूलें अपलोड पूर्ण होने के बाद)।
मुझे नहीं लगता कि आपको OPTIMIZE TABLE
need की आवश्यकता है बल्क इंसर्ट के बाद - MySQL पंक्तियों को इंसर्शन द्वारा ऑर्डर किया जाता है और इंडेक्स को फिर से बनाया जाता है। बल्क इंसर्ट करने से कोई "अतिरिक्त विखंडन" नहीं होता है।
अगर मैंने तथ्यात्मक त्रुटियां की हैं तो बेझिझक टिप्पणी करें।
अद्यतन करें: हमारे हाल के और पूर्ण परीक्षण परिणामों के अनुसार, DISABLE / ENABLE कुंजियों की सलाह गलत है।
एक सहकर्मी के पास एक प्रोग्राम था जिसमें कई अलग-अलग परीक्षण चलाए गए थे - एक टेबल जिसमें 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) के साथ इसका परीक्षण किया (हालांकि दोनों ओएस पर समान संस्करण नहीं)। MyISAM तभी जीता जब टेबल खाली थी। InnoDB तेज़ था जब डेटा पहले से मौजूद था और आम तौर पर बेहतर प्रदर्शन करता था (HDD-space को छोड़कर - MyISAM डिस्क पर छोटा होता है)।
फिर भी, इसका वास्तव में लाभ उठाने के लिए, आपको इसे स्वयं परीक्षण करना होगा - विभिन्न संस्करणों, विभिन्न कॉन्फ़िगरेशन सेटिंग्स और बहुत धैर्य के साथ - विशेष रूप से अजीब विसंगतियों के संबंध में (5.0.97 एक ही कॉन्फ़िगरेशन के साथ 5.5.27 से बहुत तेज था - हम 'अभी भी कारण खोज रहे हैं)। हमने जो पाया वह था वह DISABLE KEYS
और ENABLE KEYS
यदि आप खाली टेबल से शुरुआत नहीं करते हैं तो वे बेकार और कभी-कभी हानिकारक होते हैं।