bukachuk: В phpmyadmin вверху MySQL вернула пустой результат (т.е. ноль строк). ( запрос занял 0.0009 сек. )
На EXPLAIN он не покажет время, надо делать без него
bukachuk: Млин попутал таблица cat столбец catid. Я уже честно устал и тяжело так заочно, BTREE это да оно. Посмотрите время запроса и кол-во обраатываемых строк. Если строк много и стоит filesort это жрет проц, если строк мало то это не страшно и возможно причина не в этом
К сожеление не знаю где посмотреть вреся запроса, если нужно в PHP это делать то уже завтра тогда, а так смотрел в phpmyadmin ничего не показует - в плане времени, а в SQLyog все по нолям.
А этот Filesort я заметил что стоит в почти в кадом запросе в скрипте сайта..
bukachuk: Права колонка видите filesort ? Это значит тут индексы не задействованы, то есть mysql считает все записи из таблицы. Это может быть из-за индексов или из-за того что таблица просто мала и mysql решил что так быстрее
На этот scat.subcatid столбец индекс стоит? Если нет попробуйте поставить. После этого посмотрите опять EXPLAIN
Index type : BTREE вот что пишет - надеюсь это оно ?
bukachuk: А чо так строк мало, вы не всю базу скопировали? У вас filesort там, но при таком кол-во строк это ерунда
Этот запрос как я понял категории только вызывает а не посты сообщений, каких строк ? -
Я выполнил запрос, приведенный мной выше.. вы мне можене обьяснить куда нужно смотреть что бы определить тажелый запрос ? Может выполнить запрос который обращаеться за Контентом ?
donriga: explain
select .... ваш запрос
в phpmyadmin
---------- Добавлено 17.10.2012 в 23:10 ----------
любой запрос возвращает какой либо результат, вам для начала можно закешировать результат вашего запроса полностью например на час и при обращении скрипта к базе не выполнять снова запрос а брать результат из кеша, пусть это будет файловый кеш
какой у вас движок сайта? самописный?
Т.е мне сначала нужно отпимизировать сам запрос,
Потом сделать кэш для запросов ?
Просто дело в том, что контент - практически статичен, все категории статичны, они созданные, и не подлежать переименованию или еще чему либо, разве что добовлению.
bukachuk: Перенные то в запрос вставьте и сделайте его в базу с EXPLAIN впереди запроса и вообще сколько запрос по времени выполняеться?
Жаль что я не могу так быстро ответить вам и сделать то что вы попросили, 1, нет опыта, но я уже прочитал, что это Explain, есть щас доступ на локальный сервер, (т.е где храниться бэкап) там могу попробовать, буду рабираться.. , Или же нужно делать запрос из админ панели phpmyadmin на сервере ?
---------- Добавлено 17.10.2012 в 23:07 ----------
donriga: судя по запросу вы считаете количество позиций в категориях, я бы не стал так делать,
категории меняются редко их нужно обязательно кешировать, затем я бы вынес счетчики в отдельную таблицу и менял бы их при добавлении новой позиции +1.
неправильно каждый раз пересчитывать все счетчики и связки категорий
К сожелению я в этом не сильно рабираюсь, в оптимизации, но примерно понял что вы имели ввиду, это нужно полностью переделывать все запросы ? или можно только этот ?
donriga: пффф 10 тысяч записей это не серьезно,
параметры сервера в студию, полагаю у вас виртуальный хостинг)
в общем надо смотреть тормозящие запросы используя лог mysql_slow, также использовать кеширование запросов и оптимизировать структуру таблиц тирэ запросов, можте показать запрос который строит категории?
Вот запрос -
$sql = "SELECT scat.subcatid, scat.catid, COUNT(*) as adcnt
FROM $t_ads a
INNER JOIN $t_subcats scat ON scat.subcatid = a.subcatid AND ($visibility_condn)
INNER JOIN $t_cats cat ON cat.catid = scat.catid
INNER JOIN $t_cities ct ON a.cityid = ct.cityid
WHERE scat.enabled = '1'
$loc_condn
GROUP BY a.subcatid";
---------- Добавлено 17.10.2012 в 22:49 ----------
zhitov: Всегда лучше сначала разобраться в том, что вызывает проблему. А уже затем - решать ее.
А вы как-то неправильно действуете... Что-нибудь сделать - вдруг поможет. :(
Изучите вопрос оптимизации баз.
Спасибо, я не сильно рабираюсь в майскуле - но постараюсь изучить все в плане оптимизации.
В phpmyadmin вверху MySQL вернула пустой результат (т.е. ноль строк). ( запрос занял 0.0009 сек. )
На EXPLAIN он не покажет время, надо делать без него
Вот результат
Showing rows 0 - 29 (99 total, Query took 0.1046 sec)
Млин попутал таблица cat столбец catid. Я уже честно устал и тяжело так заочно, BTREE это да оно. Посмотрите время запроса и кол-во обраатываемых строк. Если строк много и стоит filesort это жрет проц, если строк мало то это не страшно и возможно причина не в этом
К сожеление не знаю где посмотреть вреся запроса, если нужно в PHP это делать то уже завтра тогда, а так смотрел в phpmyadmin ничего не показует - в плане времени, а в SQLyog все по нолям.
А этот Filesort я заметил что стоит в почти в кадом запросе в скрипте сайта..
Права колонка видите filesort ? Это значит тут индексы не задействованы, то есть mysql считает все записи из таблицы. Это может быть из-за индексов или из-за того что таблица просто мала и mysql решил что так быстрее
На этот scat.subcatid столбец индекс стоит? Если нет попробуйте поставить. После этого посмотрите опять EXPLAIN
Index type : BTREE вот что пишет - надеюсь это оно ?
А чо так строк мало, вы не всю базу скопировали? У вас filesort там, но при таком кол-во строк это ерунда
Этот запрос как я понял категории только вызывает а не посты сообщений, каких строк ? -
Я выполнил запрос, приведенный мной выше.. вы мне можене обьяснить куда нужно смотреть что бы определить тажелый запрос ? Может выполнить запрос который обращаеться за Контентом ?
Вы сдесь ?
Вот ответ на мой выше запрос.
Там где чорное, то имя базы, закрасил на всякий :)
для начала я бы даже не стал оптимизировать запрос, просто запихнул его в файловый кеш со сроком
жизни час
ну например от так http://ruseller.com/lessons.php?rub=37&id=962
Cпасибо большое, а что мне даст запрос, который я привел выше только с EXPLAIN ?
Я вот щас переменные найду и сделаю запрос,
А так я понял в принципе что нужно делать,
За что очень благодарен :)
Но запрос выложу как сделаю
explain
select .... ваш запрос
в phpmyadmin
---------- Добавлено 17.10.2012 в 23:10 ----------
любой запрос возвращает какой либо результат, вам для начала можно закешировать результат вашего запроса полностью например на час и при обращении скрипта к базе не выполнять снова запрос а брать результат из кеша, пусть это будет файловый кеш
какой у вас движок сайта? самописный?
Т.е мне сначала нужно отпимизировать сам запрос,
Потом сделать кэш для запросов ?
Просто дело в том, что контент - практически статичен, все категории статичны, они созданные, и не подлежать переименованию или еще чему либо, разве что добовлению.
Ну а так вроде все.
Перенные то в запрос вставьте и сделайте его в базу с EXPLAIN впереди запроса и вообще сколько запрос по времени выполняеться?
Жаль что я не могу так быстро ответить вам и сделать то что вы попросили, 1, нет опыта, но я уже прочитал, что это Explain, есть щас доступ на локальный сервер, (т.е где храниться бэкап) там могу попробовать, буду рабираться.. , Или же нужно делать запрос из админ панели phpmyadmin на сервере ?
---------- Добавлено 17.10.2012 в 23:07 ----------
судя по запросу вы считаете количество позиций в категориях, я бы не стал так делать,
категории меняются редко их нужно обязательно кешировать, затем я бы вынес счетчики в отдельную таблицу и менял бы их при добавлении новой позиции +1.
неправильно каждый раз пересчитывать все счетчики и связки категорий
К сожелению я в этом не сильно рабираюсь, в оптимизации, но примерно понял что вы имели ввиду, это нужно полностью переделывать все запросы ? или можно только этот ?
пффф 10 тысяч записей это не серьезно,
параметры сервера в студию, полагаю у вас виртуальный хостинг)
в общем надо смотреть тормозящие запросы используя лог mysql_slow, также использовать кеширование запросов и оптимизировать структуру таблиц тирэ запросов, можте показать запрос который строит категории?
Вот запрос -
---------- Добавлено 17.10.2012 в 22:49 ----------
Всегда лучше сначала разобраться в том, что вызывает проблему. А уже затем - решать ее.
А вы как-то неправильно действуете... Что-нибудь сделать - вдруг поможет. :(
Изучите вопрос оптимизации баз.
Спасибо, я не сильно рабираюсь в майскуле - но постараюсь изучить все в плане оптимизации.