2012-10-09 4 views
11

के लिए SQLite डेटाबेस के लिए प्रदर्शन में सुधार कैसे करें Stackoverflow पर इस विषय से संबंधित कुछ प्रश्न हैं, लेकिन मुझे उचित उत्तर नहीं मिला। मुझे फ्लैट फाइलों के प्रदर्शन पर कुछ संदेह हैं, क्या SQLite के बजाय फ्लैट फाइलों का उपयोग करना बेहतर है?एंड्रॉइड

मैंने एंड्रॉइड SQLite के लिए प्रदर्शन आंकड़े लिया।

मैं जो 21 कॉलम

किसी को भी सुझाव है कि कैसे इस प्रविष्टि के समय को कम करने के लिए कृपया है एक मेज के लिए प्रदर्शन आँकड़े है।

Records Write time in ms Read time in ms 
1000  67813     608 
1000  66340     604 
1000  64359     609 
10000  679837     5159 
10000  618062     5110 
10000  644638     5729 
10000  646878     5890 

Flat file कम समय के बजाय SQLite

तो किसी को भी मुझे सुझाव है कि कृपया मैं कैसे SQLite के लिए इस समय में सुधार कर सकते हैं।

मैं सरल database open insert using ContentValues और डेटाबेस बंद कर रहा हूं।

कृपया मुझे कुछ आंकड़े बताएं कि इन आंकड़ों को कैसे सुधारें।

नीचे दिए गए उत्तर का उपयोग करने के बाद अद्यतन प्रदर्शन आंकड़े। जब भी मैं इन प्रदर्शनों को बढ़ाना चाहता हूं।

Records Writetime in ms   Readtime in ms 
1000  1645      530   
1000  2497      672   
1000  3143      610   
10000  16356      5243   
10000  14006      5122   
10000  13158      5002   
10000  14828      5234   
100000  125525     77622 

धन्यवाद

+1

अगर आप प्रविष्टि समय अनुकूलित करना चाहते हैं आप अपनी प्रविष्टि कोड पोस्ट करना चाहिए। – keyser

+0

फ्लैट फ़ाइल और SQLite के मन में अलग-अलग लक्ष्य हैं, एक थोक पुनर्प्राप्ति के साथ भंडारण है, SQLite तेजी से पुनर्प्राप्ति (अधिकांश मामलों में टेक्स्ट फ़ाइल से तेज़) के लिए है – dvhh

+0

बड़े प्रविष्टियों के लिए लेनदेन का उपयोग – njzk2

उत्तर

15

मेरा मानना ​​है कि आप एक पाश का उपयोग कर 1000 या 10000 डालने कर रहे हैं। ट्रांज़ेक्शन का उपयोग करें, यह नाटकीय रूप से लिखने के समय को कम करेगा। मुझे पहले से ही इस तरह का एक मुद्दा सामने आया है और यह मेरे मामले में लगभग 30 सेकंड से 1 सेकंड से कम समय तक लिखने का समय कम कर देता है।

this पर एक नज़र डालें।

असल में, आप क्या करना चाहिए:

db.beginTransaction(); 
try{ 
    for(int i = 0 ; i < LENGTH ; i++) { 
     // execute SQL 
    } 
    db.setTransactionSuccessful(); // marks a commit 
    } 
finally{ 
    db.endTransaction(); 
} 
+0

ओह वास्तव में बहुत बहुत धन्यवाद मुझे –

+0

कोशिश करें जहां मुझे यहां सम्मिलित क्वेरी का उपयोग करना है? –

+0

यहां मुझे डेटाबेस खोलने और मेरे कोड में बंद डेटाबेस की आवश्यकता नहीं है? –