منبع اصلی نوشتار زیر در این لینک قرار دارد

InnoDB چیست

InnoDB نام موتور پایگاه داده (Database Engine) یا در برخی منابع موتور ذخیره سازی (Storage Engine) که در پایگاه داده MySQL 5.5 به بعد به صورت پیشفرض استفاده می شود. InnoDB چهار ویژگی ACID و ویژگی کلید خارجی را پشتیبانی می کند. در حال حاظر InnoDB یکی از محصولات اوراکل است و پایگاه داده های مشتق شده از MySQL یعنی MariaDB و Percona Server از یک موتور پایگاه داده به نام XtraDB استفاده می کنند که در واقع مشتق شده از InnoDB است.

برخی از ویژگی های MySQL InnoDB عبارتند از

پشتیبانی از کلید خارجی

 کلید خارجی یک رابطه میان ستون های دو جدول را ایجاد می کند. به طور مثال در یک جدول اطلاعات کارمندان و در جدول دیگر اطلاعات دپارتمان ها نگه داری می شود بنابراین در جدول کارمندان یک ستون به عنوان کلید خارجی به جدول دپارتمان ها وجود دارد.

پشتیبانی از تراکنش ها

تراکنش مجموعه ای از دستورالعمل ها بر روی پایگاه داده است. هر تراکنش یک آغاز و یک پایان دارد و از نظر کاربر (و نه سیستم مدیریت پایگاه داده) هر تراکنش می تواند از یک تا چندین دستور العمل SQL تشکیل شده باشد. همچنین پایان یک تراکنش با صادر شدن دستور commit مشخص می شود. دستور commit مشخص می کند که تغییرات تراکنش بایستی به صورت دائمی بر روی پایگاه داده ثبت و ذخیره سازی شود.

امکان ایجاد Tablespace

یکی دیگر از ویژگی های InnoDB امکان ایجاد Tablespace در پایگاه داده MySQL توسط دستور CREATE TABLESPACE است. Tablespace یک دسته بندی منطقی از جداول پایگاه داده است که می توان به هر Tablespace یک یا چندین فایل را اختصاص داد.

قفل گذاری در سطح سطرها یا Row-level locking

در پایگاه داده به دلیل آنکه به صورت همزمان چندین تراکنش قصد دسترسی به یک جدول را دارند، بنابراین لازم است تا برای حفظ سازگاری پایگاه داده، از مکانیزمی استفاده شود تا این اجرای همروند چندین تراکنش، منجر به ناسازگاری در پایگاه داده نشوند. قفل گذاری مکانیزمی است به این منظور به این صورت که به صورت پیشفرض قفل ها بر روی یک جدول صادر می شود.

فرض کنید دو تراکنش قصد دسترسی و تغییر (Insert, Update, Delete) بر روی یک یا چندین سطر از یک جدول را دارند. به صورت پیش برای دسترسی تراکنش اول به سطر های لازم، کل جدول (تمامی سطرها) بی جهت قفل گذاری می شوند (قفل گذاری در سطح جدول یا Table-level locking) و تراکنش دوم که نیاز به دیگر سطرها از جدول دارد بی جهت باید در حالت Wait باشد. اما در رویکرد Row-level Locking قفل تنها بر روی سطرهای مورد نیاز تراکنش صادر خواهد شد.

با استفاده از کوئری های زیر می توان فهرستی از جدوالی که از InnoDB استفاده می کنند را فهرست کنیم.

SELECT table_name, table_schema

FROM information_schema.tables

;’WHERE engine = ‘InnoDB

innodb_intro_1

و یا از کوئری زیر

SELECT table_name, table_schema, engine

;FROM information_schema.tables



برچسب ها : ,

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

به اين صفحه امتياز دهيد