جلسه اول – مرور HTML

مرور html

html که یک زبان توصیف سند محسوب میشود بدنه اصلی صفحات وب را تشکیل می دهد، از این زبان برای ساخت ظاهر سایت و امکانات آن نظیر فرم های ثبت نام استفاده می شود، html به تنهایی نمیتواند نیازهای یک سایت تعاملی را تامین کند بلکه تنها می تواند یک صفحه ایستا را ایجاد نماید به همین جهت برای بهبود گرافیکی و ایجاد امکان تعامل و ساخت صفحات پویا dynamic زبان ها و امکانات دیگری نظیر css برای تنظیم ظاهر گرافیکی عناصر html و JavaScript برای ایجاد تعامل سمت کاربر استفاده می شود، همچنین به جهت کار با پایگاه های داده و ذخیره فایل و سایر فعالیت های مرتبط با سرور از زبان هایی همچون php یا asp استفاده می شود. به علاوه ی این زبان ها با استفاده از مفهومی به اسم CGI می توان از سایر زبان های برنامه نویسی نظیر c و c++ نیز برای پیاده سازی وب سایت استفاده نمود.

 

ساختار صفحات :

هر صفحه با تگ <html> شروع شده و با <html/> پایان می یابد ، و سایر قسمت های صفحه بین این دو تگ تعریف می شوند.

<head></head>

هدر یا سربرگ برای ذخیره اطلاعاتی نظیر عنوان صفحه ، توضیحات متا شامل کلمات کلیدی ، توضیحات و … و همچنین برای قراردادن استایل های css و کد های JS استفاده می شود.

تگ <title> عنوان صفحه داخل آن نوشته می شود
تگ های متا : <meta name=”keyword”>
مشخصه name در این تگ می تواند مقادیری مانند keyword ، description، author و … داشته باشد سپس مقدار آن را باید با استفاده از مشخصه content تعیین نمود

تگ <style> : کد های css را داخل این تگ تعریف می کنیم

تگ <script> برای نوشتن کد های اسکریپتی نظیر javascript از این تگ استفاده می شود، میتوان از زبان های دیگر نظیر vbScript و … نیز استفاده نمود.

<body></body>
تگ بدنه اصلی صفحه بوده و تمامی عناصر صفحه در این تگ قرار میگیرند

تگ های مربوط به نگارش متن :

<p> : ایجاد پاراگراف در متن
<b> متن داخل این تگ به صورت پررنگ نشان داده می شود
<i> برای نمایش متن به صورت مورب استفاده می شود
<tt> برای نمایش متن با فونت شبیه به ماشین های تایپ قدیمی استفاده می شود
<h1> برای نوشتن سر تیتر از تگ های h استفاده شده که از شماره ۱ که بزرگترین حالت بوده تا شماره ۶ که کوچکترین سایز آن هست استفاده می شود

لینک :

برای لینک دادن از تگ <a> استفاده شده که دارای مشخصه های زیر می باشد :

href: آدرس جایی که لینک به آن داده می شود
target: هدف لینک را مشخص میکند که برای باز شدن در صفحه جدید باید مقدار آن برابر blank_ باشد

دکمه : تگ <button> برای ایجاد دکمه استفاده شده و می توان با قراردادن آن داخل تگ <a> لینک را در صورت کلیک بر روی دکمه مورد نظر باز نمود

ساخت فرم ها :

برای ساخت فرم می بایست ابتدا با استفاده از تگ form آغاز فرم مشخص شود سپس عناصر فرم شامل ناحیه متنی، دکمه ثبت ، دکمه کشویی و … را داخل آن تعریف نمود.

مشخصات تگ فرم عبارتند از :
name : نام فرم را مشخص میکند
action: اسم یا آدرس اسکریپتی هست که داده های فرم باید برای آن ارسال شوند اگر مقداری نداشته باشد فرم به صفحه جاری اطلاعات را ارسال میکند
method : این مشخصه دارای دو مقدار مجاز post و get می باشد ، در صورت انتخاب post اطلاعات از طریق بسته http به سرور ارسال شده و کاربر چیزی مشاهده نمی کند ولی در صورت انتخاب متد get داده ها از طریق url قابل مشاهده خواهند بود
enctype=”multipart/form-data : درصورتی که میخواهیم از طریف فرم فایل آپلود شود باید مشخصه enctype را برابر با multipart-form-data انتخاب نمود

انواع ورودی از طریق فرم با تگ input ایجاد می شوند مشخصه type بیانگر نوع ورودی بوده که از text برای ورودی متنی ، از password برای ساخت فیلد ورود رمز عبور و از number برای ورود اعداد استفاده می شود.

تگ <select> برای ایجاد منوی آبشاری یا کشویی (drop down) استفاده می شود که گزینه های آن با تگ <option> مشخص می شوند

<select name=country>
<optio value=iran>
<option value=iraq>

<select/>

برای ارسال فایل نیز کافیست از <input type=file> استفاده شود تا کاربر بتواند فایل مورد نظر خود را انتخاب و ارسال نماید پس از ارسال باید فایل مورد نظر در سمت سرویس دهنده توسط زبانی مانند php کنترل شده و در صورت عدم وجود مشکل ذخیره شود

قراردادن عکس : از تگ img برای قراردادن تصویر استفاده شده که مشخصه src آدرس فایل عکس width عرض و height ارتفاع آن را مشخص می کند که متوانند مقادیری با واحد پیکسل داشته باشند مانند ۲۰۰px یا به صورت درصدی از محل قرار گیری خود بیان شوند مثلا width=50% یعنی تصویر به اندازه نیمی از محل قرارگیری خود می باشد در صورتی که در بدنه اصلی باشد به اندازه نصف صفحه درمی آید ولی اگر داخل یک تگ دیگر مانند تگ div باشد به اندازه نیمی از عرض آن تگ خواهد بود

 

نقطه شروع کار تحقیقاتی

مقاله ی مروری :
یک مقاله مروری یا به اصطلاع survey article که گاهی با نام هایی دیگر همچون review و overview هم شناخته می شود نوعی از مقاله بوده که در آن مقالات و تحقیقاتی که تا بحال بر روی موضوعی خاص انجام شده اند به صورت خلاصه بیان می شوند. این مقاله ها شامل اطلاعاتی درباره ی:
* افراد مهم در زمینه تحقیق
* جدید ترین پیشرفت ها و کشفیات
* جاهای خالی (gap) موجود در تحقیق
* بحث های جدید
و ایده هایی که ممکن است در تحقیقات آینده استفاده شود، می باشند.

 نوشتن یک مقاله مروری درمورد موضوع مورد نظرمون می تونه یه نقطه شروع برای کار تحقیقاتی ما باشه و به عنوان گام نخست حساب بشه

تعاریف مهم، فناوری اطلاعات برای مدیران

مطالب این نوشته از کتاب information technology for management برداشت شده است

فصل اول
Big Data
داده هایی که از نظر حجم و سرعت فراتر از دیتابیس های معمولی از نظر دریافت ذخیره سازی و تحلیل هستند
مانند داده های تولید شده توسط ماشین ها و متون رسانه های اجتماعی

Data analytics
بیانگر استفاده از نرم افزار و آمار جهت استخراج برداشت های با معنی از داده ها یا درک بهتر آنها می باشد

Data visualization (viz)
ابزاری برای آسان تر ساختن درک داده ها در یک نگاه می باشند که داده ها را به فرمت خلاصه سازی شده مانند داشبرد ها و نقشه ها نشان می دهند و این امکان را ارائه می کنند که به تدریج وارد جزئیات داده ها شد.

Business to Business (B2B)
فروش محصولات و خدمات به سایر واحد های تجاری مانند عمده فروشان، فروشگاه های زنجیره ای و ….

Supply Chain
زنجیره تامین شامل تمامی واحد های تجاری می شود که در تولید و توزیع یک کالا مشارکت دارند.

Key Performance Indicator (KPI)
شاخص های عملکرد کلیدی، معیارهایی هستند که برای ارزیابی عملکرد از لحاظ عوامل حیاتی موفقیت یا اهداف استراتژیک و عملیاتی استفاده می شوند.
Dashboard
ابزاری برای نمایش داده ها (Data Vis) هستند که در آنها وضعیت جاری مربوط به معیار های KPI به صورت آسان برای درک بهتر نشان داده شده اند.

Food safety modernization fact (FSMA)
قانونی که از سال ۲۰۱۱ از تولید کنندگان مواد غذایی میخواست توانایی ردیابی غدا از محل اولیه تولید یا مزرعه تا مصرف کننده (Farm to fork) را داشته باشند.

Digital Business
تجارت دیجیتالی شامل هرگونه فعالیت تجاری با تمرکز بر روی فناوری های اجتماعی، موبایل و مبتنی بر وب می باشد.

Business Model
مدل تجاری درواقع مشخص میکند که یک واحد صنفی چگونه تولید ثروت و پول میکند.

Digital Business Model
مشخص می سازد که یک واحد تجاری چگونه به صورت دیجیتالی اقدام به تولید ثروت و پول میکند.
Customer Experience (CX)
بیانگر ایجاد زیرساخت دیجیتال لازم جهت اجازه دادن به مشتری برای انجام هریک از فعالیت های خود از طریق کانال یا واسطی که علاقه دارند می باشد.

Cloud Computing
رایانش ابری یک شیوه ارائه خدمات IT به صورت مبتنی بر تقاضی و از طریق اینترنت می باشد. مانند Drop Box و Google Drive

IoT
اینترنت اشیا بیانگر توانایی هایی هست که در صورت متصل شدن اشیاء فیزیکی از طریق سنسورهای مختلف به اینترنت بدست می آیند.

M2M
فناوری Machine-to-Machine بیانگر امکان به اشتراک گذاری داده ها بین ماشین های دارای سنسور مختلف به صورت بلادرنگ از طریق سیگنال های رادیویی می باشد
M2M و IoT در خودکارسازی فرآیند های کاری بسیار پرکاربرد هستند.

Data Science
علم داده بیانگر فعالیت هایی شامل مدیریت و تحلیل مجموعه داده ها با حجم زیاد با هدف هایی مانند یافتن بازار هدف، تحلیل تقاضی و … می باشد.

Wearable Technology
تکنولوژی پوشیدنی، قابلیت های محاسبه، اتصال و حسگرها را به وسایل اضافه میکند.

Business Process
فرآیند تجاری شامل گام ها و مرحله هایی هستند که واحد های تجاری به جهت همکاری و هماهنگی وظایف برای انجام دادن کار از آنها استفاده می کنند. این فرایند ها شامل سه بخش اصلی هستند: افراد، فناوری و اطلاعات

Deliverables
به خروجی قابل تحویل (مانند محصولات یا خدمات ) یک فرایند تجاری Deliverable میگویند.

Standard operating procedures (SOPs)
به روش هایی با تعریف دقیق و مشخص و مستند سازی شده برای انجام کارها SOP می گویند.

Business process reengineering
به اقدامات انجام شده جهت حذف گام ها و مرحله های اضافی در یک فرآیند تجاری را BPR گویند.
هدف BPR حذف گام هایی که اضافی بوده یا ارزش افزوده تولید نمیکنند می باشد سپس اقدام به ساده سازی و خودکار ساختن گام های باقی مانده نموده تا چرخه زمانی، نیروی کار و هزینه ها را کاهش دهد.
BPR بخشی از یک مفهوم کلی تر به نام مدیریت فرایند تجاری BPM بوده که به صورت مستمر از ابزارها و روش هایی جهت توسعه و بهبود فرآیند تجاری استفاده میکند.

Agility
چابکی به معنی قابلیت پاسخ سریع می باشد

Responsiveness
به این معنی است که IT می بایست توانایی پاسخ گویی بر اساس نیاز ها را داشته باشد و قابلیت مقیاس پذیری بیشتر یا کمتر را در صورت نیاز داشته باشد که این کار مستلزم پیاده سازی رایانش ابری است.

Flexibility
بیانگر توانایی اضافه کردن سریع فعالیت های تجاری جدید یا تنظیم و پیکربندی مجدد نرم افزارها به طور ساده می باشد

Competitive advantage
مزیت رقابتی عاملی است که به یک شرکت این امکان را میدهد تا از سایر رقیبان خود جلو افتاده و بهتر از آنها عمل کند.برای نگهداری مزیت رقابتی نسبت به سایرین می بایست یک شرکت به طور مستمر راه های جدیدی برای رقابت پیدا نموده و اجرا کند.

Strategic (SWOT) Analysis
تحلیل محیط، رقابت و ظرفیت ها به جهت یادگیری نقاط قوت ،ضعف، موقعیت ها و تهدیدات می باشد.

استراتژی چیست ؟
استراتژی بیانگر یک نقشه می باشد که مشخص می سازد یک شرکت چگونه به چشم انداز، اهداف خود خواهد رسید.

مفاهیم پایه در مدل نیروهای رقابتی
سود = درآمد کلی منهای هزینه کلی
حاشیه سود= قیمت فروش محصول منهای هزینه ی تولید محصول

نیروهای رقابتی عبارتند از:
۱- خطر پدیدار شدن رقیبان جدید
۲- چانه زنی تامین کنندگان
۳- چانه زنی خریداران و مشتریان
۴- خطر جایگذین شدن محصول یا خدمات
۵- رقابت بین شرکت های موجود در صنعت

Primary activities
فعالیت های اولیه شامل کارهایی هستند که به طور مستقیم در تولید محصول دخالت دارند.
۱- Inbound logistic: شامل فعالیت های تهیه مواد اولیه و سایر ورودی ها
۲- Operations: عملیات های لازم نظیر خط تولید و تست و کنترل
۳- Outbound logistics: شامل بسته بندی انبارداری و تحویل و توزیع محصولات
۴- Marketing and sales: بازاریابی و فروش به مشتریان
۵- Services: ارائه خدمات مانند خدمات پس از فروش به مشتریان

NFC – Near field communication
واژه ای برای توصیف مجموعه ای از تکنولوژی هایی هست که در برد و فاصله کوتاه ارتباط برقرار میکنند.

فصل دوم
Enterprise Architecture
راهنمای توسعه و تکامل سیستم های اطلاعاتی، فناوری دیجیتال و فرایند های تجاری در سازمان بوده که برای استفاده از ظرفیت های IT به جهت ایجاد مزیت رقابتی و رشد استفاده می شود.

Data governance
راهبری داده یا اطلاعات عبارت است از کنترل داده های شرکت با استفاده از سیاست گذاری ها و رویه های رسمی .

Customer centric business model
مدل های کسب و کاری که تلاش میکنند تا بهترین راه حل یا تجربه را برای کاربر ایجاد کنند. این مدل ها بر تولید محصول با بهترین کیفیت تمرکز دارند.

Dirty Data
داده های کثیف داده هایی با کیفیت خیلی پایین بوده به قدری که نمی توان به آنها اعتماد نمود و بر اساس آنها تصمیم گرفت.
ویژگی های داده های کثیف:
Incomplete: داده ها شامل بخش های گم شده بوده و کامل نیستند
Outdated and invalid: داده ها به قدری قدیمی هستند که اعتبار خود را ازدست داده اند.
Incorrect: داده ها دارای تعداد زیادی خطا هستند
Duplicated or conflict: نسخه های مختلفی از داده ها موجود هستند که این نسخه ها با هم تطابق نداشته یا دارای تضاد هستند.
Nonstandardized: داده ها با فرمت هایی نا همخوان ذخیره شده اند و به همین دلیل نمیتوان آنها را مقایسه نمود یا خلاصه ساخت.
Unusable: داده ها در زمان دسترسی قابل فهم یا تفسیر نیستند.

Master Data management (MDM)
روش هایی که داده های حیاتی تجاری را از سیستم های مختلف جمع آوری نموده و در یک master file قرار داده تا یک منبع قابل اطمینان از داده ها ایجاد نماید.

Information management
استفاده از ابزار و روش های فناوری اطلاعات برای جمع آوری، پردازش، تحکیم، ذخیره سازی و ایمن نمودن داده ها از منابع ناسازگار و پراکنده.

Data silo (information silo)
انبار های داده مستقل هستند و داده های آنها توسط سایر سیستم های اطلاعاتی یا سایر دپارتمان ها که به آنها نیازدارند قابل دسترس نیستند

چالش های داده ای که مدیران درصورت نبود information management با آن روبرو می شوند:
۱- انباشت داده در data silo
۲- داده های ازدست رفته
۳- رابط های کاربری ضعیف
۴- فرمت های داده های غیراستاندارد
۵- عدمت پاسخ گویی به تغییرات سریع

Executive information system (EIS)
این سیستم اطلاعاتی به گونه ای طراحی شده تا به مدیران ارشد داده های داخلی و خارجی و همچنین KPI های مرتبط با نیازهایشان را ارائه دهد.

مزایای مدیریت اطلاعات
۱- افزایش کیفیت تصمیم گیری
۲- افزایش دقت و قابلیت اطمینان مربوط به پیشبینی مدیران
۳- کاهش ریسک عدم انطباق
۴- کاهش زمان و هزینه

Enterprise Architecture (EA)
نحوه ساختاری سیستم ها و رویه های IT را EA می گویند. EA یک فرایند مداوم شامل ایجاد، نگهداری و بهره گیری از IT می باشد و برای حل دو مسئله حیاتی کاربرد دارد: یک سازمان به کجا می رود؟ و چگونه به آنجا خواهد رسید.
EA به دو مسئله اساسی رسیدگی میکند: ۱- پیچیدگی سیستم های IT 2- تطابق ضعیف با اهداف تجاری (Poor business alignment)

اجزای تشکیل دهنده EA
Business architecture: فرآیند هایی که سیستم جهت دستیابی به اهدافش استفاده میکند
Application architecture: چگونگی طراحی نرم افزار های خاص و نحوه تعامل آنها با هم
Data architecture: چگونگی ذخیره سازی، مرتب کردن و دسترسی به داده های سازمان
Technical architecture: زیرساخت نرم افزاری و سخت افزاری برای پشتیبانی نرم افزارهای کاربردی و تعاملات آنها

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

Transaction processing system (TPS)
برای پردازش انواع داده ای خاص از ورودی از فرآیند های جاری طراحی شده اند TPS می تواند به صورت دستی با ورود اطلاعات با تایپ کردن باشد یا به صورت اتوماتیک مثلا با استفاده از بارکدخوان جهت دریافت ورودی باشد.

Batch processing
یک TPS در حالت پردازش دسته ای مجموعه داده های یک روز یا یک شیفت و یا در بازه ای مشخص را دریافت نموده و پس از پردازش داده های ذخیره شده را بروزرسانی میکند.

Real-time processing
پردازش بلادرنگ یا برخط Online Transaction processing (OLTP) هر یک از تراکنش ها را در زمان وقوع آن پردازش میکند برای پردازش بلادرنگ می بایست دستگاه ورودی یا وبسایت از طریق شبکه به TPS متصل باشد.

MIS
هر یک از سیستم های اقتصادی، حسابداری، بیمارستانی و … سیستم های اطلاعاتی مخصوص به خود را دارند. به صورت کلی به سیستم های اطلاعاتی با کاربرد عمومی (general purpose) اصطلاحا MIS یا management information system گفته می شود.

DSS
سیستم های تصمیم یار (Decision Support System) برنامه هایی تعاملی هستند که برای کمک کردن به تصمیم گیری استفاده می شوند. و می توانند تصمیمات ساده برای یک کاربر یا تصمیمات پیچیده مربوط به چندین کاربر را پشتیبانی کنند و برای مواردی از قبیل تصمیم گیری راجع به خرید یا فروش یا برون سپاری پروژه … استفاده می تواند شود. این سیستم ها از تصمیمات ساخت یافته و یا غیرساخت یافته پشتیبانی میکنند.

تصمیمات ساخت یافته
تصمیماتی هستند که به صورت مشخص و روزمره گرفته می شوند و سیستم اطلاعاتی می تواند تضمین کند که آنها به صورت سازگار تصمیم گیری شوند.

تصمیمات غیرساخت یافته
تصمیماتی هستند که علاوه بر داده ها و اطلاعات به هوش انسانی، تجربه و دانش بستگی دارند.

ویژگی های تعریف کننده یک سیستم تصمیم یار
۱- رابط کاربری ساده و تعاملی
۲- مدل ها و فرمول هایی برای عملیات هایی نظیر تحلیل حساسیت، تحلیل what-if ، جستجوی هدف، و تحلیل ریسک
۳- پشتیبانی از داده هایی از چندین منبع مختلف داخلی یا خارجی علاوه بر داده های تصمیم گیرنده

Data center
مراکز داده مجموعه ای از سرور ها به صورت شبکه بوده که برای ذخیره سازی، پردازش، مدیریت و آرشیو نمودن داده های سازمان استفاده می شوند. همچنین به محل نگهداری سرور ها و تجهیزات نیز مرکز داده گفته می شود.

تفاوت ابر و مرکز داده
ابر سرویسی است که داده های سازمان و خدمات از طریق اینترنت در دسترس بوده درحالی که مرکز داده مجموعه سرور هایی است که داده ها را درون شبکه خود سازمان نگهداری میکنند.

Virtual Machine
ماشین مجازی یک کامپیوتر مجازی بوده که توسط یک لایه نرم افزاری به نام لایه شبیه سازی virtualization layer ایجاد شده است. ماشین مجازی دقیقا مشابه یک کامپیوتر واقعی عمل کرده و دارای پردازنده و حافظه و … مجازی مخصوص به خود است.

Software as a service (SaaS)
ارائه دهنده سرویس در این حالت برنامه را در دیتاسنتر خود میزبانی نموده و استفاده کنندگان و کاربران از طریق واسطی استاندارد مانند مرورگر وب به آن دسترسی دارند.

Platform as a service (PaaS)
یک پلتفرم استاندارد جهت توسعه ، تست و استقرار یک نرم افزار را ارائه می دهد.

Infrastructure as a service (IaaS)
ارائه زیرساخت به عنوان سرویس این امکان را فراهم می سازد تا شرکت ها به جای خرید سرور ها و ایجاد مراکز داده توان پردازشی مورد نیاز خود را بر اساس نیازمندی های خود از فضای ابری تهیه نمایند.

Data as a Service
امکان به اشتراک گذاری داده ها در ابر و بین کاربران فارغ از توجه به منبع ارائه دهنده داده ها یا محل ذخیره سازی آنها می باشد

فصل سوم

Centralized database
پیگاه داده متمرکز داده ها را در یک محل نگهداری نموده که از همه جا دردسترس می باشد. جستجو در این حالت می تواند سریع انجام شود زیرا موتور جستجو نیاز به بررسی داده ها در محل های مختلف توزیع شده ندارد.

Data warehouse
Data warehouse داده ها را از پایگاه داده های مختلف تجمیع میکند و به انبار داده در سطح یک سازمان Enterprise data warehouse (EDR) می گویند.
Decision model
یک مدل تصمیم ارتباط بین متغیر ها را قابل اندازه گیری میکند و منجر به کاهش عدم قطعیت می شود.

Database
مجموعه ای از دیتاست ها و رکورد ها بوده که به صورت سیستمی ذخیره می شوند. داده های درون دیتابیس ها معمولا Volatile هستند به این معنی که به صورت مکرر تغییر پیدا می کنند.

Data mart
Data mart ها در سطحی کوچک تر از data warehouse قرار داشته و اطلاعات مربوط به یک عملکرد یا دپارتمان را نگهداری میکند و برای سازمان های کوچک نسبت به data warehouse از لحاظ پیاده سازی بصرفه تر است.

Business Intelligence
به ابزار و فرایند های تحلیل آماری داده ها برای کشف بصیرت و بینش گفته می شود که عبارت است از یافتن ارتباطات با معنی بین داده ها، درجریان بودن به صورت بلادرنگ و شناسایی موقعیت ها و ریسک ها.

Database management system (DBMS)
نرم افزارهایی برای مدیریت افزودن، بروزرسانی و حذف داده ها هنگام وقوع تراکنش ها می باشند که از ایجاد گزارش و پرسجو پشتیبانی میکنند.

Relational DBMS
از زبان های توصیفی مانند SQL (زبان پرس و جوی استاندارد) برای دسترسی به داده ها استفاده می کنند که در این زبان ها تنها داده های مورد نیاز مشخص شده و نحوه دسترسی به آنها برای کاربر اهمیتی ندارد.

فعالیت های یک DBMS
۱- فیلتر کردن داده ها و توصیف آنها: پردازش و دخیره بهینه داده ها.
۲- نگهداری و حفظ جامعیت داده ها: تصحیح، استاندارد سازی و تست کردن جامعیت و یکپارچگی داده ها
۳- هماهنگسازی داده ها (data synchronization): تجمیع و ارتباط داده ها در منابع مختلف
۴- امنیت داده ها
۵- دسترسی به داده ها

Data latency
به مدت زمانی که از درج یک داده در پایگاه داده تا زمانی که آن داده برای کوئری یا گزارش در دسترس باشد تاخیر گفته می شود.

Online transaction processing (OLTP) systems
سیستم هایی هستند که برای پردازش تراکنش هایی که با تغییرات زیاد همراه هستند ایجاد شده و می توانند میلیون ها تراکنش را در ثانیه پردازش کنند.

Online analytic processing (OLAP) system
OLAP عبارتی است که برای توصیف تحلیل پیچیده داده های یک انبار داده استفاده می شود.

مزایای دیتابیس متمرکز
۱- کنترل بهتر روی کیفیت داده ها
۲- امنیت بیشتر داده ها
نقطه ضعف بزرگ این نوع دیتابیس تاخیر انتقال است.

پایگاه داده توزیع شده
به برنامه های کامیوتر و موبایل اجازه می دهد از داده های محلی و داده های راه دور استفاده نمایند.

Operating margin
سود خالص عبارت است از درصدی از درآمد باقی مانده برای شرکت پس از پرداخت هزینه های متغیر نظیر تامین مواد اولیه و…
هرچه این مقدار افزایش یابد بهتر بوده و به این معنی است که درآمد بیشتری از فروش بدست می آورد.

ETL
به فرایند های Extract Transform Load شامل استخراج داده ها و سپس تبدیل آنها به داده های تمیز و ذخیره در انبار داده ها اجرا شده گفته می شود

Active data warehouse (ADW)
ذخیره سازی داده ها در انبار داده به صورت بلادرنگ جهت پردازش ها تعاملات مشتریان به صورت بلادرنگ گفته می شود که نیازمند توان محاسباتی و ذخیره سازی زیادی می باشد

Business record
هر سازمان رکورد هایی را نگهداری می کند که عبارتند از اسنادی که یک رویداد تجاری مانند قرارداد، تحقیق و توسعه، فعالیت یا تصمیم یا یک تراکنش را نشان می دهد

Electronic record management (ERM)
این سیستم ها شامل سخت افزار و نرم افزاری جهت مدیریت و آرشیو کردن رکورد های الکترونیکی و تصاویر اسناد کاغذی بوده که سپس شاخص گذاری (index) شده و بر اساس سیاست های سازمان نگهداری می شوند.

فصل چهارم

IP
روشی است که داده ها توسط آن در شبکه از یک دستگاه به دستگاه دیگر ارسال می شود.

IP Address:
همانند شماره تلفن هر دستگاه در شبکه نیز دارای یک آدرس منحصر به فرد باشد

IPv4
این نوع آدرس حدود ۳ دهه از استفاده اش می گذرد و شامل ۴ گروه ۴ رقمی بوده که می تواند تا ۲ به توان ۳۲ دستگاه را آدرس دهی نماید و هم اکنون به مرز محدودیت تعداد آدرس خود رسیده است.

IPv6
نسل جدید آدرس دهی بوده که از ۱۲۸ بیت برای ادرس دهی استفاده می نماید و می تواند ۲ به توان ۱۲۸ دستگاه را آدرس دهی کند. همچنین کیفیت سرویس بهتر مورد نیاز برای ویدیو ها و بازی های تعاملی ایجاد می کند.

Bandwidth
ظرفیت یا میزان توان عملیاتی بر ثانیه یک شبکه می باشد.

Voice over IP (VoIP)
به انتقال صوت از طریق شبکه دیجیتالی با تبدیل کردن سیسگنال صوتی به سیگنال های دیجیتال ارسال شده از طریق بسته روی شبکه گفته می شود.

Switch – router
دستگاه هایی که بسته ها را از سورس ورودی خود با توجه به آدرس IP به سمت مقصد هدایت می کنند.

Circuit switching
در این حالت یک خط ارتباطی اختصاصی بین مبدا و مقصد ایجاد می شود مانند شبکه تلفن قدیم

Packet switching
در اینجا داده ها و صدا از طریق بسته هایی ارسال می شوند که هر یک دارای شماره خاص بوده و به صورت مجزا مسیریابی و ارسال می شود.

Prioritize traffic
داده ها و برنامه هایی که نسبت به تاخیر زمانی حساس هستند مانند صوت و فیلم

Throttle traffic
به داده های با اولویت کمتر گفته می شوند برای اولویت دادن به داده های حساس می بایست اولویت داده های دیگر کاسته شود.

Net neutrality
مفهومی است که ارائه دهندگان اینترنت تنظیم کنندگان با تمامی ترافیک اینترنت به صورت یکسان رفتار می کنند نقطه مقابل آن اولویت دادن به بخشی از ترافیک نسبت به بخش دیگر است.

Protocol
مجموعه قوانین و استاندارد هایی هست که دستگاه ها را در تبادل داده در شبکه راهبری می کند

TCP/IP
پروتکل کنترل انتقال / پروتکل اینترنت این دو پایه های اصلی شبکه اینترنت می باشند و توسط اکثر سیستم عامل ها پشتیبانی می شوند.
Fixed-line broadband: بیانگر اینترنت های کابلی یا DSL می باشد
Mobile broadband: بیانگر انواع مختلف ارتباطات بی سیم از طریق مودم های portable یا تلفن یا سایر دستگاه ها می باشد
۳G: نسل سوم ارتباطات و برقرار کننده اتصال در فاصله زمانی بیشتر و با سرعت بالاتر نسبت به ۱G و ۲G بوده که دلیل آن استفاده از ارتباطات ماهواره ای و دکل های مخابراتی می باشد.

۴G: استاندارد شبکه موبایل ۴G موجب نرخ انتقال بیشتر شده و یک شبکه دیجیتالی با استفاده از IP می باشد.

ARPA net: اولین شبکه واقعی بود که از packet switching استفاده کرد وهدف آن ارائه خط ارتباطی در صورت وقوع جنگ یا از بین رفتن خطوط ارتباطی معمولی بوده است.

WiMAX تکنولوژی ارتباطی بر اساس استاندارد IEEE 802.16 بوده که ارتباط در فاصله ۵۰ کیلومتر و سرعت تا ۷۰ مگابیت بر ثانیه را برقرار ساخته و نیازمند دید مستقیم بین فرستنده و گیرنده می باشد.
Mashup یک اصطلاح عمومی برای بیان ترکیب و اجتماع دو یا تعداد بیشتری تکنولوژی مختلف می باشد.

Application program interface (API)
API یک راه استاندارد برای تعامل بین موجودیت های مختلف مانند نرم افزارها ، محتوا و وب سایت ها با یکدیگر بدون نیاز به برنامه نویسی پیچیده فراهم می سازد.

Bluetooth: تکنولوژی ارتباطی با برد کوتاه حداکثر تا ۱۰۰ متر برای اتصال دستگاه ها که اصطلاحا pairing گفته می شود.

Wi-Fi: روش استاندارد برای اتصال دستگاه ها به شبکه های بی سیم
فصل پنجم

Malware
بد افزار هایی که کد آنها منجر به قطعی، خرابی یا سایر فعالیت های خرابکارانه در سیستم می شود.

BlackPOS
یک بد افزار طراحی شده برای ذخیره سازی و سرقت اطلاعات کارت اعتباری مشتریان از طریق دستگاه POS می باشد.

distributed denial-of service (DDoS)
حمله ای که توسط آن یک شبکه یا وب سایت با ترافیک زیاد بمباران می شود که منجر به ازکار افتادن آن یا آسیب پذیر ساختن آن به سایر تهدیدات می شود.

Hactivist
فرم کوتاه شده ی hacker activist بوده و به فردی گفته می شود که هک کردن را برای دلایل خاص (معمولا خوب) انجام می دهد. هک کردن به هر دلیلی جرم محسوب می شود.

Critical infrastructure
سیستم ها یا منابعی که از بین رفتن آنها یا مختل شدنشان منجر به خسارت های زیادی روی اقتصاد، امنیت و سلامت عمومی و… میگذارد.

bring your own device (BYOD)
این مفهوم به معنی استفاده کارکنان سازمان از وسایل شخصی خود به دلایلی همچون قدرتمند تر بودن رایانه شخصی از رایانه های سازمان و یا قابلیت جابجایی آنها می باشد.

Threat: شی یا فردی که ممکن است به منابع آسیب برساند
Risk: احتمال اینکه یک threat با استفاده از یک آسیب پذیری نفوذ کند.

Vulnerability:
آسیب پذیری به نقطه ضعفی گفته می شود که محرمانگی، جامعیت یا در دسترس بودن اطلاعات را به خطر می اندازد.

Exploit: ابزار یا روشی که از یک آسیب پذیری بهره برداری می کند.
Risk management: فرآیند شناسایی، ارزیابی و کاهش ریسک تا حد قابل قبول
Exposure: تخمین هزینه ها و خسارات در صورت نفوذ از طریق یک آسیب پذیری

Phishing:
در این نوع حملات با وانمود کردن اینکه یک سازمان قانونی هستند اقدام به سرقت اطلاعات می کنند.

برنامه مدیریت پروژه تحت وب

در جستجو ها به یک سیستم مدیریت پروژه تحت وب برخورد کردم که ممکن است برای شما نیز مفید باشد برای همین در این پست به معرفی این سیستم می پردازم

این سیستم که کیودی پی ام نام دارد برنامه ای تحت وب بوده که با پی اچ پی نوشته شده و از دیتابیس مای اسکیوال استفاده میکند و شما در این برنامه امکان تعریف گروه های مختلف کاری ، و کاربران مختلف و تعریف پروژه و تعیین وظایف مربوط به هر پروژه را دارا می باشید و از ویژگی های خوب این سیستم پشتیبانی از زبان فارسی برای پنل کاربری می باشد برای دانلود و اطلاعات بیشتر می توانید به سایت زیر مراجعه نمایید

http://qdpm.net/

خلاصه درس آزمایشگاه سیستم عامل

سطوح اجرایی در لینوکس

صفر: سیستم خاموش می شود | یک : تک کاربره فقط admin وارد میشود | دو: چند کاربره بدون شبکه

سه : چند کاربره با شبکه | چهار : بدون استفاده | پنج : حالت گرافیکی سیستم عامل | شش: restart

شماره سطح init

سرویس هایی که باید در هر سطح اجرا شوند در فایل etc/inittab قرار دارند و هنگام boot شدن از آن استفاده می شود.

فایل سیستم لینوکس

دایرکتوری ریشه در لینوکس با / نشان داده شده و تمامی مسیر ها در این دایرکتوری قرار دارند.

مسیر خانگی کاربر با ~ نشان داده می شود و معمولا آدرسی مشابه با /home/username دارد.

کاربر جاری در خط فرمان به صورت زیر نشان داده میشود:

[Username @ DomainName CurDir ]$

در الگوی بالا Username نام کاربر ، DomainName نام دامنه در صورتی که کامپیوتر عضو دامنه ای در شبکه باشد و یا اینکه localhost نشان داده میشود بعد از آن مسیر جاری که در آن قرار داریم نشان داده میشود و علامت $ نشان میدهد که کاربر عادی بوده و دسترسی root را ندارد ، در صورت داشتن دسترسی مدیریتی با علامت # مشخص میشود.

دستورات لینوکس :

۱- Man

برای نمایش راهنمای هر یک از دستورات لینوکس کافی است در ترمینال بنویسیم :   نام دستور man

به عنوان مثال برای اینکه بدانیم دستور mkdir چه کاری انجام میدهد مینویسیم : man mkdir

۲- ls

لیست فایل ها و دایرکتوری های موجود در یک مسیر را نشان میدهد.

پارامتر -a برای نشان دادن فایل های مخفی استفاده شده و -۱ برای نمایش در یک ستون استفاده میشود.

۳= cd

برای تغییر مسیر به داخل یک پوشه یا مسیر دیگر است به این صورت که نام پوشه یا مسیر کامل را در جلوی عبارت cd مینویسیم مثلا : cd /home/.

۴- mkdir

این دستور در مسیر جاری یک پوشه جدید درست میکند کافیست نام پوشه را جلوی دستور بنویسیم.

۵- rm

برای حذف کردن فایل یا دایرکتوری استفاده شده و پارامتر -r باعث میشود تا تمامی فایل ها و پوشه ها به صورت بازگشتی حذف گردند.

۶- دستورات cp و mv برای کپی کردن و جابه جا کردن فایل استفاده شده و ورودی اول آنها مسیر مبدا و ورودی دوم مسیر مقصد است.

۷- cat برای نمایش محتویات یک فایل استفاده شده و برای اینکه بخواهیم با آن یک فایل ایجاد کرده و محتویاتی در آن بنویسیم به صورت cat > esmefile استفاده میشود.

۸- تغییر خروجی استاندارد : برای اینکه خروجی دستور در فایل ذخیره شود از علامت > استفاده شده و برای اضافه کردن به انتهای فایل موجود از << استفاده میشود.

۹- پایپ : با استفاده از علامت | میتوان خروجی یک دستور را به دستور دیگر منتقل کرد به عنوان مثال :

ls -1 /bin/ | less ( دستور less برای نمایش محتوای طولانی استفاده شده و با با زدن کلید enter ادامه مطلب را نشان میدهد.

۱۰- find برای پیدا کردن یک فایل با شرایط خاص استفاده میشود به عنوان مثلا find -name “example” به دنبال فایلی با نام example گشته و در صورت پیدا کردن مسیر آن را نشان میدهد.

۱۱- grep : برای جستجو در محتویات فایل یا خروجی دستور استفاده میشود.

پارامتر -i برای جستجو با شرط حساس نبودن به حروف استفاده میشود. مثلا : ls /etc/ | grep init تمام فایل هایی که در مسیر /etc/ بوده و در نام آنها init وجود دارد را نشان میدهد.

۱۲= chmod برای تغییر دسترسی های فایل یا دایرکتوری استفاده میشود مثلا :

Chmod 700 file

در این صورت کاربر دسترسی اجرا ، خواندن و نوشتن را برای file دارد.

نحوه محاسبه دسترسی به صورت زیر است :

این دسرسی با یک عدد سه رقمی مشخص شده رقم اول از سمت چپ دسترسی صاحب فایل ، عدد دوم دسترسی اعضای گروه و عدد سوم دسترسی دیگران را مشخص میکند

هر یک از رقم ها از مجموع اعداد زیر ایجاد میشوند.

۱- اجرا ۲- نوشتن ۴- خواندن مثلا دسترسی اجرا و نوشتن میشود ۲+۱ که معادل ۳ است و دسترسی خواندن و اجرا میشود ۵

۱۳- who این دستور لیست تمام کاربرانی که الان به سیستم لاگین کردند را نشان می دهد.

۱۴- دستور su برای تغییر کاربر استفاده میشود مثلا su root

۱۵- whatis این دستور یک توضیح کوتاه درباره کاربرد دستورات لینوکس میدهد.

۱۶- دستور read برای دریافت ورودی از کاربر استفاده میشود و با پارامتر -p میتوان یک پیام را قبل از دریافت مقدار از ورودی به کاربر نشان داد مثلا دستور زیر به کاربر میگوید یک عدد وارد کند و مقدار آن را خوانده و در متغیر x قرار میدهد.

read -p ” Enter a number : ” x

۱۷- ps پردازش های درحال اجرا را نشان داده و با پارامتر -a برای تمام کاربران را نشان میدهد.

۱۸- top پردازش ها را بر اساس مصرف cpu به صورت نزولی نشان میدهد.

۱۹- clear صفحه را پاک میکند

۲۰- uptime مدت زمان روشن بودن سیستم و تعداد کاربران لاگین کرده و load سیستم را نشان میدهد.

۲۱- du میزان حجم استفاده شده توسط فایل یا پوشه را نشان میدهد و با پارامتر -h آن را به صورت قابل فهم نشان خواهد داد.

۲۲- head خطوط ابتدایی فایل را نشان میدهد مثلا head -n 7 file.txt هفت سطر اول فایل file.txt را نشان میدهد.

۲۳- tail محتوای انتهای فایل را نشان میدهد.

۲۴- last آخرین کاربرانی که لاگین کردن و زمان آن را نشان میدهد و lastb آخرین کاربرانی که لاگین بد داشتند را نشان میدهد.

۲۵- stat مشخصات یک فایل مانند زمان ایجاد ، زمان تغییر و … را نشان میدهد.

۲۶- wc برای شمارش تعداد کلمات (-w) ، سطر ( -l) و حروف (-c) استفاده میشود.

۲۷- دستور cut برای جدا کردن قسمتی از یک متن استفاده میشود پارامتر -d مشخص میکند که فیلد ها با چه کارکتری از هم جدا شده باشند ممکن است در متن فیلد ها با فاصله یا , یا : از هم جدا شده باشند و پارامتر -f شماره ستون یا فیلد مورد نظر را نشان میدهد.

۲۸- دستور service –status-all وضعیت تمامی سرویس ها را نشان میدهد.

۲۹- دستور chkconfig وضعیت سرویس ها را در سطوح جاری نشان میدهد و با پارامتر -list لیست آنها نشان داده میشود.

۳۰- دستور mail برای ارسال نامه استفاده شده و -s عنوان نامه را مشخص کرده و -a برای پیوست فایل استفاده میشود.

ویرایش فایل در لینوکس

برای ویرایش فایل در محیط لینوکس میتوان از ویرایشگر های متنی vi یا nano استفاده کرد اما در محیط گرافیکی یک برنامه ساده برای ویرایش گرافیکی متن وجود دارد که با استفاده از آن به راحتی میتوان اسکریپت های خود را ایجاد و ذخیره نمود کافیست در ترمینال بنویسید gedit filename یا اینکه از طریق رابط گرافیکی فایل متنی ایجاد کرده و با راست کلیک کردن آن را با gedit باز نمایید.

مدیریت کاربران

برای هر کاربر در فایل /etc/passwd یک سطر وجود دارد که به ترتیب از چپ به راست بیانگر نام کاربر ، رمز عبور ، شماره کاربر ، شماره گروه ، توضیحات ، آدرس مسیر خانگی و پوسته پیشفرض کاربر را نشان میدهد.

در فایل /etc/shadow اطلاعات رمز عبور کاربر مشخص شده و در هر سطر به ترتیب نام کاربری ، رمز عبور ، آخرین تغییر ، حداقل روز که کاربر مجاز به تغییر رمز نیست ، حداکثر مدتی که کاربر میتواند رمز را تغییر ندهد، تعداد روز هشدار قبل از مدت تغییر رمز عبور ، زمان مجاز به ورود به سیستم بعد از تغییر ندادن رمز عبور و در آخر زمان تعیین شده برای غیر فعال کردن کاربر می باشد.

شبکه

۱- ifconfig اطلاعات مربوط به شبکه مانند آدرس IP ، آدرس کارت شبکه Mac

۲- ping برای تست کردن اتصال به یک کامپیوتر و ارسال و دریافت بسته ها از شبکه میباشد پارامتر -c تعداد بسته ارسالی را مشخص میکند.

۳- netstat گزارش ارتباطات شبکه را نشان میدهد.

۴- arp آدرس IP و کارت شبکه کامپیوتر های متصل به شبکه ما را نشان میدهد.

۵- traceroute تعداد گره ها و زمان تاخیر دسترسی به آنها را بین ما و کامپیوتر مقصد مشخص میکند.

۶- wget برای دریافت محتوا از وب به کار میرود

 

بررسي عملكرد و وي‍ژگي هاي موتور ذخيره سازي InnoDB

بررسي عملكرد و وي‍ژگي هاي موتور ذخيره سازي InnoDB

درس اصول طراحي پايگاه داده ها

كامران محمودي ، دانشگاه صنعتی خواجه نصیرالدین طوسی

معرفي موتور ذخيره سازي اینودی‌بی
اینودی‌بی یک موتورذخیره ‌سازی برای مای اس‌کیوال است که درنسخه ۵٫۵ به بالای آن بصورت پیشفرض مورد استفاده قرارگرفته است. این موتور ویژگی‌های استانداردACIDرا به همراه پشتیبانی ازکلید خارجی (Foreign Key) ارائه می‌کند. این موتور به صورت استاندارد در تمام توزیع‌های باینری ارائه شده توسط مای‌اس‌کیوال ای‌بی (MySQL AB) به جز در برخی از نسخه‌هایOEMوجود دارد.

پس ازخریداری InnobaseOyتوسط شرکت اوراکل در سال ۲۰۰۵،اینودیبی به عنوان یک محصول شرکت اوراکل شناخته مي شد. این برنامه دارای دو مجوز می‌باشد. این برنامه تحت پروانه عمومی همگانی گنو توزیع شده است همچنین برای افرا ی که قصددارند از آن در برنامه‌های مالکیتی استفاده کنند مجوزصادرمی‌شود.
ويژگي هاي اصلي اینودی‌بی
•    عمليات هاي تغيير داده DML در اینودی‌بی بر اساس مدل ACID كار ميكند و تراكنش هاي آن از عمل هاي commit (اعمال تغييرات) ،‌rollback (بازگشت به عقب) و crash-recovery (بازيابي خطا) پشتيباني مي كنند.
•    قفل گذاري سطر ها و شيوه خواندن سازگار به سبك اوراكل باعث افزايش سازگاري و عملكرد در حالت چند كاربري شده است.
•    اینودی‌بی جدول ها را به گونه اي در ديسك ذخيره مي كند تا جستجو بر اساس كليد اصلي به صورت بهينه انجام شود.
•    براي حفظ جامعيت داده ها ،‌ اینودی‌بی از محدوديت هاي كليد خارجي پشتيباني ميكند و تمام اعمال بروزرساني ،‌درج و يا حذف قبل از اعمال شدن بررسي مي شوند تا موجب بروز ناسازگاري در جدول هاي مختلف نشوند.
•    مي توان جدول هاي اینودی‌بی را با جدول هاي ساير موتور هاي ذخيره سازي حتي در يك دستور تركيب نمود.
•    اینودی‌بی براي استفاده بهينه از پردازنده هنگام پردازش داده هاي بزرگ طراحي شده است.

ماي اسكيوال و مدل ACID
مدل ACID مجموعه اي از مفاهيم و قواعد طراحي است كه بر قابليت اطمينان در ذخيره داده هاي تجاري و برنامه هاي با كاربرد حياتي تاكيد دارد.
ماي اسكيوال شامل قطعات مختلفي مانند موتور ذخيره سازي اینودی‌بی است كه كه بسيار به مدل ACID سازگار هستند كه موجب مي شود تا داده ها در مواردي مانند استثنائي مانند خطاي نرم افزاري و مشكلات سخت افزاري ازبين نروند. زماني كه از ويژگي هاي مدل ACID استفاده مي شود ديگر نياز به طراحي مجدد چرخه ي بررسي سازگاري داده ها و مكانيزم هاي بازيابي خطا وجود ندارد. همچنين در مواردي كه سازگاري داده ها يا ازبين رفتن بخش اندكي از داده ها براي سيستم اهميت زيادي نداشته باشد مي توان از برخي از ويژگي هاي ACID جهت كارايي بيشتر چشم پوشي نمود.
بخش هاي زير به نحوه برخورد ويژگي هاي ماي اسكيوال و به طور خاص موتور ذخيره سازي اینودی‌بی با دسته بندي هاي مدل ACID مي پردازد.
اتمي بودن
جنبه اتمي بودن مدل ACID بيشتر به تراكنش هاي اینودی‌بی مرتبط است. ويژگي هاي مرتبط ماي اسكيوال عبارتند از :
•    تنظيمات اعمال خودكار (autocommit)
•    دستور اعمال (commit)
•    دستور بازگشت به عقب (rollback)
سازگاري
اين جنبه بيشتر به فرآيند هاي داخلي اینودی‌بی بستگي دارد تا از تداخل داده ها جلوگيري كند . ويژگي هاي مرتبط ماي اسكيوال عبارتند از :
•    بافر doublewrite در اینودی‌بی
•    بازيابي خطا در اینودی‌بی

ايزوله سازي
اين جنبه به طور اصلي به تراكنش هاي اینودی‌بی مربوط مي شود كه به صورت خاص بيانگر سطح ايزوله سازي در تراكنش ها مي باشد. ويژگي هاي مرتبط ماي اسكيوال عبارتند از :
•    تنظيمات اعمال خودكار (autocommit)
•    دستور SET ISOLATION LEVEL
•    جزئيات سطح پايين قفل گذاري در اینودی‌بی ،‌اين تنظيمات در جدول Information_schemaمشاهده مي شوند.
با دوامي
جنبه دوام در مدل ACID شامل تنظيمات ويژگي هاي نرم افزاري ماي اسكيوال مي شود كه به طور خاص با سخت افزار شما در تعامل هستند. به دليل تفاوت هاي زياد در پردازنده ها ،‌ ابزار شبكه و رسانه ذخيره سازي اين قسمت براي ارائه راهنمايي و اطلاعات دقيق دشوار است. ويژگي هاي مرتبط ماي اسكيوال عبارتند از :
•    وضعيت بافر doublewrite در اینودی‌بی كه توسط گزينه innodb_doublewriteتنظيم مي شود.
•    گزينه پيكربندي innodb_flush_log_at_trx_commit
•    گزينه پيكربندي sync_binlog
•    گزينه پيكربندي innodb_file_per_table
•    نوشتن بافر در يك رسانه ذخيره سازي مانند دسيك ،‌SSD يا RAID.
•    كش با پشتيباني باتري در دستگاه ذخيره سازي
•    پشتيباني از فراخوان سيستمي fsync()
•    منبع تغزيه بدون وقفه UPS بايد از تمام سيستم هاي سرور و دستگاه هاي ذخيره سازي داده ها پشتيباني كند.
•    استراتژي تهيه نسخه پشتيبان مانند تعداد و دفعات تكرار تهيه نسخه پشتيبان

مدل تراكنش ها و قفل گذاري
به جهت پياده سازي يك برنامه پايگاه داده اي در سطح بزرگ و با ترافيك بالا و قابليت اطمينان زياد و براي ورود يك كد جايگزين از يك سيستم پايگاه داده اي ديگر و همچنين براي افزايش كارايي ماي اسكيوال بايد با جزئيات تراكنش ها و قفل گذاري كه مربوط به اینودی‌بی مي شوند آشنا شويد.
هدف مدل تراكنش اینودی‌بی اين است تا ويژگي جديد چند نسخه اي را با ويژگي سنتي قفلگذاري دو مرحله اي تركيب كند. اینودی‌بي سطر ها را قفل گذاري ميكند و سپس پرس و جو ها را به صورت عمليات خواندن سازگار به شيوه اوراكل و به طور پيشفرض انجام ميدهد. اطلاعات مربوط به قفل ها به صورت بهينه ذخيره شده اند و نياز به اينكپسوله كردن آنها نمي باشد. معمولا چند كاربر به طور همزمان مي توانند يك سطر يا مجموعه اي از سطر ها را در اینودی‌بی قفلگذاري كنند بدون اينكه دچار مشكل حافظه شود.
در اینودی‌بي تمام فعاليت هاي يك كاربر در قالب يك تراكنش انجام مي شود و در صورتي كه گزينه ي autocommit فعال باشد هر دستور در قالب يك تراكنش جداگانه انجام مي شود. به طور پيشفرض ماي اسكيوال هر نشست را با گزينه autocommit فعال ايجاد ميكند و بدين ترتيب بعد از اجراي هر دستور اگر با خطا مواجه نشود  تغييرات اعمال مي شوند و در صورتي كه با خطا مواجه شود نحوه اعمال و يا بازگشت به عقب به نوع خطا بستگي داد. يك نشست كه autocommit براي آن فعال باشد مي تواند يك تراكنش چند دستوري را به وسيله شروع كردن آن با start_transaction يا begin و خاتمه ي آن با commit يا rollback انجام دهد.
در صورتي كه براي يك نشست autocommit فعال نباشد آن نشست هميشه داراي يك تراكنش باز بوده و با اجراي دستور commit يا rollback آن تراكنش بسته شده و يك تراكنش جديد ايجاد مي شود.
دستور commitبه اين معني است كه تغييرات اعمال شده توسط يك تراكنش به صورت دائمي اعمال مي شوند و براي ساير نشست ها قابل مشاهده خواهند بود.
از جهت ديگر دستور rollback بدين معني است كه تغييرات اعمال نخواهند شد و همه تغييرات تراكنش جاري لغو مي شوند.
با اجراي هريك از دستوراتcommit و rollback تمام قفل هاي اعمال شده توسط تراكنش آزاد مي شوند.

بنا به تعريف سطوح ايزوله سازي در ماياسكيوال ۱۹۹۲ سطح پيشفرض در اینودی‌بي برابر REPEATEABLE_READميباشد. همچنين اینودی‌بي تمام چهار سطح پيشنهاد شده( READ_UNCOMMITED ، READCOMMITED ،‌ REPEATEABLE_READ و SERIALIZABLE. ) توسط استاندارد ماي اسكيوال را ارائه مي دهد.
كاربر مي تواند سطح ايزوله سازي يك تراكنش يا تراكنش هاي آتي را با استفاده از دستور SETTRANSACTION  تعيين نمايد. براي تغيير دادن سطح ايزوله سازي سرور بايد از دستور –transaction-isolation در خط فرمان يا فايل پيكربندي استفاده نمود.
در سطح قفلگذاري سطر ها اینودی‌بي معمولا از روش قفل گذاري next-key استفاده مي كند. اين بدين معني است كه اینودی‌بي علاوه بر ركورد هاي شاخص مي تواند فضاي خالي قبل از آنها را نيز قفل گذاري نمايد تا از عمليات درج كه ممكن است توسط نشست هاي ديگر درآن فضا انجام شود جلوگيري نمايد.
يك قفل next-key بدين معني است كه يك ركورد شاخص و فضاي خالي قبل از آن قفل گذاري مي شود.
يك قفل gap به قفلي گفته مي شود كه فقط فضاي خالي بين ركورد ها را قفلگذاري ميكند.

حالت هاي قفل در اینودی‌بي
اینودی‌بي قفل گذاري سطري استاندارد را     پياده سازي ميكند كه شامل دو نوع قفل اشتراكي slock و انحصاري xlock مي باشد.
•    يك قفل اشتراكي به تراكنش دارنده آن اجازه مي دهد يك سطر را بخواند.
•    يك قفل انحصاري به تراكنش دارنده آن اجازه مي دهد يك سطر را بروز رساني يا حذف نمايد.
اگر تراكنشي مانند T1 يك قفل اشتراكي مانند s را روي سطري مانند r داشته باشد آنگاه درخواست هاي تراكنش T2براي قفل روي سطر r به صورت زير پاسخ داده مي شود:
•    درخواست T2براي يك قفل اشتراكي slock بلافاصله مي تواند انجام شود و در نتيجه هر دو تراكنش T1و T2داراي يك قفل از نوع s روي سطر r خواهند بود.
•    درخواست T2براي قفل انحصاري xlock نمي تواند بلافاصله پاسخ داده شود.
اگر تراكنشي مانند T1 يك قفل انحصاري xlock روي سطري مانند r داشته باشد ديگر درخواست تراكنشي مانند T2 براي هريك از انواع قفل چه اشتراكي و يا انحصاري نمي تواند بلافاصله پاسخ داده شود و تراكنش T2 بايد منتظر بماند تا تراكنش T1 قفل را رها نمايد.
قفل هاي قصد Intention lock
به علاوه اینودی‌بي از قفلگذاري چند تكه اي multiple granularity lockingپشتيباني ميكند كه باعث ميشوند قفل ها را بتوان علاوه بر سطر ها روي جدول ها نيز اعمال نمود. براي عملي ساختن اين نوع قفل نوع ديگري از قفل ها به نام قفل قصد ilock استفاده مي شوند. قفل هاي قصد يك نوع قفل روي جدول هستند كه مشخص مي سازند كه تراكنش در آينده چه نوع قفل هايي را روي سطر هاي جدول درخواست ميكند. دو نوع قفل قصد در اینودی‌بي استفاده شده اند فرض شود كه يك تراكنش مانند T درخواست يك قفل از نوع مشخص را روي جدول t دارد:
•    قصد اشتراكي IS : تراكنش T قصد دارد قفل هاي اشتراكي S را روي سطر هاي جدول t قراردهد.
•    قصد انحصاري IX : تراكنش T قصد دارد قفل هاي انحصاري X را روي سطر هاي جدول t قراردهد.

پروتكل قفل قصد بدين صورت است :
•    قبل از اينكه تراكنش T بتواند قفل اشتراكي S را روي سطر هاي جدولt اعمال كند بايد اول قفلي از نوع IS يا قوي تر را روي جدول ايجاد كرده باشد.
•    قبل از اينكه تراكنش T بتواند قفل انحصاري X را روي سطر هاي جدول t اعمال كند بايد اول قفلي از نوع IX را روي جدول ايجاد كند.
اين قوانين مي تواند در جدول سازگاري قفل هاي زير خلاصه شود.
X    IX    S    IS
X    تداخل    تداخل    تداخل    تداخل
IX    تداخل    سازگار    تداخل    سازگار
S    تداخل    تداخل    سازگار    سازگار
IS    تداخل    سازگار    سازگار    سازگار

يك قفل به تراكنش درخواست كننده اعطا مي شود اگر با ساير قفل هاي موجود تداخل نداشته باشد. در غير اين صورت تراكنش بايد منتظر بماند تا قفل هايي كه باعثت تداخل ميشوند رها شوند. اگر درخواست قفل با قفل موجود ديگر تداخل داشته باشد و به دليل اينكه باعث ايجاد بن بست مي شود اعطا نشود يك خطا بوجود مي آيد. به همين دليل قفل هاي قصد چيزي را به جز جدول قفل نمي كنند. مهمترين هدف قفل هاي IS ياIX اين است كه بيان كند تراكنشي مي خواهد قفلي را روي سطر جدول اعمال كند.
مثال بن بست
اين مثال نشان مي دهد كه چطور يك خطا هنگامي كه درخواست قفل انجام نمي شود ممكن است بوجود آيد.
اين مثال شامل ۲ client به نام A و B است. ابتدا مشتري A يك جدول شامل يك سطر مي سازد و سپس يك تراكنش را آغاز ميكند. در تراكنش مشتري A يك قفل اشتراكي روي سطر ايجاد ميكند.
mysql>CREATE TABLE t (i INT) ENGINE = InnoDB;
Query OK, 0 rows affected (1.07 sec)

mysql>INSERT INTO t (i) VALUES(1);
Query OK, 1 row affected (0.09 sec)

mysql>START TRANSACTION;
Query OK, 0 rows affected (0.00 sec)

mysql>SELECT * FROM t WHERE i = 1 LOCK IN SHARE MODE;
+——+
| i    |
+——+
|    ۱ |
+——+
۱ row in set (0.10 sec)

سپس مشتري B يك تراكنش ايجاد ميكند و تلاش مي كند تا يك سطر جدول را حذف نمايد.
mysql>START TRANSACTION;
Query OK, 0 rows affected (0.00 sec)
mysql>DELETE FROM t WHERE i = 1;

عمليات حذف نيازمند قفل از نوع IX مي باشد و اين قفل به دليل تداخل با قفل نوع S كه توسط مشتري A ايجاد شده نمي تواند اعطا شود بنابر اين درخواست به صف درخواست هاي درحال انتظار اضافه شده و مشتري B مسدود مي شود. در نهايت مشتري A نيز تلاش ميكند سطر را حذف نمايد.
mysql>DELETE FROM t WHERE i = 1;
ERROR 1213 (40001): Deadlock found when trying to get lock;

دراينجا بن بست رخ مي دهد زيرا درخواست مشتري A براي قفل IX انجام نمي شود چون مشتري B قبلا درخواست داده و منتظر است تا مشتري A قفل را رها سازد به دليل مشابه قفل S نمي تواند به قفل از نوع X ارتقا پيدا كند براي همين اینودی‌بي براي يكي از مشتري ها پيام خطا نشان داده و قفل هايش را آزاد مي سازد.
RROR 1213 (40001): Deadlock found when trying to get lock;
try restarting transaction

و در اين صورت قفل مي تواند به مشتري ديگر اختصاص يابد و آن تراكنش سطر مورد نظر را حذف ميكند.

خواندن سازگار بدون قفل گذاري
يك خواندن سازگار بدين معني است كه اینودی‌بي از چند نسخه اي براي تهيه يك تصوير از پايگاه داده موقع اجراي پرس و جو استفاده مي كند و آن پرس و جو فقط تغييرات اعمال شده توسط تراكنش هاي اجرا شده قبل از آن نقطه از زمان را مي بيند و تغييرات اعمال شده توسط تراكنش هاي بعدي و يا آنهايي كه اعمال نشده اند را نمي تواند مشاهده كند. اما استثناي اين قانون اين است كه پرسجو تغييرات قبلي اعمال شده در همان تراكنش را مشاهده مي كند. اين استثنا باعث بوجود آمدن اين اختلاف مي شود كه ممكن است هنگامي كه يك تراكنش تعدادي از سطر ها را بروز رساني ميكند دستور Select علاوه بر تغييرات جديد اعمال شده نسخه هاي قديمي سطر ها را نيز ببيند و اگر نشست هاي ديگر نيز به طور پيوسته جدول را بروز رساني كنند ممكن است تراكنش نسخه اي از جدول را كه اكنون  در پايگاه داده وجود ندارد را مشاهده كند.
اگر سطح ايزوله سازي برابر با مقدار پيشفرض REPEATEABLE_READ باشد تمام خواندن هاي سازگار در يك تراكنش از يك تصوير ايجاد شده در اولين خواندن استفاده مي كنند و مي توانيد با اعمال تراكنش جاري و ايجاد يك پرس و جوي جديد تصاوير جديدتري ايجاد نماييد.
با استفاده از سطح READ_COMMITED هر يك از خواندن هاي سازگار از تصوير جديد ايجاد شده براي خود استفاده مي كنند.
خواندن سازگار بطور پيشفرض در اینودی‌بي براي پردازش SELECT  در سطوح READ_COMMITED و REPEATED_READ استفاده مي شود.
يك خواندن سازگار هيچ قفلي را روي جدول هاي مورد دسترسي خود ايجاد نمي كند و به همين دليل ساير نشست ها مجاز به تغيير آن جدول در هنگامي كه خواندن انجام مي شود هستند.
فرض كنيد شما از حالت پيشفرض استفاده مي كنيد. در اين صورت با اجراي يك خواندن سازگار كه همان دستور SELECT معمولي هست يك نقطه زماني به تراكنش شما اعطا مي شود كه در آن نقطه پرس و جو پايگاه داده را مشاهده ميكند. اگر يك تراكنش ديگر بعد از آن نقطه زماني يك سطر جدول را حذف كند و تغييرات را اعمال كند شما آن سطر را نخواهيد ديد به همين طريق با دستور هاي بروزرساني و درج برخورد مي شود.

تصوير وضعيت پايگاه داده براي دستور SELECT در تراكنش اعمال مي شود و نه الزاما براي دستور هاي DML. اگر شما سطر هايي را تغيير دهيد يا درج نماييد و آن تراكنش را اعمال كنيد يك دستور خواندن يا بروزرساني كه توسط يك تراكنش همزمان از نوع REPEATEABLE_READ صادر شده باشد سطر هاي جديد اعمال شده را تحت تاثير قرار مي دهد حتي اگر پرس و جو نتواند آنها را ببيند. اگر يك تراكنش سطر هاي اعمال شده توسط يك تراكنش ديگر را بروزرساني يا حذف كند آن تغييرات براي تراكنش جاري مشاهده پذير خواهند بود. به عنوان مثال ممكن است با يك موقعيت مانند آنچه در پايين اشاره شده مواجه شويد:
SELECT COUNT(c1) FROM t1 WHERE c1 = ‘xyz’; — Returns 0: no rows match.
DELETE FROM t1 WHERE c1 = ‘xyz’; — Deletes several rows recently committed by other transaction.

SELECT COUNT(c2) FROM t1 WHERE c2 = ‘abc’; — Returns 0: no rows match.
UPDATE t1 SET c2 = ‘cba’ WHERE c2 = ‘abc’; — Affects 10 rows: another txn just committed 10 rows with ‘abc’ values.
SELECT COUNT(c2) FROM t1 WHERE c2 = ‘cba’; — Returns 10: this txn can now see the rows it just updated.

شما مي توانيد نقطه زماني را با اعمال كردن تراكنش جاري و اجراي يك دستور مجدد مانند SELECT يا START_TRANSACTION_WITH_CONSISTENT_SNAPSHOT جلو ببريد.
به اين عمل كنترل سازگاري چند نسخه اي مي گويند. در مثال زير نشست A سطر هاي درج شده توسط B را فقط در صورتي كه B آنها را اعمال كند و A نيز به همين صورت اعمال شود تا نقطه زماني آن جلو تر از زمان اعمالB برود ، مشاهده خواهد كرد.
Session A              Session B

SET autocommit=0;      SET autocommit=0;
time
|          SELECT * FROM t;
|          empty set
|                                 INSERT INTO t VALUES (1, 2);
|
v          SELECT * FROM t;
empty set
COMMIT;
SELECT * FROM t;
empty set
COMMIT;
SELECT * FROM t;
———————
|    ۱    |    ۲    |
———————
۱ row in set

اگر مي خواهيد جديد ترين تصوير پايگاه داده را ببينيد بايد يا از سطح READ_COMMITED و يا خواندن هاي با قفل گذاري استفاده كنيد.
SELECT * FROM t LOCK IN SHARE MODE;

با استفاده از سطح READ_COMMITED هر تراكنش با ايجاد يك تصوير جديد از پايگاه داده براي خود از آن براي خواندن استفاده مي كند. اما با ساتفاده از LOCK IN SHARE MODE يك قفل گذاري اتفاق مي افتد و دستور SELECT تا زماني كه تراكنش داراي جديد ترين تصوير به اتمام برسد مسدود مي شود.
خواندن هاي سازگار روي برخي از دستورات DDL كار نمي كنند:
•    خواندن هاي سازگار روي DROP TABLE كار نميكنند چون كه ماي اسكيوال نمي تواند با جدول هاي Drop شده كار كند و اینودی‌بي آن جدول ها را پاك مي كند.
•    خواندن هاي سازگار روي ALTER TABLE كار نمي كند به اين دليل كه اين دستور يك كپي موقت از جدول تهيه مي كند و بعد از آن جدول اصلي را حذف ميكند. هنگامي كه يك دستور خواندن سازگار در يك تراكنش صادر شود سطر ها و جدول ها قابل مشاهده نيستند زيرا هنگامي كه تصوير تراكنش گرفته شده است وجود نداشته اند. در اين مورد يك خطا به صورت ER_TABLE_DEF_CHANGED برميگرداند.
انواع خواندن براي دستور هاي SELECT متفاوت هست مانند INSERT INTO … SELECT ، UPDATE … SELECT ، و CREATE TABLE … SELECT كه در آنها FOR UPDATE يا LOCK IN SHARE MODE مشخص نشده است:

•    به صورت پيشفرض اینودی‌بي از قفل هاي قوي تر استفاده ميكند و SELECT نيز به صورت READ COMMITED استفاده مي شود.
•    براي استفاده از يك خواندن سازگار در اين شرايط بايد گزينه ي INNODB_LOCKS_UNSAFE_FOR_BINLOC را فعال نماييد و سطح ايزوله سازي را به يكي از حالت هاي READ UNCOMMITED  ، READ COMMITED يا REPEATED READ تغيير دهيد و در اين صورت هيچ قفلي روي سطر هاي درحال خوانده شدن قرار نمي گيريد.
خواندن با قفل گذاري
اگر شما در يك ترامنش علاوه بر پرس و جوي داده ها اقدام به درج يا بروزرساني داده ها نماييد استفاده از دستور معمولي SELECT حفاظت كافي را ايجاد نمي كند و ساير تراكنش ها مي توانند سطر هايي را كه جستجو كرده ايد را بروزرساني يا حذف كنند . اینودی‌بي از دو نوع خواندن با قفل گذاري پشتيباني ميكند كه محافظت بيشتري را ارائه ميكنند:
•    دستور SELECT …. LOCK IN SHARE MODE يك قفل از نوع اشتراكي روي سطر ها هنگام خواندن ايجاد مي كند در اين صورت ساير تراكنش ها مي توانند آن سطر ها را بخوانند ولي نمي توانند تغييراتي را روي آن اعمال كنند تا زماني كه تراكنش شما به پايان برسد. همچنين در اين حالت اگر سطر هايي كه مي خواهيد بخوانيد توسط تراكنش ديگري تغيير كرده باشند تراكنش شما منتظر مي ماند تا آن تغييرات اعمال شوند و سپس از آخرين مقادير براي خواندن استفاده خواهد كرد.
•    براي ركورد هاي شاخص ،دستور SELECT …. FOR UPDATE سطر ها و تمامي شاخص هاي وابسطه را مانند هنگام بروزرساني قفل گذاري ميكند در اين صورت ساير تراكنش ها نمي توانند آن سطر ها را بروزرساني نموده يا دستور SELECT .. LOCK IN SHARE MODE را روي آن اجرا كنند. خواندن هاي سازگار تمامي قفل هاي موجود روي سطر ها را ناديده ميگيرند.
اين نوع دستورات هنگام برخورد با داده هاي دختي يا گرافي در يك جدول يا به صورت جدا در چندين جدول مفيد خواهند بود. در اين صورت شما رائس هاي گراف يا برگ هاي درخت را پيمايش نموده و حق داريد به عقب برگشته و هر يك از اين اشاره گرها را تغيير دهيد.
تمام قفل هاي تنظيم شده توسط LOCK IN SHARE MODE  و FOR UPDATE زماني كه تراكنش ها اعمال شوند يا به عقب بازگردند آزاد خواهند شد.
نكته : قفل كردن سطر ها براي بروزرساني با استفاده از SELECT FOR UPDATE زماني كه AUTOCOMMIT غير فعال باشد كار ميكنند و در صورتي كه AUTOCOMMIT فعال باشد سطر هاي مشخص شده قفل نخواهند شد.

قفل هايRecord, Gap, Next-key
اینودی‌بي چندين قفل در سطح ركورد پشتيباني ميكند  كه شامل قفل هاي رگورد ،‌ قفل گپ و قفل ها ي كليد بعدي مي شوند. قفل هاي اشتراكي ، انحصاري و قصد در قسمت هاي قبلي توضيح داده شدند.
قفل ركورد :  اين نوع قفل بر روي يك ركورد شاخص ايجاد مي شود.
قفل گپ : اين نوع قفل روي فاصله بين ركورد ها و همچنين فاصله بين اولين و آخرين ركورد شاخص ايجاد مي شوند.
قفل كليد بعد : اين نوع قفل تركيبي از يك قفل ركورد روي شاخص و يك قفل گپ روي فاصله قبل از آن است.
قفل هاي ركورد
قفل هاي ركورد هميشه ركورد هاي شاخص را قفل ميكنند حتي اگر يك جدول بدون ركورد شاخص ايجاد شده باشد. در چنين حالت هايي اینودی‌بي يك شاخص خوشه اي پنهان ايجاد ميكند و از آن براي قفل گذاري شاخص استفاده ميكند.
قفل هاي كليد بعد
به صورت پيشفرض اینودی‌بي در سطح ايزوله سازي تراكنش REPEATED READ و با گزينه innodb_locks_unsafe_for_binlog به صورت غير فعال كار ميكند. در اين حالت اینودی‌بي از قفل هاي كليد بعد براي جستجو ها و بررسي شاخص ها استفاده ميكند  كه جلوي سطر هاي فانتوم phantom را ميگيرد.
قفل هاي كليد بعدي قفل ركورد شاخص و قفل گپ را تركيب ميكنند. اینودی‌بي به گونه اي عمل مي كند كه وقتي دنبال يك شاخص جدول ميگردد يا آن را بررسي ميكند بر روي هر سطري كه مواجه مي شود قفل هايي از نوع اشتراكي يا انحصاري ايجاد ميكند. به همين دليل قفل هاي سطر ها در حقيقت قفل هاي شاخص هستند. به علاوه يك قفل كليد بعد روي گپ قبل از ركورد شاخص نيز تاثير ميگذارد.
اگر يك نشست يك قفل اشتراكي يا انحصاري روي ركورد R در يك شاخص داشته باشد نشست ديگري نمي تواند يك ركورد شاخص جديد را بلافاصله قبل از R درج كند.

فرض كنيد يك شاخص داراي مقادير ۱۰و۱۱و۱۳و۲۰ باشد. يك قفل كليد بعدي احتمالي براي اين شاخص اين بازه هاي زير را شامل مي شود كه در آن ( يا ) بيانگر بازه “باز” و ] يا [ بيانگر بازه “بسته” خواهند بود.
(negative infinity, 10]
(۱۰, ۱۱]
(۱۱, ۱۳]
(۱۳, ۲۰]
(۲۰, positive infinity)
براي آخرين بازه ، قفل كليد بعدي گپ بالاي بيشترين مقدار شاخص و يك شبه ركورد سوپريمم داراي مقدار بالاتر از مقدار واقعي شاخص را قفل ميكند. سوپريمم يك ركورد شاخص واقعي نيست بنابر اين تنها فاصله خالي بعد از بيشترين مقدار شاخص را قفل ميكند.
قفل هاي گپ
مثال قفل كليد بعدي نشان داد كه يك گپ ممكن است يك شاخص تك مقداري يا  شاخص چند مقداري يا حتي خالي را پوشش دهد.
قفل گپ براي دستوراتي كه سطر ها را به صورت منحصر به فرد قفل ميكنند يا دنبال يك سطر منحصر به فرد ميگردند نياز نيست ولي اين شامل مواردي كه شرط جستجو تعدادي ستون با شاخص منحصر به فرد نمي شود. به عنوان مثال اگر ستون id داراي يك شاخص منحصر به فرد باشد دستور زير تنها از يك قفل شاخص براي سطري كه داراي id 100 مي باشد استفاده ميكند و مهم نيست كه ساير نشست ها سطر هايي را در گپ قبلي درج كنند.
SELECT * FROM child WHERE id = 100;

اما اگر id شاخص گذاري نشده باشد يا شاخص منحصر به فرد نداشته باشد دستور گپ قبلي را قفل گذاري ميكند.

تشخيص بن بست ، بازگشت به عقب ، نحوه برخورد با بن بست
اینودی‌بي به صورت خودكار وقوع بنبست در تراكنش ها را تشخيص مي دهد و تراكنش يا تراكنش هايي را براي شكستن بن بست به عقب بر مي گرداند (rollback). اینودی‌بي تلاش ميكند تا تراكنش هاي كوچك را براي بازگرداندن به عقب انتخاب كند و اندازه تراكنش بنا به تعداد سطر هاي درج شده ،‌بروزرساني شده يا حذف شده مشخص مي شود.
اینودی‌بي از قفل هاي موجود روي جدول ها در صورتي كه  innodb_table_locks=1 و autocommit=0 باشد و همچنين ماي اسكيوال در سطح بالاتر از اینودی‌بي از قفل هاي روي سطر ها اطلاع دارد. زماني كه قفل هايي توسط دستور ماي اسكيوال LOCK TABLES يا توسط ساير موتور هاي ذخيره سازي ايجاد شده باشند  اینودی‌بي نمي تواند بن بست را تشخيص دهد.
زماني كه اینودی‌بي يك عمل بازگشت به عقب را به صورت كامل براي يك تراكنش انجام دهد تمام قفل هاي ايجاد شده توسط آن تراكنش آزاد مي شوند. اما اگر تنها يك دستور اسكيوال در اثر خطا به عقب بازگردد ممكن است برخي از قفل ها همچنان باقي بمانند. اين مسئله به دليل نحوه ذخيره شدن قفل ها توسط اینودی‌بي به صورتي كه بعد از آن نمي توان تشخيص داد كدام قفل توسط چه دستوري ايجاد شده است بوجود مي آيد.
اگر يك دستور SELECT يك تابع ذخيره شده در يك تراكنش را فراخواني كند و يك دستور درون تابع با خطا مواجه شود آن دستور به عقب بازميگردد به علاوه اگر ROLLBACK بعد از آن اجرا شود كل تراكنش به عقب باز خواهد گشت.
در ادامه تكنيك هايي براي مرتب سازي عمليات هاي پايگاه داده ، جلوگيري و نحوه برخورد با بن بست ارائه مي شود.
بن بست ها جزء مسائل كلاسيك در پايگاه داده هاي تراكنش اي هستند و تا زماني كه به صورت مداوم به وقوع نپيوندند و مانع اجراي تراكنش خاصي نشوند خطرناك نيستند. معمولا برنامه ها بايد به گونه اي نوشته شوند تا هر زمان كه تراكنش به دليل بن بست به عقب بازگشت آن تراكنش را مجددا صادر كنند.
اینودی‌بي از قفل گذاري اتوماتيك سطر ها استفاده ميكند و حتا اگر تراكنش ها اقدام به درج بروزرساني يا حذف حتي يك سطر بكنند نيز ممكن است كه با بن بست مواجه شوند. به اين دليل كه عمليات ها واقعا اتميك نيستند و آنها به طور خودكار قفل هايي را روي ركورد هاي شاخص سطر هاي درج يا حذف شده قرار ميدهند.
با استفاده از تكنيك هاي زير مي توان تا حدي از وقوع بن بست جلو گيري كرد و احتمال آن را كاهش داد:
•    در هر زماني مي توانيد با اجراي دستور SHOW ENGINE INNODB STATUS از وضعيت اینودی‌بي مطلع شده و دليل وقوع بن بست را بررسي نماييد و با بهينه سازي برنامه ها از وقوع بن بست جلوگيري نماييد.
•    مي توانيد با فعال كردن گزينه innodb_print_all_deadlocks اطلاعات بيشتري از آنچه در گزارش خطاي ماي اسكيوال ذخيره شده براي خطايابي و تصحيح بدست آوريد و بعد از آن اين گزينه را غير فعال سازيد.
•    هميشه آماده صدور مجدد يك تراكنش در صورت بروز بن بست بوده و درخواست را مجددا تكرار كنيد.
•    تراكنش ها را با حجم و مدت كم نگه داريد تا احتمال برخورد را كاهش دهيد.
•    پس ايجاد يك سري تغييرات مرتبط آنها را اعمال كنيد تا از برخورد جلوگيري شود و به عبارت ديگر يك نشست تعاملي ماي اسكيوال را براي مدت طولاني باز نگذاريد.
•    اگر از خواندن با قفل گذاري استفاده ميكنيد سعي كنيد از سطح ايزوله سازي پايين تري مانند READ COMMITED استفاده كنيد.
•    اگر چندين جدول يا چندين سطر متفاوت را در يك تراكنش تغيير مي دهيد ، آنها را با ترتيبي سازگار تغيير دهيد. در اين صورت تراكنش ها صف هاي خوش تعريفي ايجاد ميكنند و منجر به بن بست نمي شوند.
•    شاخص هاي مناسب به جدول خود اضافه كنيد لذا پرس و جو ها مجبور به بررسي تعداد كمتري از ركورد هاي شاخص مي شوند و در نتيجه قفل هاي كمتري استفاده ميكنند.
•    اگر بازيابي اطلاعات از تصاوير قديمي توسط SELECT مشكلي ايجاد نمي كند از قفل هاي كمتري استفاده كنيد. استفاده از سطح ايزوله سازي READ COMMITED در اينجا مناسب خواهد بود زيرا هر تراكنش داده ها را از تصوير مربوط به خود ميخواند.
•    اگر هيچ كدام از موارد مفيد نبود تراكنش ها را با استفاده از قفل هاي جدول به صورت پشت سر هم و سريالي اجرا كنيد. راه صحيح اينكار در مثال زير نشان داده شده :

SET autocommit=0;
LOCK TABLES t1 WRITE, t2 READ, …;
… do something with tables t1 and t2 here …
COMMIT;
UNLOCK TABLES;

قابليت چند نسخه اي در اینودی‌بي

اینودی‌بي يك موتور ذخيره سازي چند نسخه اي مي باشد. اینودی‌بي اطلاعات و نسخه هاي قديمي سطر ها را براي پشتيباني از ويژگي هاي تراكنشي مانند سازگاري و بازگشت به عقب نگهداري ميكند.
اين اطلاعات درون يك ساختمان داده به نام بخش بازگشت به عقب (Roallback Segment) نگهداري مي شود. اینودی‌بي از اطلاعات موجود در اين ساختار داده براي بازگرداندن يك تراكنش به عقب استفاده ميكند. همچنين اين اطلاعات براي ساختن يك نسخه قديمي از سطر براي اجراي يك خواندن سازگار استفاده ميكند.
ويژگي هاي داخلي چند نسخه اي
از ديد داخلي اینودی‌بي به هر سطر ذخيره شده در پايگاه داده سه فيلد اضافه ميكند. يك فيل ۶ بايتي به نام DB_TRX_ID مشخص مي سازد كه آخرين بار كدام تراكنش سطر را درج يا بروزرساني كرده است. از ديد داخلي عمليات حذف همان عمليات بروز رساني است كه يك بيت خاص به نشانه حذف اعلان شده باشد.
هر سطر داراي يك فيلد ۷ بايتي ديگر به نام DB_ROLL_PTR است كه اشاره گر بازگشت ناميده مي شود. اين اشاره گر به يك UNDO LOG كه در سگمنت بازگشت به عقب ذخيره شده است اشاره ميكند. اگر يك سطر بروز رساني شود UNDO LOG شامل اطلاعات لازم براي باز سازي آن سطر در حالت قبل از بروزرساني مي باشد.
يك فيلد ۶ بايتي ديگر نيز به نام DB_ROW_ID  به سطر ها اضافه شده كه به صورت خودكار با اضافه شدن سطر ها افزوده مي شود. اگر اینودی‌بي به صورت خودكار شاخص خوشه را ايجاد كند اين شاخص محتوي ROW ID خواهد بود.در غير اين صورت اين فيلد در هيچ شاخصي نمايان نخواهد شد.
لاگ هاي بازگشت در سگمنت ROLLBACK به دو بخش لاگ بروزرساني و لاگ درج تقسيم مي شوند. لاگ هاي درج فقط هنگام بازگشت تراكنش استفاده مي شوند و بعد از اعمال تغييرات تراكنش مي توانند حذف شوند. لاگ هاي بروزرساني همچنين در خواندن هاي سازگار مورد استفاده قرار ميگيرند اما آنها فقط زماني كه تراكنشي با تصوير ايجاد شده توسط اینودی‌بي براي خواندن سازگار وجود نداشته باشد مي توانند حذف شوند.

شاخص هاي خوشه و ثانويه
هر جدول در اینودی‌بي داراي يك شاخص ويژه به نام شاخص خوشه (clustered index) هست كه در آن داده هاي مربوط به سطر نگهداري مي شود. معمولا شاخص خوشه برابر كليد اصلي استو براي اينكه بهترين عملكرد از پرس و جو ها ، درج ها و ساير عمليات هاي پايگاه داده بدست آيد بايد نحوه استفاده اینودی‌بي از خوشه ها را براي بهينه سازي جستجو هاي رايج و عمليات هاي DML هر جدول ، آشنا شويد.
•    وقتي كه يك كليد اصلي تعريف مي شود اینودی‌بي از آن به عنوان شاخص خوشه در جدول استفاده ميكند. براي هر جدول اي كه ايجاد ميكنيم بايد يك كليد اصلي تعريف نماييم. اگر هيچ ستون منطقا منحصر بفرد و هيچ مقدار ناپذيري وجود نداشته باشد آنگاه مي توان از ايجاد يك ستون كه به صورت خودكار اضافه مي شود و مقاديرش به صورت خودكار كامل مي شوند به عنوان كليد اصلي استفاده نمود.
•    اگر شما يك كليد اصلي تعريف نكنيد ماي اسكيوال اولين شاخص منحصر به فرد كه در آن تمام ستون هاي كليد هيچ مقدار نيستند را پيدا ميكند و از آن براي شاخص خوشه استفاده ميكند.
•    اگر جدول هيچ كليد اصلي نداشته باشد و هيچ شاخص منحصر به فردي نيز وجود نداشته باشد اینودی‌بي به صورت داخلي يك شاخص خوشه پنهان ايجاد ميكند كه محتوي row id  ها مي باشد. سطر ها بر اساس id اي كه توسط اینودی‌بي به آنها اختصاص يافته مرتب مي شوند و از آنجايي كه اين id ها بر اساس ترتيب درج افزايش مي يابند سطر ها در حقيقت به ترتيب زمان درج مرتب خواهند شد.
دسترسي به يك سطر از طريق شاخص خوشه به اين دليل سريع است كه شاخص مستقيما به صفحه اي كه شامل تمام اطلاعات سطر است هدايت مي شود ، استفاده از شاخص خوشه معمولا در مقايسه با حالتي كه اطلاعات سطر در صفحه هاي مختلف ذخيره مي شوند باعث كاهش عمليات ورودي خروجي از ديسك ميشود.
تمامي شاخص هايي كه شاخص خوشه نباشند شاخص ثانويه ناميده مي شوند. در اینودی‌بي هر ركورد در شاخص ثانويه شامل ستون كليد اصلي براي آن ستون به همراه ستون هاي مشخص شده براي شاخص ثانويه است. اینودی‌بي از كليد اصلي براي جستجو براي سطر در شاخص خوشه استفاده ميكند.
اگر كليد اصلي طولاني باشد شاخص ثانويه فضاي بيشتري استفاده ميكند بنابر اين بهتر است تا كليد اصلي را كوتاه انتخاب شود.
ساختار فيزيكي شاخص ها در اینودی‌بي
تمام شاخص هاي اینودی‌بي درواقع ساختار داده هاي درخت دودويي (B-tree) هستند كه در آن ركورد ها در برگ هاي درخت ذخيره شده است.
اندازه پيشفرض براي يك صفحه شاخص ۱۶ كيلوبايت مي باشد. زماني كه ركورد ها درج مي شوند ، اینودی‌بي تلاش ميكند تا يك شانزدهم صفحه را براي درج هاي آينده و بروز رساني ركورد هاي شاخص خالي نگه دارد.
اگر ركورد ها به ترتيب دنباله اي ارسال شوند (صعودي يا نزولي) ، صفحات شاخص نتيجه حدودا به ميزان پانزده شانزدهم پر خواند بود. اگر ركورد ها به صورت تصادفي درج شوند صفحات شاخص از يك دوم تا پانزده شانزهم ظرفيت پر خواهند بود.
اگر ضريب پر شدن (fill factor) يك صفحه شاخص كمتر از يك دوم شود ،‌اینودی‌بي تلاش ميكند تا درخت شاخص را فشرده سازد تا فضاي صفحه را آزاد سازد.
يادداشت:
مي توانيد با تنظيم كردن گزينه پيكربنديinnodb_page_sizeاندازه صفحه را براي فضاي حالت جدول هاي ماي اسكيوال قبل از ايجاد نمونه هاي از آنها تغيير دهيد. زماني كه اندازه صفحه براي يك نمونه ماي اسكيوال تنظيم شود ديگر نمي توانيد آن را تغيير دهيد. اندازه هاي پشتيباني شده عبارتند از :
شانزده كيلوبايت ، هشت كيلوبايت و چهار كيلوبايت به ترتيب با مقادير گزينه۱۶K , 8k  و ۴k.
يك نمونه ماي اسكيوال كه از يك اندازه صفحه اینودی‌بيمشخص استفاده ميكند نمي تواند از فايل ها و لاگ هاي مربوط به نمونه ديگري كه از اندازه صفحه متفاوتي استفاده ميكند استفاده كند.

ساختار فيزيكي سطرها
ساختار فيزيكي يك سطر براي يك جدول اینودی‌بي به فرمت مشخص شده موقع ايجاد جدول بستگي دارد. به صورت پيشفرض اینودی‌بي از ساختار فايلAntelope و ساختار سطر هاي مربوط به آن به نامCOMPACT استفاده ميكند. ساختار REDIMDAMT آماده است تا هماهنگي با نسخه هاي قديمي ماي اسكيوال را ايجاد نمايد. زماني كه گزينه innodb_file_per_table را فعال نماييد مي توانيد از ساختار فايل جديد بنام Barracuda استفاده نماييد كه داراي ساختار سطر هاي DYNAMIC و COMPRESSED مي باشد.
براي بررسي ساختار يك سطر در اینودی‌بي مي توانيد از دستور SHOW TABLE STATUS استفاده كنيد مانند:
mysql> SHOW TABLE STATUS IN test1\G
*************************** ۱٫ row ***************************
Name: t1
Engine: InnoDB
Version: 10
Row_format: Compact
Rows: 0
Avg_row_length: 0
Data_length: 16384
Max_data_length: 0
Index_length: 16384
Data_free: 0
Auto_increment: 1
Create_time: 2014-10-31 16:02:01
Update_time: NULL
Check_time: NULL
Collation: latin1_swedish_ci
Checksum: NULL
Create_options:
Comment:
۱ row in set (0.00 sec)
فرمت COMPACT فضاي ذخيره سازي را تا ۲۰ درصد كاهش مي دهد اما بدين جهت باعث مصرف بيشتر پردازنده براي انجام برخي عمليات مي شود. اگر حجم كاري پايگاه داده معمولي باشد و محدوديت روي CACHE و سرعت ديسك باشد فرمت COMPACT احتمالا سريع تر خواهد بود اما اگر حجم كاري زياد باشد و محدوديت روي سرعت پردازنده باشد اين فرمت ممكن است كند تر باشد.
سطر هاي جدول هاي اینودی‌بي كه از فرمت REDUNDANT استفاده ميكنند داراي ويژگي هاي زير هستند:
•    هر ركورد شاخص داراي هد ۶ بايتي است. هدر ها براي متصل كردن ركورد هاي متوالي و همچنين قفل گذاري سطر ها استفاده مي شود.
•    ركورد هاي شاخص خوشه داراي فيلد هايي براي ستون هاي ايجاد شده توسط كاربر مي باشند بعلاوه يك فيلد ۶ بايتي براي شماره تراكنش و يك فيلد ۷ بايتي براي اشاره گر بازگشت به عقب هست.
•    اگر كليد اصلي تعريف نشده باشد هر ركورد شاخص داراي فيلد ۶ بايتي براي شماره سطر خواهد بود.
•    هر ركورد شاخص ثانويه فيلد هاي كليد اصلي را كه براي شاخص خوشه تعريف شده اند شامل مي شود.
•    يك ركورد داراي يك اشاره گر به هر يك از فيلد هاي ركورد مي باشد. اگر طول فيلد يك ركورد كمتر از ۱۲۸ بايت باشد اشاره گر يك بايتي خواهد بود در غير اين صورت ۲ بايتي است.
•    به صورت داخلي اینودی‌بي ستون هاي كاركتري با طول ثابت را مانند CHAR(10) به صورت ساختار طول ثابت نگهداري ميكند.
•    يك مقدار پوچ (NULL) در ماياسكيوال يك يا دو بايت از ديكشنري ركورد را اشغال ميكند.
سطر هاي جدول هاي اینودی‌بي با فرمت COMPACT داراي ويژگي هاي زير هستند:
•    هر ركورد شاخص دراي يك هدر ۵ بايتي كه ممكن است با اندازه هدر متغير پردازش شود مي باشد. هدر براي اتصال ركورد هاي متوالي و براي قفل گذاري سطر ها استفاده شده است.
•    قسمت با طول متغير در هدر داراي يك بردار بيتي براي مشخص كردن ستون هاي NULL ميباشد. تعداد ستون هايي كه در شاخص مي توانند هيچمقدار داشته باشند برابر N است و بردار بيتي به ميزان CELING (N/8) بايت فضا اشغال ميكند.
•    براي هر فيلد غير NULL با طول متغير هدر داراي طوال آن ستون در يك يا دو بايت است.
•    ركورد هدر در ادامه داراي داده هاي ستون هاي غير NULL مي باشد.
•    ركورد ها در شاخص خوشه داراي فيلد هايي براي تمامي ستون هاي تعريف شده توسط كاربر هستند به علاوه يك فيلد ۶ بايتي براي شماره تراكنش و يك فيلد ۷ بايتي براي اشاره گر بازگشت به عقب وجود دارد.
•    اگر هيچ كليد اصلي تعريف نشده باشد هر ركورد شاخص خوشه داراي يك فيلد ۶ بايتي براي شماره سطر خواهد بود.
•    هر ركورد شاخص ثانويه فيلد هاي كليد اصلي را كه براي شاخص خوشه تعريف شده اند شامل مي شود. يك ركورد داراي يك اشاره گر به هر يك از فيلد هاي ركورد مي باشد. اگر هركدام از كليد هاي اصلي داراي طول متغير باشند هدر براي هر يك از شاخص هاي ثانويه يك قسمت طول متغير براي ذخيره طول آنها خواهد داشت. حتي اگر شاخص هاي ثانويه با طول ثابت تعريف شده باشند.
•    به صورت داخلي اینودی‌بي ستون هاي كاركتري با طول ثابت را مانند CHAR(10) به صورت ساختار طول ثابت نگهداري ميكند.
•    به صورت داخلي اینودی‌بي ستون هاي UTF-8 را با پيرايش فضاهاي عقبي به صورت N بايت ذخيره ميكند درحالي كه در فرمت REDUNDANT حدودا ۳ ضربدر N بايت فضا نياز داشت.

منابع و مآخذ
۱-    MySQL 5.6 Reference Manual (http://dev.mysql.com/doc/refman/5.6/en/innodb-storage-engine.html)

۲-    Wikipedia English (http://en.wikipedia.org/wiki/InnoDB)