Перейти к содержимому


Оптимизация MySQL запросов


  • Вы не можете ответить в тему
Сообщений в теме: 65

#41 pavel77

    Продвинутый пользователь

  • Download User
  • PipPipPip
  • 116 сообщений
Репутация: 10
Начинающий

Отправлено 19 January 2012 - 12:11 AM

Не нашелся добрый человек с правильным напильником? Получилось у кого данный модуль допилить и убрать баги?
  • 0

#42 Matit

    Продвинутый пользователь

  • Download User
  • PipPipPip
  • 104 сообщений
Репутация: 2
Начинающий

Отправлено 07 February 2012 - 11:51 AM

Кто-нибудь ставил патч на сайт с ЧПУ? Норм работает?
  • 0
Все "спасибо" в репутацию :)

#43 bank911

    Пользователь

  • Пользователи
  • PipPip
  • 22 сообщений
Репутация: 0
Начинающий

Отправлено 14 February 2012 - 08:09 PM

человек нашелся

Не нашелся добрый человек с правильным напильником? Получилось у кого данный модуль допилить и убрать баги?


С напильником нету никого, есть клиент на готовый магазин - как только он проплатит, я возьму новую версию у разработчика, поделюсь. А вообще, мое мнение такое, что shopcms не рассчитан на более чем 3000 позиций в прайсе - могли бы просто сделать более экономную базу в таком случае, сериализовать данные и т.п. А так сделано просто...
  • 0

#44 pavel77

    Продвинутый пользователь

  • Download User
  • PipPipPip
  • 116 сообщений
Репутация: 10
Начинающий

Отправлено 16 February 2012 - 05:46 PM

С напильником нету никого, есть клиент на готовый магазин - как только он проплатит, я возьму новую версию у разработчика, поделюсь. А вообще, мое мнение такое, что shopcms не рассчитан на более чем 3000 позиций в прайсе - могли бы просто сделать более экономную базу в таком случае, сериализовать данные и т.п. А так сделано просто...


Новую версию у разработчика можешь не покупать ;) Забил он на этот модуль! И нифига исправлять ошибки не хочет.
Купил я ее - новую версию (так уж очень нужно мне было)! Разраб просто убрал кеширование запросов и все! осталась только оптимизация запросов что по себе фактичеки ничего не дает, по сравнению с кешированием.
На мою просьбу исправить ошибки в модуле, а не отключать кеширование - он ответил что это очень тяжело и типа не имеет смысла.

Так что так.... Очень разочарован в данном разработчике.
  • 0

#45 bank911

    Пользователь

  • Пользователи
  • PipPip
  • 22 сообщений
Репутация: 0
Начинающий

Отправлено 16 February 2012 - 08:55 PM

pavel77, спасибо за информацию! Сэкономили чуточку денег! Сейчас с ними не так хорошо, чтобы выбрасывать на "недоработанные переработки"!
  • 0

#46 revizor201

    Пользователь

  • Assistent vsupport.club
  • PipPip
  • 13 сообщений
Репутация: 0
Начинающий

Отправлено 27 April 2012 - 09:48 PM

поставил сие чудо...проблем в корзине не увидел, только в админ в общих настройках придется два раз обновлять страницу, чтобы сохранить
  • 0

#47 revizor201

    Пользователь

  • Assistent vsupport.club
  • PipPip
  • 13 сообщений
Репутация: 0
Начинающий

Отправлено 27 April 2012 - 10:57 PM

кол-во запросов уменьшилось со 120-140 до 65 прикаталоге в 4000 ед
  • 0

#48 vakkula

    Продвинутый пользователь

  • Download User
  • PipPipPip
  • 101 сообщений
Репутация: 6
Начинающий

Отправлено 26 July 2012 - 12:26 PM

если в core/includes/database/mysql.php закомментировать строку

optMysql::trig_after_query($s, $res);
товар в корзину добавляется как нужно. т.е. трабл где-то в optMysql.class.php в функции trig_after_query, но разобраться с этим в данный момент моих знаний не хватает :)


Да действительно проблема с корзиной исчезает, кол-во запросов к базе не увеличивается.
НО тут же проявляется проблема в админке - общие настройки, вообще не выводится инфа.

Может кто поможет ретить вопрос??? уж больно стоящий модуль....

Есть решение данной проблемы?!
  • 0

#49 ale-x

    Пользователь

  • Пользователи
  • PipPip
  • 19 сообщений
Репутация: 2
Начинающий

Отправлено 26 July 2012 - 05:45 PM

Поставил, но не трогал файлы
core/functions/product_functions.php
core/functions/category_functions.php
т.к. с ними вообще магазин не хотел работать. По коду посмотрел - вроде и без них можно прожить :)
Проблем с корзиной нет (использую AJAX), админка работает, есть небольшой баг, но он вообще не напрягает.
Количество запросов к базе уменьшилось в 1,5 - 2 раза.

P.S. К тому же сменил хостинг с nic.ua - теперь сайт просто летает! Когда был на ник.юа работа с БД прыгала от 0.7 до 20 сек. На новом хостинге общее время открытия страниц не превышает 0.1 сек. Товаров в базе около 6500.
  • 0

#50 Sergei

    Пользователь

  • Assistent vsupport.club
  • PipPip
  • 15 сообщений
Репутация: 0
Начинающий

Отправлено 15 February 2013 - 03:10 PM

Установил патч, через двое суток (не сразу) почему-то стало не возможно зайти в админку сайта по логину/паролю, убрал патч (заменил файлы на старые) все опять заработало. Почему такое могло произойти? И главное не сразу, а где-то на третий день после установки.
  • 0

#51 eugene_wb

    Продвинутый пользователь

  • Модераторы
  • 827 сообщений
Репутация: 167
Мастер

Отправлено 15 February 2013 - 03:29 PM

возможно за эти три дня что то еще меняли и допустили ошибку при замене
P.S.

Установил

и

(заменила

Как понимать?
  • 0
Изображение Изображение Изображение

#52 Sergei

    Пользователь

  • Assistent vsupport.club
  • PipPip
  • 15 сообщений
Репутация: 0
Начинающий

Отправлено 18 February 2013 - 07:18 AM

и допустили ошибку при замене

при замене чего? файлов во время установки патча? и при этом последствия проявились через два дня?
а так, на сайт разве что новый материал добавлялся, и то мизер
  • 0

#53 Sergei

    Пользователь

  • Assistent vsupport.club
  • PipPip
  • 15 сообщений
Репутация: 0
Начинающий

Отправлено 20 February 2013 - 01:34 PM

Подскажите, пожалуйста, у этого патча есть техподдержка? (т.к. он платный по логике вроде должна быть, но не понятно куда писать) Т.к. патч хотелось бы поставить чтоб работал и без проблем, хочу сделать это поэтапно, списываясь с тех поддержкой (т.е., написать об этом, поставить патч как написано в инструкции на сайте, написать, подождать будут ли глюки у сайта, контролируя какие еще работы ведутся на сайте (или чтобы они не велись, ну кроме как редактирования товаров, добавления товаров и новостей и т.п.), если возникнет та же ошибка написать в техподдрежку об этом, чтобы был виден весь процесс действий, и можно было как-то все это исправить)
  • 0

#54 Sergei

    Пользователь

  • Assistent vsupport.club
  • PipPip
  • 15 сообщений
Репутация: 0
Начинающий

Отправлено 25 February 2013 - 01:53 PM

Итак, сегодня
Сделал резервную копию core/includes/database/mysql.php
Заменил файлы:
core/includes/database/mysql.php
core/includes/database/optMysql.class.php
core/functions/product_functions.php
core/functions/category_functions.php
core/includes/product_detailed.php
(файл core/includes/counter.php не стал заменять)

теперь по логину/паролю в админку не зайти, в чем может быть причина (файлы на старые пока не заменял)
  • 0

#55 mrTimex

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 82 сообщений
Репутация: -2
Начинающий

Отправлено 24 September 2013 - 08:57 AM

ночью сегодня попробую себе поставить и отпишусь (каталогов и подкаталогов 1000, товаров 13000) сейчас работа с бд идет около 0.6-1 сек сильно напрягает
  • 0

#56 Kyborg

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 31 сообщений
Репутация: 1
Начинающий

Отправлено 24 September 2013 - 10:01 PM

Поставил себе данное дополнение, все работает, но единственный мною замеченный пока глюк, это необходимость сохранять два раза настройки в админке при их изменении.
  • 0

#57 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 24 September 2013 - 10:23 PM

Поставил себе данное дополнение, все работает, но единственный мною замеченный пока глюк, это необходимость сохранять два раза настройки в админке при их изменении.

Ню-ню..
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#58 Salp

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 218 сообщений
Репутация: 54
Продвинутый

Отправлено 14 June 2017 - 10:54 PM

Ню-ню..

Это ню неспроста )))
  • 0

#59 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 15 June 2017 - 02:54 PM

Я уже писал в ветке про ускорение работы ShopCMS, что это весьма полезное добавление, состоящее из двух моментов:
1. переделка некоторых моментов в ShopCMS, ускоряющих работу и уменьшающих количество SQL-запросов.
2. кэширование SQL-запросов путем использования класса optMysql (файл optMysql.class.php).
Обе доработки можно использовать совершенно отдельно друг от друга.
Насколько помню (прошло больше года с тех пор, когда пробовал) никаких глюков я не заметил кроме необходимости перезагружать страницу "Общих настроек" после нажатия "сохранить". Там же описано, как это исправить.

PS. Посмотрел я на optMysql.class.php более внимательно. У него в шапке написано:

/*
Оптимизация Mysql запросов для ShopCMS
- Кэширование параметров конфигурации
- Кэширование результатов повторяющихся выборок
*/

1. Кэширование параметров конфигурации ничем (кроме обвязки в виде функций класса) не отличается от моей модификации:

function _getSettingOptionValue( $settings_constant_name )
{
# BEGIN оптимизируем SQL-запросы
global $conf_data;
if (isset($conf_data[$settings_constant_name])) return $conf_data[$settings_constant_name];
# END оптимизируем SQL-запросы
$q = db_query("select settings_value from ".SETTINGS_TABLE.
" where settings_constant_name='".xEscSQL($settings_constant_name)."'" );
# BEGIN оптимизируем SQL-запросы
# if ( $row = db_fetch_row( $q ) ) return $row["settings_value"];
if ( $row = db_fetch_row( $q ) )
{
$conf_data[$settings_constant_name] = $row["settings_value"];
return $row["settings_value"];
}
# END оптимизируем SQL-запросы
return null;
}


2. Кэширование результатов повторяющихся выборок меня несколько смущает
2.1. т.к. производится по строке SQL-запроса.
Например, три последовательных запроса
SELECT COUNT(*) FROM table;
DELETE FROM table;
SELECT COUNT(*) FROM table;
явно дадут XXX после первого запроса и ноль после третьего, хотя первый и третий запрос идентичны.
В случае же использования кэширования оба раза будет получено XXX, что неверно.
2.2. Размер кэша - 8 запросов. Велика ли вероятность в пределах последовательных восьми запросов повторно получить такой же запрос? Это константа и ее можно изменить, но чем больше размер кэша, тем больше вероятность получить не только пользу, но и ситуацию из п.2.1.

В общем, после сегодняшнего изучения кода этого класса мне кажется, что применять его не только бессмысленно, но и потенциально вредно. Сама идея - кэшировать исходя из преположения, что SQL-запросу с неким текстом всегда (или хотя бы в течение восьми ближайших запросов) соответствует один и тот же ответный набор данных - неверна.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#60 Salp

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 218 сообщений
Репутация: 54
Продвинутый

Отправлено 16 June 2017 - 11:31 AM

badisoft, как Вам такой запрос из home.php?
 Отображение строк 0 - 10 (11 всего, Запрос занял 0.0004 сек.)
select s.productID, s.categoryID, s.name, s.Price, s.list_price, s.brief_description, s.product_code, s.default_picture, s.enabled, s.in_stock, b.productID, t.filename, s.customer_votes, s.customers_rating, s.cpu
FROM cguy_special_offers AS b INNER JOIN cguy_products AS s on (b.productID=s.productID) INNER JOIN cguy_product_pictures AS t on (s.default_picture=t.photoID AND s.productID=t.productID)
WHERE s.enabled=1 order by b.sort_order

Хотя, он выполняется довольно быстро и всего на одной странице...
  • 0