Оптимизация MySQL запросов
#41
Отправлено 19 January 2012 - 12:11 AM
#42
Отправлено 07 February 2012 - 11:51 AM
#43
Отправлено 14 February 2012 - 08:09 PM
Не нашелся добрый человек с правильным напильником? Получилось у кого данный модуль допилить и убрать баги?
С напильником нету никого, есть клиент на готовый магазин - как только он проплатит, я возьму новую версию у разработчика, поделюсь. А вообще, мое мнение такое, что shopcms не рассчитан на более чем 3000 позиций в прайсе - могли бы просто сделать более экономную базу в таком случае, сериализовать данные и т.п. А так сделано просто...
#44
Отправлено 16 February 2012 - 05:46 PM
С напильником нету никого, есть клиент на готовый магазин - как только он проплатит, я возьму новую версию у разработчика, поделюсь. А вообще, мое мнение такое, что shopcms не рассчитан на более чем 3000 позиций в прайсе - могли бы просто сделать более экономную базу в таком случае, сериализовать данные и т.п. А так сделано просто...
Новую версию у разработчика можешь не покупать Забил он на этот модуль! И нифига исправлять ошибки не хочет.
Купил я ее - новую версию (так уж очень нужно мне было)! Разраб просто убрал кеширование запросов и все! осталась только оптимизация запросов что по себе фактичеки ничего не дает, по сравнению с кешированием.
На мою просьбу исправить ошибки в модуле, а не отключать кеширование - он ответил что это очень тяжело и типа не имеет смысла.
Так что так.... Очень разочарован в данном разработчике.
#45
Отправлено 16 February 2012 - 08:55 PM
#46
Отправлено 27 April 2012 - 09:48 PM
#47
Отправлено 27 April 2012 - 10:57 PM
#48
Отправлено 26 July 2012 - 12:26 PM
Есть решение данной проблемы?!если в core/includes/database/mysql.php закомментировать строку
optMysql::trig_after_query($s, $res);товар в корзину добавляется как нужно. т.е. трабл где-то в optMysql.class.php в функции trig_after_query, но разобраться с этим в данный момент моих знаний не хватает
Да действительно проблема с корзиной исчезает, кол-во запросов к базе не увеличивается.
НО тут же проявляется проблема в админке - общие настройки, вообще не выводится инфа.
Может кто поможет ретить вопрос??? уж больно стоящий модуль....
#49
Отправлено 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.
#50
Отправлено 15 February 2013 - 03:10 PM
#52
Отправлено 18 February 2013 - 07:18 AM
при замене чего? файлов во время установки патча? и при этом последствия проявились через два дня?и допустили ошибку при замене
а так, на сайт разве что новый материал добавлялся, и то мизер
#53
Отправлено 20 February 2013 - 01:34 PM
#54
Отправлено 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 не стал заменять)
теперь по логину/паролю в админку не зайти, в чем может быть причина (файлы на старые пока не заменял)
#55
Отправлено 24 September 2013 - 08:57 AM
#56
Отправлено 24 September 2013 - 10:01 PM
#57
Отправлено 24 September 2013 - 10:23 PM
Ню-ню..Поставил себе данное дополнение, все работает, но единственный мною замеченный пока глюк, это необходимость сохранять два раза настройки в админке при их изменении.
#59
Отправлено 15 June 2017 - 02:54 PM
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-запросу с неким текстом всегда (или хотя бы в течение восьми ближайших запросов) соответствует один и тот же ответный набор данных - неверна.
#60
Отправлено 16 June 2017 - 11:31 AM
Отображение строк 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
Хотя, он выполняется довольно быстро и всего на одной странице...