سلام کاربران گرامی ، امیدوارم که شاد باشید و سلامت وبا اموزش ماهمراه باشید امروز میخوام در مورد بهینه سازی پایگاه داده بیاموزیم لطفاهمراه باشید.

یکی از ملزومات بهبود کارایی و بهینه سازی پایگاه داده، اندیس گذاری (indexing) می باشد. اندیس گذاری یک ویژگی یا قابلیت درونی پایگاه داده ی MySQL است که امکان جمع آوری سریع داده ها و دسترسی مستقیم به آن ها را فراهم می آورد.

جدولی را در نظر بگیرید به نام “sample” که دو سطر به نام های “number” و “employee” دارد. اگر یک کوئری ساده مانند نمونه ی زیر اجرا کنید:

SELECT * FROM sample WHERE number = 4;

در آن صورت پایگاه داده ی MySQL تمامی رکوردها را بررسی کرده و تنها آن سطری را برمی گرداند که مقدار عددی آن برابر با ۴ باشد.

اما اگر هزاران ورودی داشته باشید در آن صورت کوئری مذکور به کندی اجرا می شود. در جدول مثال فوق، فیلد منحصربفردی به نام “number” وجود دارد. بنابراین می توانید یک اندیس برای آن درنظر بگیرید. Indexing در واقع یک لیست داخلی (internal register) در سرویس MySQL ایجاد و ذخیره می کند. برای ایجاد اندیس کافی است کوئری زیر را اجرا کنید:

ALTER TABLE sample ADD INDEX (number);

 

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

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

کوئری دیگری وجود دارد که به واسطه ی آن می توانید سرعت بارگذاری پایگاه داده را افزایش دهید:

۱ OPTIMIZE TABLE sample;

می توانید با استفاده از دستور زیر پایگاه داده ی خود را از طریق SSH، بهینه سازی/تعمیر نمایید.

mysqlcheck -orp -u user_name database_name

در این دستور:

-o – مخفف Optimize می باشد

-r – مخفف repair می باشد

-p – زمانی که این option با دستور درج شده در بالا بکار می رود، از شما درخواست می شود گذرواژه ی پایگاه داده و user_name را وارد نمایید

-u – اسم کاربری تخصیص یافته به پایگاه داده، می توانید نام کاربری و گذرواژه ی cPanel را بکار ببرید

روش دیگری برای بهینه سازی MySQL نظیر استفاده از connection پیوسته، ذخیره ی موقت کوئری (query cache) و غیره … وجود دارد که می توان امتحان کرد. اما ممکن است برای بهره گیری از آن ها به مقداری تنظیم و پیکربندی در فایل های پیکربندی (config files) MySQL و Apache نیاز داشته باشید (query caching = متن یک دستور Select را همراه با نتیجه ی آن که به سرویس گیرنده ارسال شده ذخیره می کند. در صورتی که بعده ها دستور مشابه دریافت گردد، سرور بجای اینکه دستور را دوباره parse و اجرا بکند، نتایج مربوطه را مستقیما از Query Cache می خواند.).

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