هل يعتمد أداء حفظ ManagedBjectextext على عدد الكائنات الموجودة (دون تغيير)؟

StackOverflow https://stackoverflow.com/questions/2229690

سؤال

Coredata / Sqlite سؤال

هل هناك فرق كبير بين هذين السيناريوين عند حفظ NSManagedObjectContext باستخدام متجر SQLite:

  • بعد إضافة / تغيير / حذف واحد كائن في NSManagedObjectContext تحتوي 10 خلاف ذلك دون تغيير NSManagedObjects
  • بعد إضافة / تغيير / حذف واحد كائن في NSManagedObjectContext تحتوي 10'000 خلاف ذلك دون تغيير NSManagedObjects
هل كانت مفيدة؟

المحلول

يعيد من تجربتي مع كائنات المؤسسات (التي تطورت البيانات الأساسية من) أود أن أقول أن كل من السيناريوهات الخاصة بك سيكون سريعا بنفس القدر دون الفهرسة والثاني أبطأ قليلا بفهرسة.

استخدام و SQL Store، تكلفة إضافة كائن واحد ثابت إلى حد كبير بغض النظر عن عدد الكائنات الأخرى الموجودة في الرسم البياني. يسبب الفهرسة تأثير التحجيم لأن الفهرس يعتمد على الكائنات الموجودة الأخرى. ومع ذلك، في الغالبية العظمى من الحالات، هذا ليس كبيرا.

كلما كانت العلاقات أكثر تعقيدا داخل الرسم البياني وتتأثر المزيد من المحفوظات بحجم الرسم البياني الكلي. من الواضح، إذا كان لديك رسم بياني مع عشرة كائنات فقط، فلا يمكن أن تحتوي أي علاقة على أكثر من عشرة كائنات فيها. إذا كان لديك واحدة مع 10،000، فإن العلاقات قد تكون أكبر بكثير وتستغرق وقتا طويلا.

باختصار، يبدو أن البيانات الأساسية مع متجر SQL لا تتأثر إلى حد كبير بحجم الرسم البياني.

نصائح أخرى

سوف يخبرك التنميط إذا كان هناك فرق كبير. ومع ذلك، أظن أن نوع منسق المتجر سيؤثر على العروض. من المحتمل أن يكون تحديث كائن في قاعدة بيانات SQLite أسرع وأكثر قابلية للتوسعة من القيام بذلك في شجرة XML.

في تجربتي السابقة، لا يوجد فرق كبير. إذا تم إضافة الكائن الذي يتم إضافته / تم حذفه يحتوي على الكثير من السمات المفهرسة، فسوف يستغرق الأمر أكثر قليلا عند مقارنته بحالة كائن بدون سمات مفهرسة، ولكن من المتوقع أيضا تعديل الفهارس أيضا أيضا.

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