بهينه سازي به خاطر كوئري هاي سنگين ؟!
با عرض ادب خدمت دوستان
اين تاپيك رو ديدم
كه موضوعش مرتبط بود اما حقيقت اين كه سي ام اس سايت بنده جوملاست و نه نيوك .
ارورشون اينه :
نقل قول:
نمونه ای از کوئری اجرا شده در سرور
# Time: 130708 20:23:01
# User@Host: realmadi_dayi[realmadi_dayi] @ localhost []
# Query_time: 5.270393 Lock_time: 1.572218 Rows_sent: 34738 Rows_examined: 172804
SET timestamp=1373298781;
SELECT a.id, a.title, a.alias, a.title_alias, a.introtext, a.fulltext, a.sectionid, a.state, a.catid, a.created, a.created_by, a.created_by_alias, a.modified, a.modified_by, a.checked_out, a.checked_out_time, a.publish_up, a.publish_down, a.attribs, a.hits, a.images, a.urls, a.ordering, a.metakey, a.metadesc, a.access, CASE WHEN CHAR_LENGTH(a.alias) THEN CONCAT_WS(':', a.id, a.alias) ELSE a.id END as slug, CASE WHEN CHAR_LENGTH(cc.alias) THEN CONCAT_WS(":", cc.id, cc.alias) ELSE cc.id END as catslug, CHAR_LENGTH( a.`fulltext` ) AS readmore, u.name AS author, u.usertype, cc.title AS category, g.name AS groups, u.email as author_email FROM jos_content AS a INNER JOIN jos_categories AS cc ON cc.id = a.catid LEFT JOIN jos_sections AS s ON s.id = a.sectionid LEFT JOIN jos_users AS u ON u.id = a.created_by LEFT JOIN jos_groups AS g ON a.access = g.id WHERE a.access <= 0 AND s.id = 7 AND s.access <= 0 AND cc.access <= 0 AND s.published = 1 AND cc.published = 1 AND a.state = 1 AND ( publish_up = '0000-00-00 00:00:00' OR publish_up <= '2013-07-08 15:52:54' ) AND ( publish_down = '0000-00-00 00:00:00' OR publish_down >= '2013-07-08 15:52:54' ) ORDER BY a.created DESC;
زمان اجرا شدن کوئری های برنامه شما بسیار بالا است و این امر به شدت بر روی کارایی سرور تاثیر گذار می باشد . این مشکل میتواند مربوط به پلاگین های نصب شده بر روی برنامه شما، ویا حجم بالای دیتابیس شما باشد . بنابراین به شما پیشنهاد میکنیم که هرچه سریعتر این مشکل را با برنامه نویس خود مطرح کنید و در جهت رفع آن سریعا اقدامات لازم را انجام دهید.
جالب اين كه تو اين تاپيكي كه اين بنده خدا زده هم اسم ديتابيس بنده رو نوشته ! User@Host: realmadi_dayi[realmadi_dayi] @ localhost [] كه يا از بي دقتيه يا از كمبود سواد مسئول هاستينگ :دی
تو اون تاپيك دوستان پرسيده بودن كه آيا هاستينگ نت افزار هست يا خير ، كه من تكذيب مي كنم هاستينگ ديگه اي هست كه نميدونم حق دارم اسمشونو ببرم يا نه!
دوستان ماي اسكيول كار ميدونن معني اين ارور چيه ؟ سرعت سايتم هم وحشتناك پايينه !
پاسخ : بهينه سازي به خاطر كوئري هاي سنگين ؟!
سلام .
این خطاها Slow Query هستش که علت بیشتر ارسال کوئریهای نامناسب به سرور و عدم یونیک کردن و یا ایندکس گزاری صحیح بر روی جداول هستش .
بهترین کاری که میتونید در این مواقع انجام بدید این هستش که جداول توسط برنامه نویس چک و بهینه سازی بر روی ان صورت بگیرد .
دلایل میتونه غیر از این هم باشه ، از جمله محدود بودن فضای کاری mysql بر روی رم ، قدرت پردازنده ، تعداد کلاینت های در حال سرویس گیری ، نوع جداول ، تایپ جداول ، و ...
البته کوئری بالا که خیلی پیچیده و شامل تعداد زیادی grouping و جوینینگ شده که خودش در کاهش سرعت موثر هست چراکه نتایج باید به تعداد زیاد مورد تحلیل و مرتب سازی قرار بگیرد .
موفق باشید .