Shop-script и база с ~30 000 товаров

Статус
В этой теме нельзя размещать новые ответы.

intkilos

Постоялец
Регистрация
5 Июл 2007
Сообщения
144
Реакции
57
Возникла проблема. Есть сервер(Athlon 64 x2 6000+ | 2GB оперативы | PHP5 | MySQL 5), на нём установлен SS в котором 30000 товаров. Проблема в том, что дальше главной страницы не идёт. Поначалу (3000-7000 товаров) тупил страшно, а теперь просто зависает.
Были ли у кого-нибудь подобные проблемы? Нашёл ли кто-нибудь лекарство?
Уже не знаю что делать. Думал, что из-за фотографий товаров, разложил их по папкам(1000 в каждую) при небольшом (3000-7000 товаров) это помогло, тупить меньше стал, но теперь просто висит :bc:
За лекарство готов заплатить :ah:
 
  • Заблокирован
  • #2
Может таймаут увеличить, он не успевает и "глохнет". (ИМХО 30 сек по умолчанию.)
 
  • Заблокирован
  • #3
пологаю тут надо базу оптимизировать - гдето индексы слетели или просто не стоят.. обращайся в личку, попробую разобраться..
 
а какую версию SS ты используешь??? чем свежее версия тем лучше оптимизированна к запросам!! имхо
 
использую премиум 1.24
 
Вбей в phpmyadmin запросы:

ALTER TABLE `SS_product_options_set` ADD INDEX ( `produ ctID` );
ALTER TABLE `SS_product_options_set` ADD INDEX ( `optionID` );
ALTER TABLE `SS_product_options_set` ADD INDEX ( `variantID` );
ALTER TABLE `SS_product_options_values` ADD INDEX ( `productID` );
ALTER TABLE `SS_product_options_values` ADD INDEX ( `optionID` );
ALTER TABLE `SS_product_options_values` ADD INDEX ( `variantID` );
ALTER TABLE `SS_product_options` ADD INDEX ( `name` );
ALTER TABLE `SS_products` ADD INDEX ( `name` );
ALTER TABLE `SS_products` ADD INDEX ( `product_code` );
ALTER TABLE `SS_products_opt_val_variants` ADD INDEX ( `optionID` );
 
Вбей в phpmyadmin запросы:

ALTER TABLE `SS_product_options_set` ADD INDEX ( `produ ctID` );
ALTER TABLE `SS_product_options_set` ADD INDEX ( `optionID` );
ALTER TABLE `SS_product_options_set` ADD INDEX ( `variantID` );
ALTER TABLE `SS_product_options_values` ADD INDEX ( `productID` );
ALTER TABLE `SS_product_options_values` ADD INDEX ( `optionID` );
ALTER TABLE `SS_product_options_values` ADD INDEX ( `variantID` );
ALTER TABLE `SS_product_options` ADD INDEX ( `name` );
ALTER TABLE `SS_products` ADD INDEX ( `name` );
ALTER TABLE `SS_products` ADD INDEX ( `product_code` );
ALTER TABLE `SS_products_opt_val_variants` ADD INDEX ( `optionID` );

Помогло. Огромное спасибо. Отписал в личку.
 
Вбей в phpmyadmin запросы:
ALTER TABLE `SS_product_options_set` ADD INDEX ( `produ ctID` );
ALTER TABLE `SS_product_options_set` ADD INDEX ( `optionID` );
ALTER TABLE `SS_product_options_set` ADD INDEX ( `variantID` );
ALTER TABLE `SS_product_options_values` ADD INDEX ( `productID` );
ALTER TABLE `SS_product_options_values` ADD INDEX ( `optionID` );
ALTER TABLE `SS_product_options_values` ADD INDEX ( `variantID` );
ALTER TABLE `SS_product_options` ADD INDEX ( `name` );
ALTER TABLE `SS_products` ADD INDEX ( `name` );
ALTER TABLE `SS_products` ADD INDEX ( `product_code` );
ALTER TABLE `SS_products_opt_val_variants` ADD INDEX ( `optionID` );
Подскажите не грамотному, а что эти запросы делают с базой? Это всем можно так делать или только для ТС подойдет?
 
Индексы применяются для быстрого поиска строк с указанным значением одного столбца. Без индекса чтение таблицы осуществляется по всей таблице начиная с первой записи, пока не будут найдены соответствующие строки. Чем больше таблица, тем больше накладные расходы. Если же таблица содержит индекс по рассматриваемым столбцам, то MySQL может быстро определить позицию для поиска в середине файла данных без просмотра всех данных. Для таблицы, содержащей 1000 строк, это будет как минимум в 100 раз быстрее по сравнению с последовательным перебором всех записей.

В базе Shop-script уже есть индексы, но не ко всем таблицам.

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

Следующие индексы определены как идентичные, и один из них должен быть удален: productID, productID_2
удалите дублирующие индексы
.
кстати, форум побил строку
ALTER TABLE `SS_product_options_set` ADD INDEX ( `produ ctID` );
produ ctID а нужно productID
PHP:
ALTER TABLE `SS_product_options_set` ADD INDEX ( `productID` );
внимательно смотрите код
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху