में मैं कस्टम उत्पाद के लिए mysql में सम्मिलन गति और प्रदर्शन पैटर्न के बारे में बेहतर समझ प्राप्त करने की कोशिश कर रहा हूं। मेरे पास दो टेबल हैं जिनके लिए मैं नई पंक्तियों को जोड़ता रहता हूं। दो तालिकाओं के रूप में निम्नानुसार परिभाषित कर रहे हैं:तालिका के रूप में प्रविष्टि की गति धीमी है क्योंकि mysql
CREATE TABLE events (
added_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
id BINARY(16) NOT NULL,
body MEDIUMBLOB,
UNIQUE KEY (id)) ENGINE InnoDB;
CREATE TABLE index_fpid (
fpid VARCHAR(255) NOT NULL,
event_id BINARY(16) NOT NULL UNIQUE,
PRIMARY KEY (fpid, event_id)) ENGINE InnoDB;
और मैं दोनों तालिकाओं (प्रत्येक नई वस्तु के लिए, मैं एक लेन-देन दोनों तालिकाओं के लिए प्रासंगिक जानकारी डालने) करने के लिए नई वस्तुओं डालने रहते हैं। सबसे पहले, मुझे लगभग 600 प्रविष्टियां/सेकंड मिलती हैं, लेकिन ~ 30000 पंक्तियों के बाद, मुझे एक महत्वपूर्ण मंदी (लगभग 200 प्रविष्टियां/सेकंड) मिलती है, और फिर एक धीमी, लेकिन फिर भी ध्यान देने योग्य मंदी होती है।
मैं देख सकता हूं कि तालिका बढ़ने के साथ ही, आईओ प्रतीक्षा संख्या उच्च और उच्च हो जाती है। मेरा पहला विचार इंडेक्स द्वारा लिया गया स्मृति था, लेकिन वे एक वीएम पर किए जाते हैं जिसमें 768 एमबी है, और अकेले इस कार्य को समर्पित है (स्मृति का 2/3 उपयोग नहीं किया जाता है)। इसके अलावा, मुझे 30000 पंक्तियों को इतनी मेमोरी लेने में कठिनाई होती है, और भी अधिक सूचकांक (पूरे mysql डेटा dir < 100 एमबी वैसे भी)। इसकी पुष्टि करने के लिए, मैंने वीएम (64 एमबी) को बहुत कम स्मृति आवंटित की, और मंदी पैटर्न लगभग समान है (यानी मंदी की समान संख्या के बाद मंदी दिखाई देती है), इसलिए मुझे कुछ कॉन्फ़िगरेशन समस्याएं संदेह हैं, खासकर जब से मैं अपेक्षाकृत नया हूं डेटाबेस।
मैं एक आत्म निहित अजगर स्क्रिप्ट जो मुद्दा reproduces, कि मैं उपलब्ध करा सकते हैं कि अगर मददगार है है:
पैटर्न के रूप में निम्नानुसार लग रहा है।
विन्यास:
- उबंटू 10.04, 32 बिट केवीएम पर चल रहा है, 760 एमबी यह करने के लिए आवंटित।
- Mysql 5.1, टेबल के लिए अलग-अलग फ़ाइलों के साथ बॉक्स विन्यास से बाहर
[संपादित करें]
आप एरिक Holmberg करने के लिए बहुत-बहुत धन्यवाद, वह इसे किसी न किसी। Innodb_buffer_pool_size को उचित मान पर ठीक करने के बाद ग्राफ़ यहां दिए गए हैं:
समस्या, वर्चुअल या अन्यथा लिखने की क्षमता। –
मुझे यकीन नहीं है कि मैं समझता हूं कि आपका क्या मतलब है: मैं समझता हूं कि डिस्क पर लिखने में समय लगता है, लेकिन यह धीमा होने की व्याख्या नहीं करता है क्योंकि तालिका बढ़ती है। –