2011-05-23 8 views
10

मैं mysqldump के साथ बनाया InnoDB टेबल के एक 8GB MySQL डाटाबेस डंप मिल गया है लगता है। मैं डेटा आयात करता हूं:आयात एक लंबे समय

mysql -uroot -p my_db < dump.sql 

डीबी का 5 जीबी डंप एक घंटे के भीतर आयात किया गया था। 8 जीबी डंप में 50 घंटे लगते हैं और गिनती होती है। जब मैंने

शो प्रोसेसलिस्ट के साथ प्रक्रिया सूची का निरीक्षण किया;

अधिकांश समय वहाँ " 'को मुक्त कराने के आइटम"

वहाँ एक रास्ता है, कच्चे फाइलों को कॉपी करने के अलावा है, आयात प्रक्रिया में तेजी लाने के लिए राज्य के साथ एक एकल सम्मिलित करें क्वेरी दिखाई दे रही थी?

उत्तर

11

चाल वास्तव में, यह सुनिश्चित करें कि सबसे बड़ी एकल तालिका InnoDB बफर पूल में फिट बैठता है। यदि ऐसा नहीं होता है, तो सम्मिलित करें (और पाठ्यक्रम का आयात) बेहद धीमा होगा।

यह पूरी डेटाबेस का आकार, लेकिन सबसे बड़ा एकल तालिका फर्क नहीं पड़ता।

काफी बड़ा डेटाबेस के लिए, आप इस तरह के फाइल सिस्टम स्नैपशॉट के रूप में डेटाबेस स्थानांतरित के वैकल्पिक तरीकों पर विचार कर सकते हैं। यह निश्चित रूप से सर्वोत्तम काम करता है यदि आपकी मशीन डेटाबेस, ओएस और आर्किटेक्चर का एक ही संस्करण चला रही है।

+0

[उस विषय पर कुछ बहुत उपयोगी पठन] (http://dba.stackexchange.com/a/27341/94577) –

6

मशीन कितना स्मृति है? मेरा पहला अनुमान यह होगा कि मशीन में 6 जीबी या 8 जीबी मेमोरी है, और MySQL पहले डंप को पूरी तरह से स्मृति में रखने में सक्षम था लेकिन किसी भी तरह से दूसरे आयात पर हार्ड-कोर को स्वैप कर रहा है। क्या आप आयात करते समय कुछ पुनरावृत्तियों के लिए vmstat 5 चला सकते हैं और देख सकते हैं कि सिस्टम कितना भारी है?

+0

इसमें 8 जीबी है। उपलब्ध मेम डरने के बाद मैं आयात को फिर से चलाऊंगा और vmstat संख्याओं की रिपोर्ट करूंगा। –

+0

दिमाग में आने वाली एकमात्र अन्य चीज डंप पर इंडेक्स को अक्षम करना है, फिर तालिका में डेटा के बाद उन्हें जोड़ें। Mysqldump दस्तावेज़ीकरण से: http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html - अक्षम करने योग्य-कुंजी, -के प्रत्येक तालिका के लिए, INSERT कथन को/* 40000 के साथ घेरे वैकल्पिक तालिका tbl_name अक्षम कुंजी * /; और/*! 40000 वैकल्पिक तालिका tbl_name सक्षम कुंजी * /; बयान। यह डंप फ़ाइल को तेज़ी से लोड करता है क्योंकि सभी पंक्तियां डालने के बाद इंडेक्स बनाए जाते हैं। यह विकल्प केवल MyISAM तालिकाओं के nonunique अनुक्रमणिका के लिए प्रभावी है। – opsguy

+0

सभी टेबल InnoDb –