مقایسه postgresql و mysql در رکوردهای میلیونی
لینک کوتاه سه شنبه , 23 دی 1393 5 دیدگاه
به لطف سایت وبشمار(webshomar.com) لازم شد بنچ مارکی روی رکوردهای نسبتا بالا(دومیلیون رکورد) روی دیتابیس محبوب mysql و postgresql انجام بدهم
مشخصات
mysql 5.5
postgresql 9.1
debian 7 os
ram 4gig
cpu Intel Core i5-2430M CPU @ 2.40GHz
این بنچ مارک روی سیستم شخصی خودم انجام شد و ساختار دیتابیس های هر دو مشابه بود و داده ها کاملا شبیه هم بودند
در تیبل از فیلد های int , char , varchar , smallint استفاده شده بود
مختصر نتایج این بنچ مارک به شرح زیر خدممتان ارائه میگردد
در دستورات select عادی با چندین condition دیتابیس mysql با اختلاف جزئی در حد یک دهم و یک صدم سریعتر از pg بود
اما نیاز سایت وبشمار ایجاب میکرد کوئریهای سنگین محاسباتی روی رکوردها انجام گیرد
دستوراتی شمارشی مثل select count(*) با چندیدن condition با برتری قابل ملاحضه ای با pgsql بود در تستی که انجام شد pgsql در 3.4 ثانیه و mysql در 6.4 ثانیه کوئری را به انجام رساند
در کوئری هایی که شامل دستور count و group by بود برتری با pgsql بود نتیجه کوئری در pgsql در 3.8 ثانیه و در mysql با 7.9 ثانیه به انجام رسید
در کوئری هایی که شامل دستور count(distinct field)بود برتری با mysql بود نتیجه یک کوئری در pgsql با 9.8 ثانیه و در mysql با 5.1 ثانیه به انجام رسید
اما در کوئری هایی که شامل distinct بدون استفاده از count بود برتری با pgsql بود با 2.6 ثانیه در حالیکه mysql در 4.6 ثانیه کوئری را به انجام رساند
در نهایت پیشنهاد میکنم بررسی کنید اگر قرار هست وبسایت شما داده های محاسباتی را ذخیره کند و لازم باشد محاسباتی روی داده ها انجام گیرد مثلا تعداد رکورد ها در سیستم هایی چون آمارگیر و انجمن و شبکه اجتماعی و امثالهم پیاده سازی کنید از postgresql استفاده کنید و اگر هم قرار هست سیستم های خبری و محتوایی پیاده سازی کنید از mysql استفاده کنید
اگر هم احساس میکنید رکوردهای شما هیچ وقت به میلیون رکورد نمیرسد از mysql استفاده کنید که سریعتر هست .
دقت کنید به طور مثال اگر سایت شما در هر دقیقه یک رکورد جدید به دیتابیس اضافه کند , بعد از دو سال به یک میلیون رکورد میرسد !!
پس حتما چشم انداز فعالیت سایتی که پیاده میکنید را بررسی کنید .
با تشکر رضا شیخله
ممنون آقا رضا
میشه یه آموزش واسه نحوه استفاده از postgresql بذارید؟
خیلی مهمه برام
ایا دستوراتش مثل mysql هست یا کلا فرق داره؟