سفر خاک

یادداشت های غلامحسین توسلی

سفر خاک

یادداشت های غلامحسین توسلی

جز غبار از سفر خاک چه حاصل کردیم؟ / سفر آن بود که ما در قدم دل کردیم

Percona Server - جایگزینی خوب برای MySQL

شنبه, ۲۳ آذر ۱۳۹۲، ۱۱:۵۷ ق.ظ

در مورد پایگاه داده یکی از مسایل مهم کارایی پایگاه داده است؛ به خصوص زمانی که تو پروژه شما مسئله مهم ثبت رکورد با سرعت بسیار بالا باشد. البته فارغ از خود پایگاه داده طراحی سیستم نیز مسئله بسیار مهمی است. برای انجام کاریی نیاز به این کارایی بالا در سطح پایگاه داده پیدا کردم. دامنه انتخابم هم محدود میشد به MySQL و PostgreSQL. شاید یه وقت دیگه این دو رو با هم مقایسه کردم. به دلایلی مجبور به استفاده از MySQL شدم. همونطور که پیش از این هم گفتم یک سطح از بهینه سازی بر می گرده به خود پایگاه داده یه بخش خیلی مهمی از اون هم بر می گرده به طراحی سیستم و جداول و ارتباطات اون ها باهم. در این پست رویکردم کارایی خود پایگاه داده است. برای بهینه سازی و افزایش کارایی سامانه دست به یک سری بهینه سازی ها در طراحی سامانه و خود پایگاه داده زدم. تا این که به اینجا رسیدم.

Percona Server میتونه یه جایگزین خوب برای MySQL باشه. این بهتر بودن رو در ادامه بیشتر مورد بررسی قرار می دهم. تو طراحی این پایگاه داده که مبتنی بر MySQL طراحی شده است سه هدف اولیه مد نظر بود:

  • شفافیت (Transparency)
    ابزارهایی به پایگاه داده اضافه شد که به کاربران اجازه می ده تا رفتار سرور رو از نزدیکتر مورد بررسی قرار بدهند. این شامل ویژگی هایی نظیر شمارنده ها در SHOW STATUS و جداول در INFORMATION_SCHEMA و به خصوص افزودن جزئیات بیشتری به رویدادهای ثبت شده برای کوئری های کند، میشه. (Percona یه جعبه ابزار هم برای برای MySQL ارائه داده که به کاربران کمک می کنه تا بتونن بدون استفاده از Prercona Server بر روی MySQL هم به این ویژگی ها دسترسی داشته باشند.)
  • کارایی (Performance)
    Percona Server شامل بهبود های بسیاری برای کاراریی و گسترش پذیری (scalability) است. کاراریی خام مهم است اما Percona Server قابلیت پیش بینی و پایداری کارایی پایگاه داده رو هم ارتقاء داده. در طراحی این سامانه بیشتر تمرکز بر روی InnoDB بوده است.
  • انعطاف پذیری عملیاتی (operational Flexibility)
    Percona Server شامل ویژگی های بسیاری برای حذف محدودیت ها از پایگاه داده است.

به نظرم جدای از کارایی مهمترین ویژگی Percona Server به خصوص زمانی که شما سیستم رو با MySQL توسعه داده باشید اینه که بدون تغییر در کوئری ها و ساختار جداول میتونید اون رو جایگزین MySQL کنید. همه چه مثل قبل (البته با کارایی و قابلیت اطمینان بیشتر) کار می کنه! تو طراحی این سامانه کمترین تغییرات در دستور SQL، پروتکل client/server و فرمت فایلی بر روی دیسک مد نظر بوده؛ برای همین هم هر چی که تا به حال با MySQL قابل اجرا بوده از این بعد بدون هیچ تغییری با Percoan Server هم قابل اجرا خواهد بود. سوئیچ کردن به Percoan Server تنها نیاز به خاموش کردن MySQL و روشن کردنه Percoan Server داره. حتی نیاز به export و import کردن داده ها هم ندارید! خوشتون هم نیومد میتونید این فرایند رو به صورت بر عکس انجام بدید و بر گردید به MySQL!

Percona Server شامل موتور ذخیره سازی Percona XtraDB است که نسخه ارتقاء یافته ای از InnoDB است. این موتور ذخیره سازی قابلیت بازگشت مجدد به InnoDB رو هم دارا است. برای مثال اگه شما یک جدول با موتور ذخیره سازی InnoDB ساخته باشید Percona Server به صورت خودکار اون رو میشناسه و از Percona XtraDB بجاش استفاده می کنه. بعد اینکه MySQL رو شرکت Sun خرید Monty Widenius از موسسین MySQL که با سیاست های Sun مشکل پیدا کرد از اون جدا شد و یه شرکت دیگه تاسیس کردند و MariaDB رو ارائه دادند. این موتور XtraDB تو پروژه MariaDB هم استفاده میشه.

برخی بهینه سازی های انجام شده تو Percoan Server به مرور در نسخه استاندارد MySQL که Oracle عرضه می کند، گنجانده و بسیاری از اون ها هم به آرامی از راه های گوناگون از نو پیاده سازی شده اند.

شاید بد نباشه که نگاهی به تست های کارایی که بر روی Percoan Server انجام شده است بندازید. هم از نظر سرعت اجرای کوئری ها بهتر کار می کنه و هم از نظر قابل پیشبینی بودن و قابلیت اطمینان پایگاه داده.

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


ادامه دارد...



مراجع
1. Baron Schwartz, Peter Zaitsev, Vadim Tkachenko, High Performance MySQL, Optimization, backups, and Replication, 3rd Edition, 2012, O'REILLY
2. Percona Server Official Web Site


  • موافقین ۱ مخالفین ۰
  • ۹۲/۰۹/۲۳
  • ۹۵۷ نمایش
  • غلامحسین توسلی

نظرات (۱)

  • مجید رحیمی
  • ممنون!

    خوب به نظر می رسه. اما حیف که اگه بخوام از این جور نرم افزار های جدید بر روی سایتم استفاده کنم، باید سرور مجازی بخرم که خیلی گرون در میاد.


    البته برای پروژه های دانشجویی هم مطلوبه!

    راستی شما هاست جاوای ( Tomcat+JDK 7) ارزون که با ریال بشه خرید سراغ دارید؟

    پاسخ:
    سلام

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

    در مورد هاست با عرض پوزش موردی رو سراغ ندارم.
    ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
    شما میتوانید از این تگهای html استفاده کنید:
    <b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
    تجدید کد امنیتی