2010-12-05 13 views
7

मुझे फ़ाइल सर्वर पर रखी गई फ़ाइल में एकल पंक्तियां लिखने की आवश्यकता है। मैं यह सुनिश्चित करने के लिए SQLite का उपयोग करने पर विचार कर रहा हूं कि लाइन का लेखन सफल रहा और न केवल आंशिक रूप से पूरा हुआ। हालांकि, जैसा कि सम्मिलन प्रदर्शन वास्तव में आवश्यक है। मेरा सवाल यह है कि, सटीक प्रक्रिया क्या है (जैसा कि इसे पढ़ा जाता है, इसे लिखें, इसे पढ़ें और इसी तरह) कि SQLite किसी तालिका में पंक्ति डालने पर जाता है। तालिका में कोई अनुक्रमणिका नहीं है, न ही प्राथमिक कुंजी, बाधाएं या कुछ भी। http://www.sqlite.org/lang_explain.htmlSQLite सम्मिलित प्रदर्शन

उत्तर

14

यह मेरा अनुभव में सबसे आम टोंटी है:

इसके अलावा, ठीक से दो महत्वपूर्ण pragmas सेट करना सुनिश्चित करें

http://www.sqlite.org/faq.html#q19

इसके अलावा, SQLite वास्तव में तेज़ है। :)

+0

क्या आपको पता है कि डिस्क रेखा को कितने राउंड में जोड़ना होगा एक पंक्ति? – David

+0

यह INSERTed डेटा की मात्रा पर निर्भर करता है, लेकिन अधिकांश मामलों में यह * कम से कम * एक क्रांति है (जब तक कि आप लेनदेन में न हों, क्योंकि यह ज्यादातर स्मृति आधारित है)। उसके बाद * COMMIT * को कम से कम एक रोटेशन की भी आवश्यकता होगी। – BastiBen

+0

बढ़िया! यह मेरे कोड 90 बार – Pavel

0

आप जानकारी के लिए समझाने क्या होता है जब आप एक बयान पर अमल कर सकते हैं। कुछ बेंचमार्क के लिए here देखें।

+0

लेकिन आम तौर पर समझाया जाता है कि प्रत्येक पढ़ने और लिखने के लिए पर्याप्त रूप से विस्तृत नहीं किया जाता है। यह सिर्फ बताता है कि एक सूचकांक का उपयोग किया गया था आदि – David

10

आप लेन-देन का उपयोग करना चाहिए और इस तरह हर INSERT पर आईएनजी fsync() से बचने की कोशिश:

+0

आपके उत्तर ने मुझे मेरी समस्या में बहुत मदद की। Ty – ILya

+0

धन्यवाद। थोक आयात की शुरुआत में इस आदेश को निष्पादित करने से मुझे बड़ी गति में वृद्धि हुई: 'PRAGMA सिंक्रोनस = 0' –

+0

यह दस लाख बार :) – alessioalex

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