/
  • کندی اجرای کوئری (اختلاف دو کوئری مشابه 20 ثانیه!)

  • ارسال پاسخ   امتیاز موضوع:
    • 0 رأی - میانگین امیتازات: 0
    • 1
    • 2
    • 3
    • 4
    • 5

    حالت موضوعی | حالت خطی کندی اجرای کوئری (اختلاف دو کوئری مشابه 20 ثانیه!)
    نویسنده پیام
    Reza آفلاین
    رضا شیخله
    *****

    ارسال‌ها: 3,024
    تاریخ عضویت: ۱۳۹۰ آبان ۱۶
    اعتبار: 133
    تشکرها : 2724
    ( 2718 تشکر در 1692 ارسال )
    ارسال: #1
    کندی اجرای کوئری (اختلاف دو کوئری مشابه 20 ثانیه!)
    يه سرور در نظر بگيريد با يک گيگ رم و سي پي يو اين
    کد:
    microcode: 0x710
    cpu MHz: 3599.999
    cache size: 10240 KB
    physical id: 0
    siblings: 1
    core id: 0
    cpu cores: 1
    apicid: 0
    initial apicid: 0
    fpu: yes
    fpu_exception: yes
    cpuid level: 13
    wp: yes
    flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxs
    r sse sse2 ss syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc
    aperfmperf eagerfpu pni pclmulqdq ssse3 cx16 sse4_1 sse4_2 popcnt aes xsave avx hypervisor lahf_lm ida arat
    epb xsaveopt pln pts dtherm
    bogomips: 7199.99
    clflush size: 64
    cache_alignment: 64
    address sizes: 40 bits physical, 48 bits virtual
    power management:

    اينم ميزان مصرف
    کد:
    CPU[#*                                      1.3%]     Tasks: 72, 28 thr; 2 running
      Mem[|||||||||||||||||||#***************407/994MB]     Load average: 0.29 0.20 0.24
      Swp[||                                 49/1905MB]     Uptime: 6 days, 05:30:20

    سرور اوبونتو 14.04
    ديتابيس mariadb 5.5
    وبسرور nginx

    يه ديتابيس داريم که يه جدول items داره با حدود 6 ميليون رکورد
    به شرح زير
    [تصویر:  3308614138360181858_1.png]
    innoDB هم هست

    حالا من ميخوام بدونم چرا کوئري
    select count(id) _all , count(distinct ip) as _unique from items where site_id=56 and date='1393-07-28';
    با کوئري
    select count(id) _all , count(distinct ip) as _unique from items where date='1393-07-28';
    که فقط توي يه where site_id=56
    فرق دارن تايمشون چيزي حدود 20 ثانيه اختلاف داره
    site_id هم int 10 هست ايندکس هم شده !!!

    کد:
    MariaDB [webshomar]> select count(id) _all , count(distinct ip) as _unique from items where site_id=56 and date='1393-07-28';
    +------+---------+
    | _all | _unique |
    +------+---------+
    | 6879 |    1455 |
    +------+---------+
    1 row in set (34.81 sec)

    MariaDB [webshomar]> select count(id) _all , count(distinct ip) as _unique from items where  date='1393-07-28';
    +-------+---------+
    | _all  | _unique |
    +-------+---------+
    | 15973 |    5137 |
    +-------+---------+
    1 row in set (11.12 sec)


    MariaDB [webshomar]> select count(id) _all  from items where site_id=56 and date='1393-07-28' ;
    +------+
    | _all |
    +------+
    | 6879 |
    +------+
    1 row in set (35.46 sec)

    MariaDB [webshomar]> select count(id) _all  from items where  date='1393-07-28' ;
    +-------+
    | _all  |
    +-------+
    | 15983 |
    +-------+
    1 row in set (10.37 sec)

    فايل کانفيگ mysql server هم خدمت شما
    کد:
    key_buffer= 256M
    max_allowed_packet= 16M
    thread_stack= 192K
    thread_cache_size       = 256
    max_connections        = 300
    table_cache            = 512
    thread_concurrency     = 4
    query_cache_limit= 4M
    query_cache_size        = 64M
    __________________________________________________________________________
    -- - RezaWorkShop.ir - blog.RezaOnline.net
    ۱۳۹۳ مهر ۲۹ ۱۲:۴۶ صبح
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    itstaghi آفلاین
    عضو
    ***

    ارسال‌ها: 144
    تاریخ عضویت: ۱۳۹۰ مرداد ۳۰
    اعتبار: 1
    تشکرها : 72
    ( 88 تشکر در 58 ارسال )
    ارسال: #2
    RE: کندی اجرای کوئری (اختلاف دو کوئری مشابه 20 ثانیه!)
    اکسپلینشون رو هم میزاشتی بهتر میشد فهمید چی به چیه
    ۱۳۹۳ مهر ۲۹ ۱۱:۱۳ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    admin آفلاین
    وحید سهرابلو
    **********

    ارسال‌ها: 5,698
    تاریخ عضویت: ۱۳۸۷ آذر ۲۴
    اعتبار: 100
    تشکرها : 1362
    ( 6198 تشکر در 3439 ارسال )
    ارسال: #3
    RE: کندی اجرای کوئری (اختلاف دو کوئری مشابه 20 ثانیه!)
    site_id و date رو یک ایندکس مشترک براشون ایجاد کن نتیجه رو بگو
    __________________________________________________________________________
    http://mydolphin.ir
    ۱۳۹۳ مهر ۳۰ ۱۰:۳۷ صبح
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    Reza آفلاین
    رضا شیخله
    *****

    ارسال‌ها: 3,024
    تاریخ عضویت: ۱۳۹۰ آبان ۱۶
    اعتبار: 133
    تشکرها : 2724
    ( 2718 تشکر در 1692 ارسال )
    ارسال: #4
    RE: کندی اجرای کوئری (اختلاف دو کوئری مشابه 20 ثانیه!)
    سلام یه تست کردم داده هایی که درگیر نمیشدن رو حذف کردم و تعداد سطرهارو کردم یک میلیون رکورد (فقط اونایی که درگیر میشن)
    سرعت رسید به 2 و 3 ثانیه .
    فکر نمیکردم حجم دیتابیس انقدر تاثیر داشته باشه .
    به نظرت postgresql بهتر نیست ؟

    یا قمر بنی هاشم داش وجید چه کردی Heart
    کد:
    MariaDB [webshomar]> select count(id) _all , count(distinct ip) as _unique from items where site_id=5
    6 and date='1393-07-28';
    +------+---------+
    | _all | _unique |
    +------+---------+
    | 6886 |    1459 |
    +------+---------+
    1 row in set (0.38 sec)

    MariaDB [webshomar]> select count(id) _all , count(distinct ip) as _unique from items where  date='13
    93-07-28';
    +-------+---------+
    | _all  | _unique |
    +-------+---------+
    | 16306 |    5239 |
    __________________________________________________________________________
    -- - RezaWorkShop.ir - blog.RezaOnline.net
    ۱۳۹۳ مهر ۳۰ ۱۲:۱۴ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    admin آفلاین
    وحید سهرابلو
    **********

    ارسال‌ها: 5,698
    تاریخ عضویت: ۱۳۸۷ آذر ۲۴
    اعتبار: 100
    تشکرها : 1362
    ( 6198 تشکر در 3439 ارسال )
    ارسال: #5
    RE: کندی اجرای کوئری (اختلاف دو کوئری مشابه 20 ثانیه!)
    چی شد؟
    pgsql برای بهینه سازی خیلی بهتره.
    __________________________________________________________________________
    http://mydolphin.ir
    (آخرین ویرایش در این ارسال: ۱۳۹۳ آبان ۱ ۱۰:۵۶ صبح، توسط admin.)
    ۱۳۹۳ آبان ۱ ۱۰:۵۲ صبح
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط : Reza
    Reza آفلاین
    رضا شیخله
    *****

    ارسال‌ها: 3,024
    تاریخ عضویت: ۱۳۹۰ آبان ۱۶
    اعتبار: 133
    تشکرها : 2724
    ( 2718 تشکر در 1692 ارسال )
    ارسال: #6
    RE: کندی اجرای کوئری (اختلاف دو کوئری مشابه 20 ثانیه!)
    نقل قول: چی شد؟
    کد:
    1 row in set (0.38 sec)
    Big Grin
    عین موشک جواب میده

    والا حقیقتش اوایل با postgresql نوشته بودم اما یه pt-get upgrade انجام دادم که کل سرورو به هم ریخت بعد که رستارت کردم postgresql به هیچ سراطی مستقیم نشد دیگه سریع سویچ کردم روی mysql حالام که رکوردها میلیونی شده خوردم به خنسی (خنصی!) Big Grin
    بک آپ گرفتم چیزی حدود یک گیگ شد خواستم بریزم روی postgresql که هر کاری کردم با ابزارها تغییر دادم نشد که نشد

    postgresql رو من روی چیزی حدود بیست هزار رکورد تست کردم قبلا خیلی سریع بود حتی اگه ساب کوئری و group by داشتم توی کوئری اصلا عین خیالش نبود
    mysql فقط به درد دستورات ساده میخوره یه زده پیچیده بشه سرعت افتضاح میاد پایین

    یه سرور دیگه گرفتم نمیدونم حالا شاید انتقال دادم دیتابیس رو باید ببینم چیزی پیدا میکنم بک آپ mysql رو تبدیل کنه به pgsql یا نه .
    در هر حال ممنون
    __________________________________________________________________________
    -- - RezaWorkShop.ir - blog.RezaOnline.net
    ۱۳۹۳ آبان ۱ ۱۱:۲۸ صبح
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    admin آفلاین
    وحید سهرابلو
    **********

    ارسال‌ها: 5,698
    تاریخ عضویت: ۱۳۸۷ آذر ۲۴
    اعتبار: 100
    تشکرها : 1362
    ( 6198 تشکر در 3439 ارسال )
    ارسال: #7
    RE: کندی اجرای کوئری (اختلاف دو کوئری مشابه 20 ثانیه!)
    (۱۳۹۳ آبان ۱ ۱۱:۲۸ صبح)Reza نوشته شده توسط:  
    نقل قول: چی شد؟
    کد:
    1 row in set (0.38 sec)
    Big Grin
    عین موشک جواب میده

    والا حقیقتش اوایل با postgresql نوشته بودم اما یه pt-get upgrade انجام دادم که کل سرورو به هم ریخت بعد که رستارت کردم postgresql به هیچ سراطی مستقیم نشد دیگه سریع سویچ کردم روی mysql حالام که رکوردها میلیونی شده خوردم به خنسی (خنصی!) Big Grin
    بک آپ گرفتم چیزی حدود یک گیگ شد خواستم بریزم روی postgresql که هر کاری کردم با ابزارها تغییر دادم نشد که نشد

    postgresql رو من روی چیزی حدود بیست هزار رکورد تست کردم قبلا خیلی سریع بود حتی اگه ساب کوئری و group by داشتم توی کوئری اصلا عین خیالش نبود
    mysql فقط به درد دستورات ساده میخوره یه زده پیچیده بشه سرعت افتضاح میاد پایین

    یه سرور دیگه گرفتم نمیدونم حالا شاید انتقال دادم دیتابیس رو باید ببینم چیزی پیدا میکنم بک آپ mysql رو تبدیل کنه به pgsql یا نه .
    در هر حال ممنون

    استراکچر رو که تبدیل کردی. بقیه کانورت رو خودت با php هم می تونی بنویسی. برای postgre هم بهتره از ریپوزیتوری هاش نصب کنی. آپگیرد هم از همون بزنی. من تا به حال باهاش به مشکلی نخوردم.
    البته بی صبرانه منتظر نسخه 9.4 هستم
    __________________________________________________________________________
    http://mydolphin.ir
    ۱۳۹۳ آبان ۲ ۰۱:۲۴ صبح
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    « قدیمی تر | تازه‌ تر »

    ارسال پاسخ
    پرش به انجمن:


    کاربرانِ درحال بازدید از این موضوع: 1 مهمان
    IranPHP.org | تماس با ما | بازگشت به بالا | بازگشت به محتوا | بایگانی | پیوند سایتی RSS