2012-06-12 21 views
5

मुझे MySQL डेटाबेस में प्रति सेकंड लगभग 5 बार के लिए बहुत सारे डेटा लिखना है। सबसे तेज़ तरीका क्या है: प्रत्येक 1/5 सेकेंड डालें या कतार बनाएं और प्रत्येक ~ 5 सेकंड में सभी संग्रहीत डेटा डालें? यदि दूसरा तरीका बेहतर है - क्या 1 पंक्तियों में 1 पंक्तियों का उपयोग करके 1 तालिका में डालना संभव है?डेटाबेस में सम्मिलन

उत्तर

2

सम्मिलन की आवृत्ति इसके बेहतर को ध्यान में रखते हुए दूसरे दृष्टिकोण के साथ जाना जो कतार में है और एक बार में जोड़ने से।

लेकिन आप इन स्थितियों पहले विचार करना चाहिए:

  1. आपके सिस्टम रीयल टाइम है।? हां तो अधिकतम देरी क्या है जिसे आप बर्दाश्त कर सकते हैं (क्योंकि अगले प्रविष्टि के लिए ~ 5 सेकंड लगेंगे और डेटा जारी/उपलब्ध होगा)?

  2. डेटा में आने के लिए गलत मूल्य/त्रुटियों की संभावना क्या है, जैसे कि एक डेटा गलत है, यदि क्वेरी विफल हो जाती है तो आप बाकी सभी को खो देंगे।

+0

हाँ, प्रणाली वास्तविक समय है। डेटा ~ 100 बाइट डेटा के साथ एक साधारण बेस 64 है। – Ockonal

+2

यदि ऐसा है तो मैं एकल प्रविष्टि के साथ, और डीएओ परत पर कनेक्शन पूलिंग के साथ जाऊंगा। क्योंकि आप आरटीएस में डेटा खोने के लिए भी बर्दाश्त नहीं कर सकते हैं, साथ ही समय भी महत्वपूर्ण है। उम्मीद है कि यह आपकी मदद की। :) –

+0

मदद के लिए धन्यवाद;) – Ockonal

2

innodb_buffer_pool_instances के साथ कई बफर पूल का उपयोग करना। यह कोर परमाणुओं की संख्या पर निर्भर कर सकता है। तालिका के Partitioning का उपयोग करें।
आप सामूहिक रूप से XML का उपयोग कर डेटा डाल सकते हैं।

1

आप कुछ इस तरह witho सभी डेटा के साथ एक डालने कर सकते हैं: प्रत्येक लेन-देन एक निश्चित मूल्य के साथ आता है

INSERT INTO table (field1, field2,... , fieldN) 
VALUES 
(value1_1', value1_2,... , value1_N), 
(value2_1', value2_2,... , value2_N), 
... 
(valueM_1', valueM_2,... , valueM_N); 
2

के रूप में, मैं कहना चाहता हूँ कि एक कर बहु ​​लाइन हर कुछ सेकंड सम्मिलित बेहतर है । कुछ प्रणालियों के साथ हम काम पर उपयोग करते हैं, हम उन्हें एक ही बार में डालने से पहले सैकड़ों लाइनों को कैश करते हैं।

से MySQL documentation आप एक बहु लाइन इतनी तरह सम्मिलित कर सकते हैं:

INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9); 
1

मेरा अनुभव है कि यह बैचों के साथ काम करने के लिए तेजी से होता है जब एक MySQL डेटाबेस में डेटा डालने है।

तो धीमी विकल्प को क्रियान्वित कर रहा है कई डालने वाली खोज:

 

    INSERT INTO my_table VALUES (1, "a"); 
    INSERT INTO my_table VALUES (2, "b"); 

तेजी विकल्प होगा:

 

    INSERT INTO my_table VALUES (1, "a"), (2, "b"); 

संबंधित मुद्दे