قاعدة البيانات:ما هو التحكم في التزامن متعدد الإصدارات (MVCC) ومن يدعمه؟[مغلق]

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

  •  09-06-2019
  •  | 
  •  

سؤال

لقد قام جيف مؤخرًا نشر فيما يتعلق بمشكلته مع الجمود في قاعدة البيانات المتعلقة بالقراءة. التحكم في التزامن متعدد الإصدارات (MVCC) يدعي لحل هذه المشكلة.ما هو وما هي قواعد البيانات التي تدعمه؟

محدث:هؤلاء يدعمونه (أيهم الآخرون؟)

  • وحي
  • postgresql
هل كانت مفيدة؟

المحلول

تمتلك شركة Oracle نظامًا ممتازًا للتحكم في الإصدارات المتعددة منذ فترة طويلة جدًا (على الأقل منذ إصدار Oracle 8.0)

التالية ينبغي أن تساعد.

  1. يبدأ المستخدم "أ" معاملة ويقوم بتحديث 1000 صف بقيمة معينة في الوقت T1
  2. يقرأ المستخدم "ب" نفس الصفوف الـ 1000 في الوقت T2.
  3. يقوم المستخدم "أ" بتحديث الصف 543 بالقيمة Y (القيمة الأصلية X)
  4. يصل المستخدم "ب" إلى الصف 543 ويكتشف أن المعاملة قيد التشغيل منذ الوقت T1.
  5. تقوم قاعدة البيانات بإرجاع السجل غير المعدل من السجلات.القيمة التي تم إرجاعها هي القيمة التي تم الالتزام بها في ذلك الوقت أقل من أو تساوي T2.
  6. إذا تعذر استرداد السجل من سجلات الإعادة، فهذا يعني أن قاعدة البيانات لم يتم إعدادها بشكل مناسب.يجب أن يكون هناك مساحة أكبر مخصصة للسجلات.
  7. بهذه الطريقة يتم تحقيق تناسق القراءة.النتائج التي تم إرجاعها هي نفسها دائمًا فيما يتعلق بوقت بدء المعاملة.لذلك يتم تحقيق تناسق القراءة ضمن المعاملة.

لقد حاولت أن أشرح بأبسط العبارات الممكنة... هناك الكثير من الإصدارات المتعددة في قواعد البيانات.

نصائح أخرى

فيما يلي تطبيق MVCC:

SQL Server 2005 (غير افتراضي، SET READ_COMMITTED_SNAPSHOT ON)

أوراكل (منذ الإصدار 8)

MySQL 5 (فقط مع جداول InnoDB)

PostgreSQL

فايربيرد

إنفورميكس

أنا متأكد تمامًا من أن Sybase وIBM DB2 Mainframe/LUW ليس لديهما تطبيق MVCC

التحكم في التزامن متعدد الإصدارات لـ PostgreSQL

إلى جانب هذا المقال والذي يحتوي على رسوم بيانية لكيفية عمل MVCC عند إصدار عبارات INSERT وUPDATE وDELETE.

XtremeData يدعم dbX MVCC.

بالإضافة إلى ذلك، يمكن لـ dbX الاستفادة من أساسيات SQL المطبقة في أجهزة FPGA.

يقوم Firebird بذلك، ويطلقون عليه اسم MGA (الهندسة المعمارية متعددة الأجيال).

إنهم يحافظون على الإصدار الأصلي كما هو، ويضيفون إصدارًا جديدًا لا يمكن رؤيته إلا للجلسة التي تستخدمه، وعند الالتزام يتم تعطيل الإصدار الأقدم، ويتم تمكين الإصدار الأحدث للجميع (يتراكم الملف بالبيانات ويحتاج إلى تنظيف منتظم) .

تقوم Oracle بالكتابة فوق البيانات نفسها، وتستخدم قطاعات التراجع/مساحات الجدول للتراجع عن الجلسات الأخرى وللتراجع.

يستخدم SAP HANA أيضًا MVCC.SAP HANA هو نظام حوسبة كامل داخل الذاكرة، لذا فإن تكاليف MVCC للاختيار منخفضة جدًا...:)

هنا أ رابط إلى صفحة مستند PostgreSQL على MVCC.اقتباس الاختيار (التأكيد على ذلك):

الميزة الرئيسية لاستخدام نموذج MVCC للتحكم في التزامن بدلاً من القفل هو أن أقفال MVCC التي تم الحصول عليها للاستعلام (قراءة) البيانات لا تتعارض مع الأقفال التي تم الحصول عليها لكتابة البيانات، وهكذا القراءة لا تمنع الكتابة أبدًا، والكتابة لا تمنع القراءة أبدًا.

ولهذا السبب كان جيف في حيرة من أمره بسبب مآزقه.لا ينبغي للقراءة أن تكون قادرة على التسبب فيها.

يقدم SQL Server 2005 والإصدارات الأحدث MVCC كخيار؛ومع ذلك، فهو ليس الإعداد الافتراضي.يسميها MS عزل اللقطة، إذا كانت الذاكرة تخدمك.

يمكن أيضًا تنفيذ MVCC يدويًا، عن طريق إضافة عمود رقم الإصدار إلى جداولك، والقيام دائمًا بالإدراج بدلاً من التحديثات.

تكلفة ذلك عبارة عن قاعدة بيانات أكبر بكثير، وعمليات تحديد أبطأ نظرًا لأن كل قاعدة بيانات تحتاج إلى استعلام فرعي للعثور على أحدث سجل.

إنه حل ممتاز للأنظمة التي تتطلب تدقيقًا بنسبة 100% لجميع التغييرات.

يستخدم MySQL أيضًا MVCC افتراضيًا إذا كنت تستخدم جداول InnoDB:http://dev.mysql.com/doc/refman/5.0/en/innodb-multi-versioning.html

أعلنت شركة McObject في 11/09 أنها أضافت مدير معاملات MVCC اختياريًا إلى قاعدة بيانات eXtremeDB المدمجة الخاصة بها:

http://www.mcobject.com/november9/2009

eXtremeDB، الذي تم تطويره في الأصل كنظام قاعدة بيانات في الذاكرة (IMDS)، متوفر الآن في إصدارات ذات تخزين مختلط (في الذاكرة/على القرص)، وتوافر عالي، ودعم 64 بت والمزيد.

يوجد شرح جيد لـ MVCC - مع الرسوم البيانية - وبعض أرقام الأداء لـ eXtremeDB في هذه المقالة، التي كتبها المؤسس المشارك والرئيس التنفيذي لشركة McObject، في مجلة RTC:

http://www.rtcmagazine.com/articles/view/101612

من الواضح أن MVCC مفيد بشكل متزايد حيث يتوسع التطبيق ليشمل العديد من المهام التي يتم تنفيذها على مراكز وحدة المعالجة المركزية المتعددة.

يحتوي الإصدار 9.7 من DB2 على نسخة مرخصة من postgress plus.وهذا يعني أن هذه الميزة (في الوضع الصحيح) تدعم هذه الميزة.

بيركلي دي بي كما يدعم MVCC.

وعندما محرك تخزين BDB يُستخدم في MySQL، ويدعم MySQL أيضًا MVCC.

Berkeley DB هو نظام إدارة قواعد بيانات قوي جدًا وقابل للتخصيص بالكامل ومتوافق مع ACID.وهو يدعم عدة طرق مختلفة للفهرسة، والنسخ المتماثل للسيد والعبد، ويمكن استخدامه كمخزن قيمة مفتاح خالص مع واجهة برمجة التطبيقات الديناميكية الخاصة به أو الاستعلام عنه باستخدام SQL إذا لزم الأمر.تستحق أخذ نظرة عليها.

سيكون نظام إدارة قواعد البيانات (DBMS) الآخر الموجه نحو المستند والذي يشمل MVCC هو كاوتش دي بي.يعد MVCC هنا أيضًا إضافة كبيرة للنسخ المتماثل المدمج من نظير إلى نظير.

من http://vschart.com/list/multiversion-concurrency-control/

Couchbase ، OrientDB ، CouchDB ، PostgreSQL ، Project Voldemort ، Bigtable ، Percona Server ، Hypergraphdb ، Ridtsle ، Cloudant ، IBM DB2 ، Intersystems Caché ، Interbase

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