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

Тема в разделе "Shop-script", создана пользователем intkilos, 26 мар 2008.

Статус темы:
Закрыта.
  1. intkilos

    intkilos Постоялец

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

    Дмитрий Кесаев aka Zlobniy Babko

    Заблокирован
    Регистр.:
    10 май 2007
    Сообщения:
    1.332
    Симпатии:
    1.265
    Может таймаут увеличить, он не успевает и "глохнет". (ИМХО 30 сек по умолчанию.)
     
  3. bueno

    bueno Читатель

    Заблокирован
    Регистр.:
    7 май 2007
    Сообщения:
    236
    Симпатии:
    69
    пологаю тут надо базу оптимизировать - гдето индексы слетели или просто не стоят.. обращайся в личку, попробую разобраться..
     
  4. El_Magnifico

    El_Magnifico Команданте

    Регистр.:
    1 сен 2006
    Сообщения:
    650
    Симпатии:
    484
    а какую версию SS ты используешь??? чем свежее версия тем лучше оптимизированна к запросам!! имхо
     
  5. intkilos

    intkilos Постоялец

    Регистр.:
    5 июл 2007
    Сообщения:
    144
    Симпатии:
    56
    использую премиум 1.24
     
  6. Shalun

    Shalun Создатель

    Регистр.:
    27 фев 2008
    Сообщения:
    11
    Симпатии:
    4
    Вбей в 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` );
     
    voooz, Oxanita, Dr.Pavlov и ещё 1-му нравится это.
  7. intkilos

    intkilos Постоялец

    Регистр.:
    5 июл 2007
    Сообщения:
    144
    Симпатии:
    56
    Помогло. Огромное спасибо. Отписал в личку.
     
  8. FANTiK123

    FANTiK123 Создатель

    Регистр.:
    2 мар 2009
    Сообщения:
    26
    Симпатии:
    0
    Подскажите не грамотному, а что эти запросы делают с базой? Это всем можно так делать или только для ТС подойдет?
     
  9. nafanyaa

    nafanyaa

    Регистр.:
    23 авг 2006
    Сообщения:
    286
    Симпатии:
    170
    Индексы применяются для быстрого поиска строк с указанным значением одного столбца. Без индекса чтение таблицы осуществляется по всей таблице начиная с первой записи, пока не будут найдены соответствующие строки. Чем больше таблица, тем больше накладные расходы. Если же таблица содержит индекс по рассматриваемым столбцам, то 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_setADD INDEX ( `productID` );
    внимательно смотрите код
     
    voooz и Oxanita нравится это.
Статус темы:
Закрыта.