سؤال

لقد قرأت مؤخرا عن هذا السؤال سكليتي مقابل الخلية والجواب وأشار إلى أن سكليتي لا مقياس جيد و الموقع الرسمي نوع من يؤكد هذا, ومع ذلك.

كيف للتحجيم هو SQLite و ما هي العليا معظم حدود ؟

هل كانت مفيدة؟

المحلول

أمس أصدرت موقع صغير* على المسار الخاص بك rep التي تستخدم مشتركة قاعدة بيانات SQLite لجميع الزوار.للأسف حتى مع متواضعة الحمل الذي وضع على بلدي المضيف ركض ببطء شديد.وهذا لأن قاعدة البيانات بأكملها تم تأمين كل مرة شخص ما ينظر إلى الصفحة لأنه يتضمن تحديثات/إدراج.سرعان ما تحولت إلى الخلية في حين لم يكن لدي الكثير من الوقت لاختبار ذلك ، يبدو أكثر من ذلك بكثير قابلة من سكليتي.أنا فقط أتذكر الصفحة بطيئة في بعض الأحيان الحصول على تأمين قاعدة البيانات خطأ عند محاولة تنفيذ استعلامات من قذيفة في sqlite.وقال أن أنا على التوالي موقع آخر من SQLite على ما يرام.الفرق هو أن الموقع هو ثابت (أيأنا الوحيدة التي يمكن أن تغير قواعد البيانات) و لذلك يعمل على ما يرام بالنسبة المتزامنة يقرأ.المغزى من القصة:فقط استخدام سكليتي للمواقع حيث تحديثات قاعدة البيانات يحدث نادرا (أقل في كثير من الأحيان من كل صفحة تحميل).

تحرير:أنا فقط أدركت أنني قد لا يكون عادلا SQLite - لم أكن مؤشر أي الأعمدة في قاعدة بيانات SQLite عندما كنت في خدمته من صفحة ويب.هذا جزئيا تسبب التباطؤ كنت تعاني.ومع ذلك ، فإن مراقبة قاعدة البيانات تأمين المدرجات - إذا كان لديك لا سيما الشاقة التحديثات, سكليتي الأداء لا تتطابق الخلية أو بوستجرس.

آخر تحرير: منذ أن نشر هذا تقريبا قبل 3 أشهر كان لدي فرصة دراسة عن كثب قابلية سكليتي ، مع عدد قليل من الحيل يمكن أن تكون قابلة للتطوير.كما ذكرت في أول تعديل ، قاعدة بيانات مؤشرات الحد بشكل كبير من الاستعلام الوقت ، ولكن هذا هو أكثر من ملاحظة عامة عن قواعد البيانات مما هو عليه عن سكليتي.ومع ذلك ، هناك حيلة أخرى يمكنك استخدامها لتسريع SQLite: المعاملات.كلما عليك فعله قاعدة بيانات متعددة يكتب ، ووضعها داخل الصفقة.بدلا من كتابة (وقفل) الملف في كل مرة كتابة الاستعلام أصدرت الكتابة لن يحدث إلا مرة واحدة عند إكمال المعاملة.

الموقع الذي ذكرت صدر في الفقرة الأولى قد تحولت مرة أخرى إلى سكليتي, وانها تعمل بشكل سلس جدا بمجرد ضبطها قانون بلدي في عدد قليل من الأماكن.

* الموقع لم يعد متوفرا

نصائح أخرى

Sqlite هي قابلة للتطوير في شروط المستخدم المفرد لدي متعددة غيغابايت بيانات يؤدي بشكل جيد جدا و لم تتح لي الكثير من المشاكل معها.

ولكن هو single-user, حيث أن ذلك يعتمد على أي نوع من التحجيم كنت تتحدث عن.

ردا على التعليقات.علما أنه لا يوجد شيء يمنع استخدام قاعدة بيانات Sqlite في بيئة متعدد المستخدمين ، ولكن كل معاملة (في الواقع ، كل SQL بتعديل قاعدة البيانات) يأخذ قفل على الملف, التي من شأنها منع المستخدمين الآخرين من الوصول إلى قاعدة البيانات في كل.

حتى إذا كان لديك الكثير من التعديلات التي تتم على قاعدة البيانات ، أنت أساسا تسير لتصل إلى زيادة المشاكل سريعة جدا.إذا ، من ناحية أخرى ، لديك الكثير من الوصول للقراءة مقارنة مع الكتابة, قد لا يكون سيئا للغاية.

ولكن سكليتي بالطبع وظيفة في بيئة متعدد المستخدمين ، ولكن ذلك لن أداء حسنا.

سكليتي محركات sqlite.org الموقع وغيرها من الجهات التي لديها الكثير من حركة المرور.فإنها تشير إلى أنه إذا كان لديك أقل من 100 ألف يضرب في اليوم الواحد ، سكليتي يجب أن تعمل بشكل جيد.و التي كانت مكتوبة قبل أن يسلم "Writeahead تسجيل" الميزة.

إذا كنت ترغب في تسريع الامور مع SQLite ، قم بما يلي:

  • الترقية إلى SQLite 3.7.x
  • تمكين كتابة-قبل الدخول
  • تشغيل التالية pragma:"PRAGMA cache_size = عدد من الصفحات ؛" الحجم الافتراضي (عدد الصفحات) هو 2000 صفحة ، ولكن إذا رفع هذا العدد ، ثم رفع كمية البيانات التي يتم تشغيلها مباشرة من الذاكرة.

قد ترغب في إلقاء نظرة على الفيديو على موقع يوتيوب بعنوان "تحسين سكليتي الأداء مع Writeahead تسجيل"مما يدل على كيفية استخدام الكتابة قبل الدخول ويثبت 5x سرعة التحسن يكتب.

سكليتي هو سطح المكتب أو في عملية قاعدة البيانات.SQL Server, MySQL, Oracle, و إخوانهم هي خوادم.

قواعد بيانات سطح المكتب هي بطبيعتها ليست جيدة الخيارات أي التطبيق الذي يحتاج إلى دعم الكتابة المتزامنة الوصول إلى مخزن البيانات.ويشمل هذا على مستوى معظم المواقع على شبكة الإنترنت من أي وقت مضى خلق.إذا كان لديك حتى الدخول في أي شيء ، ربما تحتاج إلى صلاحية كتابة DB.

هل قرأت هذا سكليتي مستندات - http://www.sqlite.org/whentouse.html ?

سكليتي عادة العمل العظيم كما قاعدة بيانات المحرك المنخفضة إلى المتوسطة مواقع حركة المرور (الذي هو القول ، 99.9 ٪ من جميع المواقع).كمية حركة المرور على الشبكة التي يمكن التعامل مع SQLite يعتمد بالطبع على كيفية بشكل كبير الموقع يستخدم قاعدة البيانات الخاصة به.عموما يتحدث أي موقع أن يحصل على عدد أقل من أكثر من 100 ألف مشاهدة/اليوم يجب أن تعمل بشكل جيد مع SQLite.على 100K الزيارات/يوم الرقم هو تقدير متحفظ ، وليس من الصعب الحد الأعلى.سكليتي تم أثبتت أن العمل مع 10 مرات أن كمية الحركة.

سكليتي قابلية سوف تعتمد بشكل كبير على البيانات المستخدمة و شكلها.لقد كان بعض صعبة تجربة طويلة إضافية الجداول (GPS السجلات سجل واحد في الثانية).التجربة أظهرت أن سكليتي من شأنه أن يبطئ في مراحل ، ويرجع ذلك جزئيا إلى ثابت التوازن من زراعة الأشجار الثنائية عقد الفهارس (و مع الوقت ختمها الفهارس فقط أعلم تلك الشجرة هو الذهاب الى الحصول على إعادة توازن الجسم الكثير ، ولكن من المهم أن عمليات البحث الخاصة بك).حتى في نهاية المطاف في حوالي 1GB (جدا الملعب أعلم), الاستعلامات يصبح بطيئا في حالتي.الأميال الخاص بك قد تختلف.

شيء واحد أن نتذكر ، على الرغم من كل المفاخرة ، سكليتي لم يتم لتخزين البيانات.هناك استخدامات مختلفة لا ينصح بالنسبة سكليتي.الناس بخير وراء سكليتي أقول أنه أنفسهم:

طريقة أخرى للنظر في SQLite هو هذا:سكليتي لا يهدف إلى استبدال أوراكل.وهي مصممة لتحل محل fopen().

وهذا يؤدي إلى الحجة الرئيسية (وليس الكمية, آسف, ولكن النوعية) ، سكليتي ليس لجميع الاستخدامات ، في حين أن الخلية يمكن أن تغطي العديد من الاستخدامات المتنوعة ، حتى لو لم يكن مثاليا.على سبيل المثال ، هل يمكن أن يكون الخلية متجر فايرفوكس ملفات تعريف الارتباط (بدلا من سكليتي) ، ولكن كنت بحاجة إلى أن الخدمة قيد التشغيل طوال الوقت.من ناحية أخرى, هل يمكن أن يكون المعاملات الموقع يعمل على سكليتي (كما يفعل كثير من الناس) بدلا من MySQL, ولكن نتوقع الكثير من الوقت الضائع.

أعتقد أن (في أرقام 1) خادم يخدم hunderts من العملاء تظهر على الخلفية مع اتصال واحد إلى قاعدة البيانات ، أليس كذلك ؟

حتى لا يكون هناك أي الوصول المتزامن في قاعدة البيانات وهي ولذلك يمكن القول أن قاعدة البيانات تعمل في 'وضع المستخدم الواحد'.فإنه لا معنى diskuss متعدد المستخدمين الوصول في مثل هذا الظرف و حتى سكليتي يعمل وكذلك أي دولة أخرى serverbased قاعدة البيانات الخاصة بنا.

أعتقد أنه من هذا الطريق.SQL Lite سيتم تأمين كل مرة شخص يستخدم (SQLite لا قفل على القراءة).حتى إذا كان لديك خدمة صفحة ويب أو تطبيق المتزامنة متعددة المستخدمين واحد فقط يمكن استخدام التطبيق الخاص بك في وقت واحد مع SQLLite.لذلك هناك حق هو رفع قضية.إذا كان شخص واحد تطبيق أقول مكتبة الموسيقى حيث كنت تحمل المئات من العناوين, التقييم, المعلومات, استخدام, لعب, لعب الوقت ثم SQL Lite نطاق جميل القابضة الآلاف إن لم يكن الملايين من السجلات(القرص الصلب استعداد)

الخلية من ناحية أخرى يعمل بشكل جيد على خوادم التطبيقات حيث الناس في جميع أنحاء سيتم استخدامه في وقت واحد.لا قفل أنها كبيرة جدا في الحجم.لذا مكتبة الموسيقى الخاصة بك الخلية سيكون أكثر من قتل شخص واحد فقط سوف نرى ذلك ، ما لم يكن هذا هو مشترك مكتبة الموسيقى حيث الآلاف إضافة أو تحديث.ثم الخلية سوف تكون واحدة للاستخدام.

حتى في نظرية الخلية المقاييس أفضل ثم Sqllite السبب فإنه يمكن التعامل مع يقمن المستخدمين ، ولكن مبالغة لمستخدم واحد التطبيق.

سكليتي موقع (الجزء المشار إليها أن تقوم) يشير إلى أنه يمكن أن تستخدم لمجموعة متنوعة من متعدد المستخدمين الحالات.

أود أن أقول أنه يمكن التعامل مع قليلا جدا.في تجربتي كان دائما سريع جدا.بالطبع تحتاج إلى فهرس الجداول الخاصة بك و عندما الترميز ضد ذلك ، تحتاج إلى تأكد من استخدام parameritized الاستفسارات وما شابه ذلك.أساسا نفس الأشياء يمكنك القيام به مع أي قاعدة بيانات لتحسين الأداء.

قد يكون من المفيد التحقق من الحقيقي SQL Server, الذي هو خادم قاعدة بيانات مبنية على SQLite.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top