پایگاه داده ی DB2 محصول شرکت IBM یکی از قدرتمندترین موتورهای پایگاه داده در جهان است. این پایگاه داده از نوع SQL بوده و برای محیط های ZOS و LUW یا Linux, Unix, Windows توسعه یافته است. این پایگاه داده به صورت تجاری است و به منظور بهره برداری از آن باید مجوزهای لازم از IBM تهیه شود. این پایگاه داده با توجه به کارایی بالا در حال حاضر در بسیاری از شرکت های در کلاس Enterprise و بانک ها مورد استفاده قرار گرفته است.
بهره برداری از هر پایگاه داده نیاز به شناخت معماری و نحوه ی عملکرد آن دارد که در قالب اسناد و دوره هایی توسط شرکت های تولید کننده ارایه میشوند. یکی از جنبه های مهم در بهره برداری به عنوان یک مدیر پایگاه داده، مانیتورینگ مداوم و بهبود عملکرد DB2 است. برای این منظور مدیر پایگاه داده باید شناخت مناسبی نسبت به شاخص های مهم پایگاه داده DB2 داشته باشد.
به منظور مانیتورینگ این پایگاه داده ابزارهای مختلفی در دنیا توسعه یافته است کهSolarWinds DPA ، ManageEngine APM از جمله ی آنها هستند. قابلیت مانیتورینگ این پایگاه داده در حال حاضر توسط پلتفرم مانیتورینگ معین نیز وجود دارد که جزییات و شاخص های مهم مانیتور شده در این لینک قابل مشاهده است. در هر پایگاه داده علاوه بر پارامترهای مرتبط با میزبان و مصرف منابع مانند CPU، حافظه، IOها شاخص های مهمی در پایگاه داده وجود دارد که هر راهبر باید نسبت به آنها آگاهی داشته باشد تا پس از نظارت بر آنها در صورت نیاز نسبت به تنظیم آنها اقدام لازم را انجام دهد.
در این مقالهی کوتاه قصد داریم تا به معرفی برخی پارامترهای مهم این پایگاه داده درمحیط LUW بپردازیم تا راهبران در هنگام مانیتورینگ مورد توجه قرار دهند. بررسی پایگاه DB2 در محیط ZOS نیز در مقاله ی دیگری انجام شده است، برای خواندن آن مقاله بر روی این لینک کلیک کنید.
در حالت کلی برای هر راهبر در دسترس بودن پایگاه داده دارای اهمیت بسیاری است. در دسترس بودن پایگاه داده به آن معنی است که برنامه ها قابلیت اتصال به پایگاه داده را داشته و امکان اجرای کوئری ها را داشته باشند. در صورت بروز مشکل اولین کاری که راهبران معمولا انجام می دهند تست پورت و در دسترس بودن پورت پایگاه داده است در حالیکه این تست لزوما به معنای در دسترس بودن پایگاه داده برای برنامه ها نیست چراکه ممکن است پورت مورد نظر در دسترس باشد اما امکان اجرای درخواستها یا کوئری ها وجود نداشته باشد. بنابراین تست دسترس پذیری پایگاه داده باید فراتر از تست پورت باشد. برای این منظور اجرای یک کوئری ساده با کمترین سربار می تواند به راهبر این اطمینان را دهد که پایگاه داده از دید برنامه ها در دسترس می باشد. تست اجرای کوئری به صورت دوره ای و ارسال اعلان در صورت عدم اجرا می تواند به راهبران بروز اشکال در پایگاه داده را اطلاع رسانی نماید. این مهم در حال حاضر در بسیاری از ابزارهای مانیتورینگ دنیا انجام می شود.
اطلاع از وضعیت فعلی پایگاه داده با پرسوجو از جداول کارایی پایگاه داده نیز می تواند به راهبر در شناخت وضعیت فعلی پایگاه داده کمک نماید.
یکی از مهمترین پارامترها در پایگاه دادهی DB2 آمار ارتباطات می باشد. ارتباطات با این پایگاه داده شامل ارتباطات محلی و راه دور است. ارتباطات محلی شامل ارتباطات پروسسهای موجود در پایگاه داده با مدیر پایگاه داده است. ارتباطات راه دور شامل ارتباطات برنامه ها یا کلاینت هایی است که از دور با مدیر پایگاه داده ارتباط برقرار می کنند. مجموع ارتباطات محلی و راه دور مشخص کننده ی کل ارتباطات با پایگاه داده ی DB2 است که مقدار آن به منظور تنظیم پارامتر max_connections و max_coordagents مورد استفاده قرار می گیرد.
ظرفیت استفاده شده توسط پایگاه دادهی DB2 در واقع کل ظرفیت استفاده شده توسط Table Spaceها می باشد. این پارامتر نشان دهنده ی حجم استوریج استفاده شده توسط پایگاه داده است. علاوه بر ظرفیت استفاده شده کل ظرفیت موجود نیز جز پارامترهایی است که راهبر باید از آن اطلاع داشته باشد تا در خصوص ظرفیت باقیمانده اطلاع حاصل نماید. در حال حاضر این دو پارامتر و نسبت این دو قابل مانیتور بوده و در پلتفرم معین نیز مانیتور می شوند. در نظر داشته باشید که محاسبه ی ظرفیت استفاده شده سربار زیادی برای پایگاه داده دارد لذا مقدار آن باید با دوره های طولانی تری نسبت به سایر شاخصها باید محاسبه شود. در حال حاضر در پلتفرم معین مقدار این شاخصها به صورت ۲۴ ساعت یکبار محاسبه می شود.
عامل ها (Agents) در پایگاه داده ی IBM DB2(LUW) وظیفهی برقراری ارتباط میان برنامهی کاربردی با پایگاه داده را بر عهده دارند و درخواست های برنامه های کاربردی را اجرا میکنند. در واقع عامل های پایگاه داده DB2 تردهایی در مدیر پایگاه داده هستند که درخواست های برنامه را handle می کنند.
در پایگاه داده ی DB2 سه نوع عامل وجود دارد:
1. عامل های بیکار یا Idle : این عامل ها هیچ درخواستی را اجرا نمی کنند و غیرفعال هستند و در زمانی که Coordinatorها یا عامل هماهنگ کننده درخواستی به سمت آنها ارسال نماید فعال می شوند. عامل های بیکار در agent pool قرار می گیرند.
2. عامل های فعال هماهنگ کننده یا Coordinatorها: هر ارتباطی با پایگاه داده از کلاینت یا برنامهی کاربردی یک عامل هماهنگ کنندهی فعال دارد. این نوع عامل درخواست هایی که از برنامه ی کاربردی ارسال میشود را به عامل های Worker ارسال کرده تا توسط آن درخواست اجرا شود. این نوع از عاملها بیشترین ارتباط را با برنامه ی کاربردی دارند.
3. عامل های فرعی یا Subagentها: عامل های فرعی همان عامل های Worker هستند که اجرا کننده ی درخواست های برنامه ها هستند و درخواست ها توسط عامل هماهنگ کننده به آنها ارسال می شوند.
تعداد عامل های در دسترس به متغیر NUM_POOLAGENTS در بخش مدیریت پیکربندی پایگاه داده وابسته است. برای مشاهده ی مقدار تنظیم شده در پایگاه داده ی DB2 می توان از دستور db2 get database manager configuration استفاده کرد. خروجی این دستور پارامترهای تنظیم شده در پایگاه داده را نشان می دهد که در شکل 1 بخش مرتبط با تنظیمات عامل نمایش داده شده است.
همان گونه که در شکل ملاحظه میشود، حداکثر تعداد عامل های هماهنگ کننده یا Coordinating agentها معادل ۲۰۰ تنظیم شده است و حداکثر تعداد ارتباطات کلاینت ها(برنامه های کاربردی) نیز معادل با حداکثر تعداد عامل های هماهنگ کننده تنظیم شده است.
پارامتر حداکثر تعداد عامل های هماهنگ کننده یا Coordinating agents باید بر اساس میزان بار ارتباطی برنامه ها با پایگاه داده ی DB2 تنظیم شود. مطابق با تنظیمات پیش فرض حداکثر ۲۰۰ برنامه قابلیت اتصال به پایگاه داده را دارند.
توصیه می شود تا به منظور بررسی بار ارتباطی پایگاه داده این پارامتر همواره مانیتور شود تا در صورت لزوم Tunning روی پایگاه داده انجام شود. در نظر داشته باشید که در صورت رسیدن تعداد ارتباطات به سقف تعداد عامل های هماهنگ کننده، دیگر هیچ ارتباطی از جانب هیچ برنامه ایی پذیرفته نخواهد شد. به منظور مشاهده ی لیست Agentها و خلاصه ی وضعیت آنها می توان از دستور db2pd -agents استفاده کرد.
در صورتیکه در تنظیمات پارامترهای پایگاه داده تعداد MAX_CONNECTIONS از تعداد MAX_COORDAGENTS بیشتر باشد، در این صورت حالت Concentrator فعال می شود. در این حالت ممکن است به علت افزایش تعداد ارتباطات نسبت به تعداد عامل های Coordinator درخواست ها منتظر عامل شوند. در این حالت پارامتر agent_wait_time منعکس کننده مدت زمان انتظار برنامه های صف شده و در انتظار برای اختصاص عامل می باشد. بنابراین در صورتیکه پایگاه داده در حالت کاری Concentrator تنظیم شده باشد، پارامتر زمان انتظار عامل نیز باید مانیتور شود تا از مدت زمان صرف شده در صف انتظار عامل اطلاع حاصل شود. در صورت زیاد بودن این مقدار باید تعداد عامل ها را متناسب با تعداد ارتباطات افزایش داد.
در حال حاضر پلتفرم مانیتورینگ معین آمار عامل های فعال، بیکار و مدت زمان انتظار عامل و دفعات انتظار عامل را مانیتور کرده و راهبران می توانند روند استفاده از عامل ها را در پایگاه داده ی DB2 رصد نمایند. به منظور بررسی لیست شاخص های مانیتور شده توسط پلتفرم معین به لینک مراجعه شود.
یک Deadlock در پایگاه داده زمانی اتفاق می افتد که دو یا چند تراکنش یا فرایند به گونه ای نیاز به دسترسی به منابعی دارند که هر کدام از آنها منتظر رها شدن منبع توسط دیگری هستند. به عبارت دیگر هر دو یا چند تراکنش به صورت همزمان درخواست قفل گذاری بر روی منابعی را دارند که توسط دیگری قفل شده است. این موجب مسدود شدن هر دو تراکنش می شود و هیچ کدام از آنها نمی توانند ادامه دهند. در پایگاه های داده فرآیند شناسایی Deadlock وجود دارد اما اطلاع از آمار Deadlockها می تواند به راهبران و تیم توسعه ی برنامه در شناسایی مشکلات کندی برنامه ها کمک نماید. در حال حاضر این پارامتر(آمار Deadlockها)به صورت دوره ای توسط پلتفرم معین و سایر ابزارهای مانیتورینگ جمع آوری می شوند.
Table Space در DB2 یک ساختار ذخیره سازی است که داده های جداول را در خود نگه می دارد. هر جدول در یک فضای جدولی ذخیره می شود. اطلاع از وضعیت کلی هر Table Space، اندازه ی کل، اندازه ی استفاده شده و فضای آزاد Table Space بسیار ضروری است.
حجم درخواست های اجرا شده توسط پایگاه داده در طول زمان می تواند راهبران را از میزان تراکنش هایی که توسط پایگاه داده با توجه به منابع تخصیص یافته قابل اجرا می باشد را نشان میدهد. یکی از شاخص هایی که میزان تراکنش ها را در پایگاه داده نشان می دهد واحد کار یا Unit of Work است. یک واحد کار نمایانگر یک توالی قابل بازیابی از عملیات در یک فرایند برنامه است که به آن واحد منطقی کار نیز گفته می شود. هر فرایند برنامه در هر لحظه دارای یک واحد کاری است. مطابق تعریف سایت رسمی IBM به منظور محاسبه ی واحد کاری در DB2 باید پارامتر های زیر با یکدیگر جمع شوند.
· Commit SQL Statements
· Int Commits
· Rollback SQL Statements
· Int Rollbacks
مجموع این چهار پارامتر بیانگر آمار واحدهای کاری انجام شده توسط پایگاه دادهی DB2 است. در حال حاضر این شاخص در پلتفرم معین به صورت نرخ محاسبه می شود.
علاوه بر این شاخص آمار کوئریهای موفق و ناموفق نیز به راهبران در مورد میزان درخواستهای اجرا شده دید میدهد که خود نمادی از میزان درخواستهای مدیریت شده توسط پایگاه داده دارد.
در زمان بروز مشکل یکی از مهمترین اطلاعاتی که به راهبران در یافتن ریشه ی مشکلات در پایگاه داده کمک می کند اطلاع از پرمصرف ترین کوئری ها در یک دوره ی زمانی است. کوئری های با بیشترین مصرف پردازنده، حافظه، IO، کوئری های پرتکرار، کوئری های کند مواردی است که معمولا راهبران از آنها در یافتن کوئری های پرمصرف استفاده می کنند. این آمار در حال حاضر توسط پلتفرم مانیتورینگ معین مانیتور می شوند.
پشتیبان گیری از پایگاه داده از جمله رایج ترین فعالیت هایی است که توسط راهبران پایگاه های داده انجام می شود. با توجه به تعدد پایگاه های داده، نظارت بر انجام موفق پشتیبان گیری های انجام شده برای راهبران حیاتی است. لذا ابزارهای مانیتورینگ باید صحت اجرای عملیات پشتیبان گیری را رصد کرده و در صورت بروز مشکل در این فرآیند اعلان های لازم را به راهبران بدهد. در حال حاضر بر انجام موفق یا ناموفق پشتیبان گیری توسط بسیاری از ابزارهای مانیتورینگ نظارت می شود.
در انتها باید اشاره شود که پارامترها و شاخص های ارایه شده بخشی از شاخص های مانیتور شده توسط ابزارهای مانیتورینگ پایگاه دادهی DB2 بود که معرفی شدند. درآینده و در مقالات بعدی تلاش خواهیم کرد تا سایر شاخص های تاثیرگذار نیز معرفی شوند.