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


Правила форума

Внимание!!! Если не можете скачать, пожалуйста ознакомьтесь с условиями получения доступа с файлам форума. Правила форума


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


Сообщений в теме: 65

#41 pavel77

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

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

Отправлено 19 января 2012 - 00:11

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

#42 Matit

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

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

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

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

#43 bank911

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

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

Отправлено 14 февраля 2012 - 20:09

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

Цитата

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

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

#44 pavel77

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

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

Отправлено 16 февраля 2012 - 17:46

Цитата

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

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

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

#45 bank911

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

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

Отправлено 16 февраля 2012 - 20:55

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

#46 revizor201

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

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

Отправлено 27 апреля 2012 - 21:48

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

#47 revizor201

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

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

Отправлено 27 апреля 2012 - 22:57

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

#48 vakkula

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

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

Отправлено 26 июля 2012 - 12:26

Просмотр сообщенияpavel77 (07 ноября 2011 - 23:18) писал:

Цитата

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

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

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

#49 ale-x

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

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

Отправлено 26 июля 2012 - 17:45

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

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

#50 Sergei

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

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

Отправлено 15 февраля 2013 - 15:10

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

#51 eugene_wb

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

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

Отправлено 15 февраля 2013 - 15:29

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

Просмотр сообщенияSergei сказал:

Установил
и

Просмотр сообщенияSergei сказал:

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

#52 Sergei

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

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

Отправлено 18 февраля 2013 - 07:18

Просмотр сообщенияeugene_wb (15 февраля 2013 - 15:29) писал:

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

#53 Sergei

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

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

Отправлено 20 февраля 2013 - 13:34

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

#54 Sergei

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

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

Отправлено 25 февраля 2013 - 13:53

Итак, сегодня
Сделал резервную копию 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 не стал заменять)

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

#55 mrTimex

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

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

Отправлено 24 сентября 2013 - 08:57

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

#56 Kyborg

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

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

Отправлено 24 сентября 2013 - 22:01

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

#57 badisoft

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

  • VIP
  • 5 006 сообщений
Репутация: 766
Мастер

Отправлено 24 сентября 2013 - 22:23

Просмотр сообщенияKyborg сказал:

Поставил себе данное дополнение, все работает, но единственный мною замеченный пока глюк, это необходимость сохранять два раза настройки в админке при их изменении.
Ню-ню..
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#58 Salp

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

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

Отправлено 14 июня 2017 - 22:54

Просмотр сообщенияbadisoft сказал:

Ню-ню..
Это ню неспроста )))

#59 badisoft

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

  • VIP
  • 5 006 сообщений
Репутация: 766
Мастер

Отправлено 15 июня 2017 - 14:54

Я уже писал в ветке про ускорение работы 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-запросу с неким текстом всегда (или хотя бы в течение восьми ближайших запросов) соответствует один и тот же ответный набор данных - неверна.
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#60 Salp

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

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

Отправлено 16 июня 2017 - 11:31

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 
Хотя, он выполняется довольно быстро и всего на одной странице...