نقل قول نوشته اصلی توسط EmRa228 نمایش پست ها
سلام و خسته نباشید
من یک سایت گزارشگیری و تحلیل گری دارم که با زبان PHP و پایگاه داده MySQL برنامه نویسی شده.

این سایت فقط یک کاربر دارد اما پایگاه داده اش در مجموع حدود 1 میلیارد رکورد دارد و دارای دو جدول 300 میلیون رکوردی و نرخ افزایش روزانه 5 میلیون رکورد است.

روی سرور MySQL آن گزارش گیری های پیچیده انجام می شود که مصرف بسیار بالای CPU را در بر دارد.
متاسفانه زمان بعضی از گزارش ها به 6 ساعت هم می رسد اما ما نهایتا 60 ثانیه می خواهیم.
این سایت هم اکنون روی سرور با 20 گیگ رم و حدود 2.7 پردازنده 4 هسته ای Xeon پشتیبانی می شود.


قیمت برای ما اهمیتی ندارد، فقط می خواهیم سرعت گزارش دهی کاهش پیدا کند.
آیا راهکار سخت افزاری برای کاهش زمان گزارش دهی، با توجه به اینکه فقط یک پردازش را یک نفر انجام می دهد، دارید؟
بیشتر منایعی که MySQL مصرف می کند مخصوصا در مواقع JOIN زدن، CPU است اما هر پردازش بیشتر از 2.7 مصرف ندارد.


به نظر من چون بزرگترین سایت دنیا (فیس بوک) از پایگاه داده MySQL استفاده می کند، خود MySQL نباید اینقدر ضعیف باشد!!!
اما وقتی سه جدول که هر کدام حدود 1 میلیون رکورد دارد را LEFT JOIN می زنم چند ساعت طول می کشد، این غیر طبیعی نیست؟
البته در صورت نیاز می توانیم کل پایگاه داده را به سیستم قوی تر تغییر دهیم!


آیا راهکار سخت افزاری برای کاهش زمان گزارش دهی، با توجه به اینکه فقط یک پردازش را یک نفر انجام می دهد، دارید؟

منتظر جوابتان هستم
باتشکر

توصیه من به شما اینه :

استفاده از سروری با حد اقل ۲ سی پی یو فیزیکی Intel E5-2687W و ۲۵۶ گیگ رم + هارد SSD که سخت افزار قدرتمندی برای این کار به حساب میاد

استفاده از نسخه های Enterprise MySQL

استفاده از Nginx + php-fpm

استفاده از لینوکس توزیع Ubuntu یه جای CentOS

کانفیگ بدون کنتزل پنل و بسیار سبک