نمونه ای از مدیریت شناسه تراکنش ها

  • 2022-04-11

نسخه جدیدتری از این اسناد موجود است. از منوی نسخه بالا برای مشاهده به روزترین نسخه مستندات Greenplum 6. x استفاده کنید.

نمونه ای از مدیریت شناسه تراکنش ها

  • محاسبات بر روی مقادیر XID با استفاده از محاسبات modulo-2 32 که به پایگاه داده Greenplum امکان استفاده مجدد از مقادیر XID را می دهد. محاسبات ماژول ترتیب تراکنش ها را مشخص می کند که آیا یک تراکنش قبل یا بعد از دیگری اتفاق افتاده است، بر اساس XID.

هر مقدار XID می تواند تا دو میلیارد (2 31) مقدار XID داشته باشد که تراکنش های قبلی در نظر گرفته می شوند و دو میلیارد (2 3 1-1) مقادیر XID که تراکنش های جدیدتر در نظر گرفته می شوند. مقادیر XID را می توان مجموعه ای دایره ای از مقادیر بدون نقطه پایانی مشابه ساعت 24 ساعته در نظر گرفت.

با استفاده از محاسبات مدول پایگاه داده Greenplum، تا زمانی که دو XID در 2 31 تراکنش از یکدیگر قرار دارند، مقایسه آنها نتیجه صحیح را به دست می دهد.

  • هنگامی که پایگاه داده Greenplum XID ها را با استفاده از محاسبات مدول مقایسه می کند، XID منجمد شده همیشه کوچکتر و زودتر از هر XID دیگری مقایسه می شود. اگر XID یک ردیف روی XID ثابت تنظیم نشده باشد و 2 31 تراکنش جدید اجرا شود، به نظر می رسد ردیف در آینده بر اساس محاسبه مدول اجرا شود.
  • هنگامی که XID ردیف روی XID ثابت تنظیم می شود، می توان از XID اصلی بدون تکرار XID استفاده کرد. این تعداد ردیف های داده روی دیسک با XID های اختصاص داده شده در زیر (2 32) حفظ می شود.

توجه: پایگاه داده Greenplum مقادیر XID را فقط به تراکنش هایی اختصاص می دهد که شامل عملیات DDL یا DML هستند، که معمولاً تنها تراکنش هایی هستند که به XID نیاز دارند.

مثال ساده MVCC

  • جدول یک جدول ساده با 2 ستون و 4 ردیف داده است.
  • مقادیر شناسه تراکنش معتبر (XID) از 0 تا 9 هستند، پس از 9، XID در 0 راه اندازی مجدد می شود.
  • XID منجم د-2 است. این با پایگاه داده گرین پلام منجمد XID متفاوت است.
  • معاملات در یک ردیف انجام می شود.
  • فقط عملیات درج و به روز رسانی انجام می شود.
  • تمام ردیف های به روز شده روی دیسک باقی می مانند، هیچ عملیاتی برای حذف ردیف های منسوخ انجام نمی شود.

مثال فقط مقادیر مقدار را به روز می کند. هیچ تغییر دیگری در جدول وجود ندارد.

  • چگونه از شناسه های تراکنش برای مدیریت چندین تراکنش همزمان روی یک میز استفاده می شود.
  • چگونه شناسه‌های تراکنش با XID ثابت مدیریت می‌شوند
  • چگونه محاسبه مدول ترتیب تراکنش ها را بر اساس شناسه تراکنش ها تعیین می کند

مدیریت معاملات همزمان

این جدول داده های جدول اولیه روی دیسک بدون به روز رسانی است. این جدول شامل دو ستون پایگاه داده برای شناسه های تراکنش است، xmin (تراکنشی که ردیف را ایجاد کرد) و xmax (تراکنشی که ردیف را به روز کرد). در جدول، تغییرات به ترتیب به انتهای جدول اضافه می شود.

جدول 1. جدول مثال
مورد میزان xmin xmax
ویجت 100 0 خالی
قلوه 200 1 خالی
چرخ دنده 300 2 خالی
Gizmo 400 3 خالی
  • xid = 4: به روز رسانی tbl مجموعه مقدار = 208 که در آن مورد = 'ویجت'
  • xid = 5: به روز رسانی tbl مجموعه مقدار = 133 که در آن مورد = 'sprocket'
  • xid = 6: به روز رسانی tbl مجموعه مقدار = 16 که در آن مورد = 'ویجت'

در جدول بعدی، موارد پررنگ، ردیف‌های فعلی جدول هستند. سطرهای دیگر ردیف‌های منسوخ هستند، داده‌های جدولی که روی دیسک هستند اما دیگر جاری نیستند. با استفاده از مقدار xmax می‌توانید ردیف‌های فعلی جدول را با انتخاب ردیف‌هایی با مقدار null تعیین کنید. پایگاه داده Greenplum از روش کمی متفاوت برای تعیین ردیف های جدول فعلی استفاده می کند.

جدول 2. جدول مثال با به روز رسانی
مورد میزان xmin xmax
ویجت 100 0 4
قلوه 200 1 خالی
چرخ دنده 300 2 5
Gizmo 400 3 خالی
ویجت 208 4 6
چرخش 133 5 خالی
ویجت 16 6 خالی
  • دستور UPDATE مقدار مقدار چرخ دنده را به 133 تغییر می دهد (مقدار xmin 5)
  • SELECT Command مقدار Sprocket را برمی گرداند.

در طی معامله به روزرسانی ، پایگاه داده مقدار Sprocket 300 را برمی گرداند ، تا اینکه معامله به روزرسانی کامل شود.

مدیریت XID و XID منجمد

  • پایگاه داده GreenPlum هشدار دهنده ای را صادر می کند که می گوید این پایگاه داده از مقادیر XID در حال پایان است.
  • قبل از تعیین آخرین XID ، پایگاه داده GreenPlum برای جلوگیری از اختصاص مقدار XID دو بار ، پذیرش معاملات را متوقف می کند و این پیام را صادر می کند.
  • یک عمل خلاء مقادیر XID را آزاد می کند تا یک جدول با تغییر مقادیر XMIN به XID منجمد بیش از 10 ردیف داشته باشد.
  • یک عمل خلاء ردیف های جدول منسوخ یا حذف شده را روی دیسک مدیریت می کند. این دستور خلاء این پایگاه داده مقادیر XID را منسوخ می کند تا ردیف های منسوخ را نشان دهد. یک عملیات خلاء پایگاه داده GreenPlum ، بدون گزینه کامل ، داده ها را به صورت فرصت طلب حذف می کند تا ردیف های دیسک را با حداقل تأثیر در عملکرد و در دسترس بودن داده ها حذف کند.
  • برای ردیف های ویجت و چرخش روی دیسک که دیگر جریان ندارند ، ردیف ها به عنوان منسوخ مشخص شده اند.
  • برای ردیف های Giblet و Gizmo که در حال حاضر هستند ، Xmin به XID یخ زده تغییر یافته است.

مقادیر هنوز مقادیر جدول فعلی هستند (مقدار XMAX ردیف تهی است). با این حال ، ردیف جدول برای همه معاملات قابل مشاهده است زیرا مقدار XMIN مقدار XID یخ زده است که در هنگام انجام محاسبات مدول ، از سایر مقادیر XID قدیمی تر است.

پس از عمل خلاء ، مقادیر XID 0 ، 1 ، 2 و 3 برای استفاده در دسترس است.

جدول 3. جدول مثال پس از خلاء
مورد میزان xmin xmax
ویجت 100 منسوخ منسوخ
قلوه 200 -2 خالی
چرخ دنده 300 منسوخ منسوخ
Gizmo 400 -2 خالی
ویجت 208 4 6
چرخش 133 5 خالی
ویجت 16 6 خالی

هنگامی که یک دیسک ردیف با مقدار XMI N-2 به روز شد ، مقدار XMAX با معامله XID طبق معمول جایگزین می شود و ردیف روی دیسک پس از هرگونه معاملات همزمان که به ردیف دسترسی پیدا کرده اند منسوخ می شوند.

ردیف های منسوخ را می توان از دیسک حذف کرد. برای پایگاه داده GreenPlum ، دستور خلاء ، با گزینه کامل ، پردازش گسترده تری را برای بازپس گیری فضای دیسک انجام می دهد.

نمونه ای از محاسبات modulo XID

در جدول بعدی داده های جدول روی دیسک پس از معاملات به روزرسانی بیشتر نشان داده شده است. مقادیر XID به پایان رسیده و از 0 شروع می شود. هیچ عملیاتی خلاء اضافی انجام نشده است.

جدول 4. جدول مثال با بسته بندی XID
مورد میزان xmin xmax
ویجت 100 منسوخ منسوخ
قلوه 200 -2 1
چرخ دنده 300 منسوخ منسوخ
Gizmo 400 -2 9
ویجت 208 4 6
چرخش 133 5 خالی
ویجت 16 6 7
ویجت 222 7 خالی
قلوه 233 8 0
Gizmo 18 9 خالی
قلوه 88 0 1
قلوه 44 1 خالی

هنگام انجام محاسبات ماژول که با مقایسه XID ها ، پایگاه داده GreenPlum ، XID های ردیف ها و دامنه فعلی XID های موجود را در نظر می گیرند تا مشخص شود که آیا بسته بندی XID بین ردیف XID رخ داده است یا خیر.

برای مثال جدول XID بسته بندی شده است. XID 1 برای ردیف Giblet یک معامله بعدی نسبت به XID 7 برای ردیف ویجت بر اساس محاسبات مدول برای مقادیر XID است حتی اگر مقدار XID 7 از 1 بزرگتر باشد.

برای ردیف های ویجت و چرخش ، بسته بندی XID رخ نداده است و XID 7 معامله بعدی از XID 5 است.

ثبت دیدگاه

مجموع دیدگاهها : 0در انتظار بررسی : 0انتشار یافته : ۰
قوانین ارسال دیدگاه
  • دیدگاه های ارسال شده توسط شما، پس از تایید توسط تیم مدیریت در وب منتشر خواهد شد.
  • پیام هایی که حاوی تهمت یا افترا باشد منتشر نخواهد شد.
  • پیام هایی که به غیر از زبان فارسی یا غیر مرتبط باشد منتشر نخواهد شد.