यदि आपके पास मुख्य रूप से MyISAM टेबल हैं, तो आपको बल्क इंसर्ट बफर को बढ़ाना चाहिए । यहाँ MySQL प्रलेखन थोक_insert_buffer_size सेट करने पर क्या कहता है :
MyISAM INSERT के लिए बड़ी मात्रा में ट्री-इन्सर्ट बनाने के लिए एक विशेष ट्री-जैसे कैश का उपयोग करता है ... चयन करें, INSERT ... VALUES (...), ... (...), और LOAD DATA INFILE जब nonempty में डेटा जोड़ते हैं। टेबल। यह चर बाइट ट्री के आकार को प्रति धागे बाइट्स में सीमित करता है। इसे 0 पर सेट करना इस अनुकूलन को अक्षम करता है। डिफ़ॉल्ट मान 8MB है।
दो चीजें हैं जो आपको करने की आवश्यकता है
1) इसे /etc/my.cnf में जोड़ें
[mysqld]
bulk_insert_buffer_size=512M
2) इसके लिए वैश्विक मूल्य निर्धारित करें
SET GLOBAL bulk_insert_buffer_size = 1024 * 1024 * 512;
यदि आपको वैश्विक स्तर पर बल्क_इन्टर_बफ़र_साइज़ सेट करने का विशेषाधिकार नहीं है, तो ऐसा करें
service mysql restart
बेशक, यह InnoDB के लिए नहीं है।
किसी अन्य कोण से, चाहे तालिकाएँ InnoDB या MyISAM हों, यदि अनुक्रमणिकाएँ तालिका से बड़ी हैं, तो आपके पास बहुत अधिक अनुक्रमणिकाएँ हो सकती हैं। मैं आमतौर पर अनुमान लगाता हूं कि एक MyISAM mysqldump को फिर से लोड करना चाहिए जब तक कि mysqldump बनाने के लिए 3 बार नहीं लग जाता। मैं यह भी स्वीकार करता हूं कि जब तक mysqldump बनाने का समय नहीं लगता, तब तक एक InnoDB mysqldump का पुनः लोड करना चाहिए।
यदि आप mysqldump को पुनः लोड करने के लिए 4: 1 अनुपात से अधिक हो रहे हैं, तो आपको निश्चित रूप से दो समस्याओं में से एक है:
- बहुत सारे सूचकांक
- बड़े कॉलमों के कारण इंडेक्स बहुत बड़े होते हैं
आप इसके साथ भंडारण इंजन द्वारा अपने डेटा का आकार माप सकते हैं:
SELECT IFNULL(B.engine,'Total') "Storage Engine",
CONCAT(LPAD(REPLACE(FORMAT(B.DSize/POWER(1024,pw),3),',',''),17,' '),' ',
SUBSTR(' KMGTP',pw+1,1),'B') "Data Size", CONCAT(LPAD(REPLACE(
FORMAT(B.ISize/POWER(1024,pw),3),',',''),17,' '),' ',
SUBSTR(' KMGTP',pw+1,1),'B') "Index Size", CONCAT(LPAD(REPLACE(
FORMAT(B.TSize/POWER(1024,pw),3),',',''),17,' '),' ',
SUBSTR(' KMGTP',pw+1,1),'B') "Table Size" FROM
(SELECT engine,SUM(data_length) DSize,SUM(index_length) ISize,
SUM(data_length+index_length) TSize FROM
information_schema.tables WHERE table_schema NOT IN
('mysql','information_schema','performance_schema') AND
engine IS NOT NULL GROUP BY engine WITH ROLLUP) B,
(SELECT 3 pw) A ORDER BY TSize;
देखें कि क्या इंडेक्स डेटा जितना बड़ा है या बड़ा है
आप इस तरह से बाइनरी लॉगिंग को अक्षम करने पर भी विचार कर सकते हैं:
echo "SET SQL_LOG_BIN=0;" > footable.sql
mysqldump --databases foo >> footable.sql
स्क्रिप्ट को फिर से लोड करने से पहले