نقطه ویرگول;

هر از گاهی از هر چیزی

هر از گاهی از هر چیزی

بهینه سازی MySQL – وحید سهرابلو

شنبه, ۲۵ دی ۱۳۸۹، ۱۲:۰۵ ق.ظ
در این مقاله به (شاید) بزرگترین دغدغه برنامه نویسان نرم افزارهای وب می پردازیم. و آن چیزی جز بهینه سازی MySQL نیست. همیشه گفته‌ام که MySQL در عین حال که سرعت بالایی دارد حساسیت بالایی نیز دارد. شاید تنها نادیده گرفتن یک index می‌تواند فشار بسیار زیادی را به پایگاه داده وارد کند. این تجربه را داشته‌ام که سرور بار بسیار شدیدی را داشت و بعد از بررسی تنها به این مورد برخورد کردم که یک index را جاگذاشتم و این بار بر روی سرور قرار گرفت. می‌خواهیم قدم‌های اولیه برای این فرآیند را یاد بگیریم اما این راه نیاز به تلاش و تحقیق بیشتری نسبت به یک مقاله دارد.
سرفصل ها:
  • معماری MySQL
  • هر امکانی در جای خود
  • محک کردن (benchmark ) نرم افزار
  • profile کردن query های خود
  • دقت در انتخاب نوع فیلدها
  • دقت در انتخاب index ها
  • دریافت ستونهای مورد نیاز
  • در نوشتنن query ها همیشه از یک قالب حروف بزرگ و کوچک استفاده کنید
  • DELETE های سنگین را چند قسمتی کنید
  • چندین قسمتی کردن join ها
  • استاندارد کد نویسی کنید
  • جداول بزرگ را پارتیشین بندی کنید
  • تنظیمات MySQL را بر اساس نیاز خود تنظیم نمایید
  • انتخاب سیستم عامل
  • بهینه سازی در سطح برنامه
  • MySQL خود را مونیتور کنید
  • REPLICATION و BALANCING و ارتقا سخت افزاری
  • نویسنده: وحید سهرابلو
    ارائه شده در نخستین همایش نرم افزارهای آزاد زنجان - ایران

    نظرات  (۶)

    وحید دوستت داریم. ممنونم. من خیلی وقته دنبال یه فایل آموزشی در مورد بهینه سازی مای اسکیو ال می گردم. بازم مرسی
    من تعجب می‌کنم
    Delete های سنگین را چرا چند قسمتی کنیم؟
    الفبای ابتدایی پایگاه داده هم می‌دونه که delete فقط یک پرچم ست می‌کنه و داده‌ای رو جابجا نمی کنه که بخواد سنگین باشه.
    ۰۱ شهریور ۹۰ ، ۱۵:۵۱ وحید سهرابلو
    http://www.mysqlperformanceblog.com/2007/01/17/performance-impact-of-complex-queries/
    Chop it If you can’t execute this work on slave server, for example it is old data purge activity you may at least chop it, meaning do not do it as all one big simple query or as set of queries going one after another. Have sleep between them so none of them can take too much resources for too long time. If you delete things do DELETE … LIMIT 1000 and insert sleep 10; in between. By spreading load this way you make sure large portion of the cache will not be wiped out at once and also if few queries pile up because query took many resources they will have time to resolve before next portion of the query takes place.
    و
    http://dev.mysql.com/doc/refman/5.0/en/delete.html
    If you are deleting many rows from a large table, you may exceed the lock table size for an InnoDB table.
    ۲۲ مرداد ۹۱ ، ۱۳:۰۱ فرهاد فولادی
    اقا وحید . کتاب و منبع هم برای مطالعه بیشتر بگید.
    سلام
    ممنون
    ولی من نمی تونم دانلودش کنم
    چرا؟
    به زودی سایت اصلی همایش با همه ی مقالات آپلود می شه.
    سایت تغییر کرده و مشکلاتی پیش اومده توی فایل ها
    اصلاح می شه به زودی
    ببخشید

    ارسال نظر

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