۱۰ روش بهینه سازی Mysql

سلام

Mysql رو بدلیل راحتی و جذابیت کار در اون دوس دارم و بیشتر روزها با این پایگاه داده سروکار دارم

چیزی که مدت ها ذهنم رو درگیر کرده بود بهینه سازی mysql برای داده های حجیم بود که چجوری بتونم این حجم از داده ها رو مدیریت کنم یه مقاله ای رو داشتم توی سایت bigdata-madesimple میخوندم که روش های بهینه سازی پایگاه داده رو به صورت مقدماتی توضیح میداد دوس داشتم که اینجا بزارم و شما هم ازش استفاده کنید

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

۱- همیشه از نوع داده ای مناسب استفاده کنید

از نوع داده ای بر اساس ماهیت داده ها استفاده کنید. اگر از نوع داده های نامناسب استفاده کنید، ممکن است فضای بیشتری مصرف کند و یا ممکن است به اشتباه منجر شود.

به عنوان مثال : استفاده از varchar (20) برای ذخیره مقادیر تاریخ زمان به جای نوع DATETIME، خطاهای مربوط به محاسبات مربوط به زمان مربوطه را ایجاد می کند و همچنین امکان ذخیره اطلاعات نامعتبر است.

۲- از CHAR(1) به جای VARCHAR(1) استفاده کنید

اگر از یک رشته تک کاراکتری استفاده می کنید از نوع داده ای CHAR(1) به جای VARCHAR(1) استفاده کنید

چون VARCHAR(1) برای ذخیره اطلاعات یک بایت بیشتر استفاده می کند

۳- برای ذخیره داده های با طول ثابت از CHAR استفاده کنید

به عنوان مثال : استفاده از CHAR(1000) به جای VARCHAR(1000) باعث می شود که اگر میزان داده ها کمتر از ۱۰۰۰ باشد فضای کمتری را استفاده کند

۴- در استفاده از فرمت های تاریخ منطقه ای خودداری کنید

هنگام استفاده از نوع DATETIME یا DATE، همیشه از فرمت تاریخ YYYY-MM-DD یا فرمت تاریخی ISO استفاده کنید که برای SQL Engine مناسب است. سایر فرمت های منطقه ای مانند DD-MM-YYY و MM-DD-YYYY به درستی ذخیره نخواهد شد.

۵- کلید اصلی ستون ها

اطمینان حاصل کنید که ستون هایی را که در جملات JOIN استفاده می شوند، به طوری که پرس و جو نتایج را سریع می کند.

اگر از عبارت UPDATE استفاده می کنید که شامل بیش از یک جدول است اطمینان حاصل کنید که تمام ستون هایی که برای پیوستن به جداول استفاده می شوند، INDEX می شوند

۶- از توابع SQL بی دلیل استفاده نکنید

استفاده بیش از حد از توابع باعث نقض و کاهش عملکرد دیتابیس خواهد شد

اگر شما داده هایی میخواهید که دو کاراکتر اول از ستون customer_code با AK شروع شود به این صورت ننویسید

SELECT columns FROM table WHERE left (customer_code,2)=’AK’

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

SELECT columns FROM table WHERE customer_code like ‘AK%’

این عملکرد باعث افزایش بازدهی و سرعت خواهد شد

۷- اگر select * نیاز دارید از آن استفاده کنید

به صورت کورکورانه از select * استفاده نکنید اگر ستون های زیادی در جدول وجود داشته باشند، همه آنها باز می گردند که زمان پاسخ را کند می کند، به ویژه اگر شما بخواهید آن را در سمت کاربر استفاده کنید

۸- فقط درصورتی که نیاز دارید از order by استفاده کنید

اگر میخواهید نتایج را در سمت کاربر استفاده کنید و در کوئری ارسال شده از order by استفاده کنید این سبب کاهش عملکرد و سرعت پاسخدهی دیتابیس در زمانی که کاربران به طور همزمان از وبسایت شما استفاده می کنند خواهد شد

۹- موتور پایگاه داده مناسب انتخاب کنید

– اگر شما برنامه ای رو می نویسید که میزان خواندن بیشتر از نوشتن در آن باشد ( برای مثال : موتور جستجو ) بهتر است که از موتور پایگاه داده MyISAM استفاده کنید

– اگر شما برنامه ای می نویسید که میزان نوشتن بیشتر از خواندن در آن باشد (برای مثال : معاملات بانکی در یک زمان واقعی ) بهتر است که از موتور پایگاه داده INNODB استفاده کنید

انتخاب موتور ذخیره سازی نادرست عملکرد برنامه شما را تحت تاثیر قرار می دهد

۱۰- از EXISTS هر جا که به آن نیاز داشتی استفاده کن

اگر شما میخواهید که وجود یک داده را در پایگاه بررسی کنید به این صورت استفاده نکنید :

If (SELECT count(*) from Table WHERE col=’some value’)>0

بلکه با استفاده از EXISTS آن را بازنویسی کنید :

If EXISTS(SELECT * from Table WHERE col=’some value’)

زمان پاسخگویی در این شرایط بهتر است

منبع : http://bigdata-madesimple.com/top-10-best-practices-in-mysql/

جوابی بنویسید:

آدرس ایمیل شما به صورت عمومی منتشر نخواهد شد.