उत्पादन सर्वर पर SQLite? [बन्द है]


9

मैं लंबे समय से SQLite के बारे में जानता हूं और मुझे पता है कि यह तेजी से धधक रहा है, लेकिन मैंने इसे कभी भी उत्पादन सर्वर में नहीं आजमाया है। मैं कभी भी इस बात का ठोस अनुमान लगाने में सक्षम नहीं था कि असफल होने से पहले यह कितना यातायात संभाल सकता है।

क्या किसी के पास इस पर कोई संख्या या एक लेख है?


2
चेतावनी: प्रश्न और कुछ उत्तर में गलत धारणाएं, गलतफहमी और पुरानी जानकारी शामिल है!
क्रिस एस

हम उत्पादन में कैशिंग समाधान के रूप में SQLite का मूल्यांकन कर रहे हैं: uri.agassi.co.il/2014/10/using-sqlite-for-production.html
उड़ी अगस्सी

जवाबों:


4

दुर्भाग्य से, मुझे लोड क्षमताओं के बारे में आपके लिए कोई आंकड़ा नहीं मिला है, लेकिन कुछ प्रदर्शन-प्रतिबंधित कारकों के बारे में कुछ टिप्पणियां:

  • SQLite की गति उस डिस्क की गति से प्रभावित होती है जो उस पर होती है और चाहे वहाँ बहुत सारे आवेषण / अपडेट चल रहे हों (जैसे कि पहुंच लिखें)। डिस्क-स्पिन गति द्वारा राइट-लॉक सीमित है

  • लेन-देन डिफ़ॉल्ट रूप से शुरू किया जाता है, लेकिन यदि आप लेनदेन शुरू करते हैं और करते हैं तो आपको बेहतर प्रदर्शन मिलता है । प्रोग्रामेटिक रूप से लेन-देन करते समय मेरे पास बहुत तेज़ द्रव्यमान आवेषण थे

  • यदि आप आम तौर पर केवल डेटा पढ़ रहे हैं तो आपको मेरे अनुभव में अच्छा प्रदर्शन मिलेगा। इसलिए, SQLite को डेटाबेस सर्वर रीड्स, पार्टिसिलरी रिमोट वाले या जटिल प्रश्नों को स्टोर करने के लिए एक कैशिंग सिस्टम के रूप में उपयोग किया जा सकता है।

  • यह डेटाबेस सर्वर की तुलना में कम संसाधनों का उपयोग करता है, इसलिए यह वेब सर्वर और एप्लिकेशन कोड के लिए अधिक संसाधनों को मुक्त करने के रूप में साइट के प्रदर्शन को प्रभावित कर सकता है

  • यदि आपको समवर्ती लिखने के लिए कई प्रकार की आवश्यकता होती है, तो एक डेटाबेस सर्वर (जैसे MySQL, Postgres) अच्छी तरह से आपकी सेवा कर सकता है

जैसा कि देव्रीम ने कहा, SQLite साइट में लगभग 100k उपयोगकर्ता / दिन ठीक हैं। Trac प्रणाली को लिखने की आवश्यकता होती है, इसलिए उस स्थिति में प्रदर्शन शायद धीमा होगा


प्रतिक्रिया के लिए धन्यवाद, इसलिए मूल रूप से आप केवल एक समय में डेटाबेस 1 को लिख सकते हैं? लेकिन आप अभी भी उत्परिवर्ती लोगों को बिना लॉक किए डेटाबेस से पढ़ सकते हैं? यदि हां, तो मैंने कैशिंग सिस्टम के लिए कुछ विचार प्राप्त किए हैं।
डॉ। हाइड्रैलिस्क

"100K" संख्या जो चारों ओर फेंकी गई है, बेकार है। डॉक्स में लिखा है "आम तौर पर बोलना, कोई भी साइट जो 100K हिट / दिन से कम हो जाती है, उसे SQLite के साथ ठीक काम करना चाहिए।" एक "हिट" को आमतौर पर HTTP अनुरोध के रूप में परिभाषित किया जाता है। इसमें हर .js, .cs और हिट पर छवि के लिए एक अनुरोध शामिल है। DB प्रदर्शन के साथ इसका क्या करना है? लेखकों की मानें तो "पेजव्यू" का मतलब अभी भी बेकार है। प्रति पृष्ठ कितने प्रश्न हैं? लिखने के लिए पढ़ता का अनुपात? DB किस तरह के हार्डवेयर पर चल रहा है? वेबसाइट के लिए SQLite का उपयोग करना एक अच्छा विचार नहीं है जब नौकरी के लिए कम से कम एक दर्जन अन्य बेहतर उपकरण हों।
जमुई

@ डीआर हाइड्रैलिस्क हाँ, रीड समानांतर में हो सकता है .. बस एक फ़ाइल की तरह
Cez

@jamieb "हिट" के बारे में बिंदु एक उचित है। किसी ने भी उल्लेख नहीं किया है कि हार्डवेयर या सर्वर संसाधन क्या उपलब्ध हैं, लेकिन यह उन सभी के लिए एक छोटा वर्चुअल सर्वर हो सकता है जिन्हें हम जानते हैं। केवल पढ़ने के लिए एक कैशिंग प्रणाली में SQLite डेटाबेस से जुड़े, या मुख्यतः टेबल कर सकते हैं प्रदर्शन लाभ देने के लिए, विशेष रूप से जब डेटाबेस सर्वर एक दूरस्थ से एक है। मेमोरी कैश + डेटाबेस प्रश्नों का SQLite कैश अकेले डेटाबेस क्वेरी से पैंट को हरा देगा।
सेज

3

इन अच्छे उत्तरों को जोड़ने के लिए मेरे पास कुछ बिंदु हैं।

SQLite के वर्तमान संस्करण में वाल (राइट-अहेड लॉगिंग) है, ताकि पढ़ना और लिखना समवर्ती रूप से आगे बढ़ सके। इसलिए पिछले उत्तरों में उल्लिखित पारंपरिक एकल लेखक सीमा अब मौजूद नहीं है। मैंने अभी तक उत्पादन में वाल नहीं देखा है इसलिए मैं यह नहीं कह सकता कि यह कितना अच्छा है।

वाल का उपयोग करना या न करना, यदि आपका SQLite डेटाबेस केवल पढ़ा जाता है (या बैच अपडेट किया गया है) और यह RAM में फिट बैठता है (आपके ओएस में इसे बफ़र्स में रखने के लिए पर्याप्त स्पेयर रैम है) यह एक प्रोडक्शन वेब एप्लिकेशन पर बहुत अच्छी तरह से स्केल कर सकता है। मैं व्यक्तिगत रूप से इसके प्रदर्शन, स्केलेबिलिटी और मजबूती के बारे में बहुत उलझन में था, लेकिन अब उत्पादन में नौ महीने के बाद यह सिस्टम के सबसे जटिल हिस्सों को भी अच्छी तरह से चलाने के लिए साबित हुआ है ।


1

Sqlite अनुप्रयोगों में एम्बेड करने के लिए बहुत अच्छा है, और यह वही है जो इसके लिए डिज़ाइन किया गया है, लेकिन यह निश्चित रूप से "धधकते हुए तेज" नहीं है। मैं इसे अपने स्वयं के कई अनुप्रयोगों के लिए उपयोग करता हूं, विशुद्ध रूप से केवल दो फ़ाइलों की सुविधा के लिए जिसे पूरी तरह से एप्लिकेशन देने के लिए किसी अन्य मशीन पर कॉपी किया जा सकता है। MySQL के खिलाफ टेस्ट, एक ही संरचना, अनुक्रमित, आदि का उपयोग करते हुए, स्क्लाइट को छोटे डेटाबेस के लिए, यहां तक ​​कि काफी धीमा होना दिखाता है। मुझे उम्मीद है कि प्रदर्शन का अंतर बढ़ने की संभावना है क्योंकि डेटाबेस का आकार बढ़ता है, हालांकि मैं कुछ के लिए नहीं कह सकता क्योंकि मैंने केवल 100 एमबी से कम के डेटाबेस के साथ इसका उपयोग किया है।


PRAGMA को संभावित रूप से कभी-कभी डेटाबेस को दूषित करने (हालांकि डेटा खोना नहीं) की कीमत पर बढ़े हुए प्रदर्शन के लिए समायोजित किया जा सकता है। मेरे अनुभव में, मैं एक पुरानी WindowsXP मशीन पर लगभग 250-300rps पर आवेषण लेने के लिए SQLite प्राप्त कर सकता था।
djangofan

-1, क्योंकि मैं सहमत नहीं हूँ। मैंने साइज़ में कई GB के SQLite डेटाबेस का निर्माण किया है और उसे क्वियर किया है और उदाहरण के लिए (इसी प्रकार के हार्डवेयर में) MySQL का उपयोग करके मुझे कभी भी प्रति सेकंड समान प्रश्नों की मात्रा नहीं मिलेगी। अगर आप सही तरीके से मालिश करना जानते हैं तो SQLite प्रति सेकंड 120k राइट्स आसानी से लिख सकता है।
एलिक्स एक्सल

0

मुझे लगता है कि sqlite केवल एक पाठ / xml फ़ाइल से तेज है (यदि आपने इसे आज़माया तो आप आश्चर्यचकित हो सकते हैं)। और यह समवर्ती का समर्थन नहीं करता है, अगर आप इंट्रानेट के लिए एक साइट बनाना चाहते हैं, जहां लोग अपने काम के घंटों को पंजीकृत करते हैं या ट्रेक टिकटिंग का उपयोग करते हैं तो यह अच्छी तरह से काम कर सकता है। इसके अलावा इसे टालना चाहिए और इसे mysql या couchdb से बदल देना चाहिए।

sqlite वेबसाइट का कहना है कि 100k उपयोगकर्ता / दिन ठीक होना चाहिए, लेकिन मुझे इसमें बहुत संदेह है, क्योंकि एक साधारण trac प्रोजेक्ट 10 ppl कार्यालय उपयोग के साथ बहुत अधिक अटक जाता है।


0

Sqlite एक पारंपरिक ग्राहक / सर्वर DB अनुप्रयोग नहीं है। यह अनिवार्य रूप से एक पुस्तकालय है जो किसी अन्य अनुप्रयोग के भीतर एम्बेडेड है। यह एकल-उपयोगकर्ता डेस्कटॉप अनुप्रयोगों के लिए डिज़ाइन किया गया है। आप बिल्कुल इसे बहु-स्तरीय एनवायरमेंट में किसी प्रकार के स्टैंडअलोन MySQL / PostgreSQL / MS-SQL रिप्लेसमेंट के रूप में उपयोग करने का प्रयास नहीं करना चाहते हैं क्योंकि संपूर्ण DB लेखन पर लॉक है। आप एक हल्के लोड पर भी विवाद के मुद्दों से निपटेंगे जो प्रदर्शन को नष्ट कर देगा।


वाल में, केवल समवर्ती लेखक अवरुद्ध हैं। इसके अलावा डिफ़ॉल्ट MySQL इंजन (MyISAM) भी ​​पूर्ण तालिकाओं को बंद कर देता है जब भी कोई लेखन क्वेरी होती है।
एलिक्स एक्सल

1
@AlixAxel यह उत्तर वाल उपलब्ध होने के छह महीने पहले लिखा गया था।
जेमी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.