Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

Yesvik

Ветеран сообщества
  
  • Posts

    1,939
  • Joined

  • Last visited

Everything posted by Yesvik

  1. Судя по вопросу - ты с трудом понимаеш о чем спрашиваеш.... не заморачивайся ... похоже ты толком не сможеш оценить результаты тестов. P.S. извини за прямоту.... грубо, но честно....
  2. А у меня хитрый дамп... в конце дампа посмотри коменты... раскомментируй запросы 1.4 и закоменти 1.5test_data.zip
  3. В админке: Система -> Пользователи -> Группы пользователей, открыть группу Главный администратор, нажать Выделить всё для Разрешён просмотр: и для Разрешено внесение изменений:, после этого нажать кнопку Сохранить
  4. Сначала речь идёт про OC 1.5.1.3 и запрос из лога похож на OC 1.5.1.3Потом появляется функция из предыдущей версии... Я указал на несходняки, но вопрос уточняющий версию остался без ответа. А теперь появляется ocstore и запрос в ошибке нифига не из OC 1.5.1.3 Я предупреждал что есть небольшие отличия в зависимости от версии... В который раз говорю себе - не трать время на лечение по фотографии... и всё равно периодически вляпываюсь в это дерьмо. Надоело...
  5. Странно... вроде ничего смертельного ты не делал... а сервак упал.Но индекса о котором я писал ты не добавлял... Я уже не знаю как убеждать в необходимости этого индекса. Последняя попытка: Сделал профилирование твоего запроса с индексом, потом удалил индекс и ещё раз прогнал запрос...
  6. На нескольких проектах где применялась подобная модель было от 200 до 500 категорий и наблюдалось снижение времени генерации и потребляемой памяти. Поэтому я не заморачивался с экспериментами.5000 категорий довольно редкое явление, и думаю вывод полного дерева категорий (например для superfish) рекурсивным алгоритмом нагнёт сервак не по детски... Если хочеш - выложу тестовый дамп: 1000 категорий, 10000 товаров... потестиш и поделишся результатами.
  7. Можно уточнить что именно означает фраза "сейчас все индексы удалил"?
  8. Нужен доступ по FTP... и желательно в админку, что-бы я сам не мастырил этот доступ.
  9. Хотелось бы получить ответ на этот вопрос http://opencartforum...dpost__p__33491, но раз ты его игнорируеш буду считать что ты по ошибке привёл не ту функцию, а не запрос... Попробуй такую модель категорий category.php
  10. Хватит хохмить...Уже все поняли что Вы специалист по оптимизации запросов.
  11. Да уж... не учел установку в папку :( Внес исправления в репозиторий... Спасибо!
  12. Вы просили время запросов я дал время запросов... как будет понимать эти данные человек для которого explain не показатель - меня не волнует.
  13. Опять файлы...Я уже говорил что у меня нет времени на игры в угадайку.
  14. Если explain'ы не показатель - то я испанский лётчик...Держи время... mysql> SELECT COUNT(DISTINCT p.product_id) AS total FROM oc_product p LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN oc_product_to_category p2c ON (p.product_id = p2c.product_id) WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' AND p2c.category_id = '20'; +-------+ | total | +-------+ | 4 | +-------+ 1 row in set (0.27 sec) mysql> SELECT COUNT(DISTINCT p.product_id) AS total FROM oc_product p LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN oc_product_to_category p2c ON (p.product_id = p2c.product_id) WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' AND p2c.category_id = '20'; +-------+ | total | +-------+ | 4 | +-------+ 1 row in set (0.16 sec) mysql> ALTER TABLE `oc_product_to_category` ADD INDEX (`category_id`); Query OK, 10022 rows affected (0.14 sec) Records: 10022 Duplicates: 0 Warnings: 0 mysql> SELECT COUNT(DISTINCT p.product_id) AS total FROM oc_product p LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN oc_product_to_category p2c ON (p.product_id = p2c.product_id) WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' AND p2c.category_id = '20'; +-------+ | total | +-------+ | 4 | +-------+ 1 row in set (0.01 sec) mysql> SELECT COUNT(DISTINCT p.product_id) AS total FROM oc_product p LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN oc_product_to_category p2c ON (p.product_id = p2c.product_id) WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' AND p2c.category_id = '20'; +-------+ | total | +-------+ | 4 | +-------+ 1 row in set (0.00 sec) А что не видно?
  15. Во первых скрипты кешируются браузером, и загружаются только при первом входе.Облегчить первый вход можно за счет загрузки jQuery и jQuery UI с какого-то CDN... Сначала все кричат - функционала давай... а потом - медленно работает... Как ты определил что 1.5 медленнее? Возьми 1.4 и 1.5 доведи их, хоть приблизительно, до одинакового функционала и потом сравнивай...
  16. Мне не кажется, я точно знаю что это делается одним запросом, но человек упорно не хочет признаваться какую версию использует... а в зависимости от версии есть небольшое отличие в реализации.Но индекс о котором я писал всё равно нужен... посмотри на explain'ы mysql> EXPLAIN SELECT COUNT(DISTINCT p.product_id) AS total FROM oc_product p LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN oc_product_to_category p2c ON (p.product_id = p2c.product_id) WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' AND p2c.category_id = '20'; +----+-------------+-------+--------+----------------+---------+---------+------- ----------------------+------+--------------------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+-------+--------+----------------+---------+---------+------- ----------------------+------+--------------------------+ | 1 | SIMPLE | p2s | index | PRIMARY | PRIMARY | 8 | NULL | 7512 | Using where; Using index | | 1 | SIMPLE | p | eq_ref | PRIMARY,status | PRIMARY | 4 | ocsfru.p2s.product_id | 1 | Using where | | 1 | SIMPLE | pd | eq_ref | PRIMARY | PRIMARY | 8 | ocsfru.p2s.product_id,const | 1 | Using where; Using index | | 1 | SIMPLE | p2c | eq_ref | PRIMARY | PRIMARY | 8 | ocsfru.p.product_id,const | 1 | Using where; Using index | +----+-------------+-------+--------+----------------+---------+---------+------- ----------------------+------+--------------------------+ 4 rows in set (0.00 sec) mysql> ALTER TABLE `oc_product_to_category` ADD INDEX (`category_id`); Query OK, 10022 rows affected (0.14 sec) Records: 10022 Duplicates: 0 Warnings: 0 mysql> EXPLAIN SELECT COUNT(DISTINCT p.product_id) AS total FROM oc_product p LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN oc_product_to_category p2c ON (p.product_id = p2c.product_id) WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' AND p2c.category_id = '20'; +----+-------------+-------+--------+---------------------+-------------+-------- -+-----------------------------+------+--------------------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+-------+--------+---------------------+-------------+-------- -+-----------------------------+------+--------------------------+ | 1 | SIMPLE | p2c | ref | PRIMARY,category_id | category_id | 4 | const | 4 | Using where | | 1 | SIMPLE | p2s | eq_ref | PRIMARY | PRIMARY | 8 | ocsfru.p2c.product_id,const | 1 | Using where; Using index | | 1 | SIMPLE | p | eq_ref | PRIMARY,status | PRIMARY | 4 | ocsfru.p2c.product_id | 1 | Using where | | 1 | SIMPLE | pd | eq_ref | PRIMARY | PRIMARY | 8 | ocsfru.p2s.product_id,const | 1 | Using where; Using index | +----+-------------+-------+--------+---------------------+-------------+-------- -+-----------------------------+------+--------------------------+ 4 rows in set (0.00 sec)
  17. Готов дать доступ - пиши в личку,... но посмотреть смогу только вечером.
  18. Вот из-за таких вариантов я и сказал тебе что не занимаюсь лечением сайтов по переписке...Без доступа к пациенту убивается куча времени из-за какой-то фигни которую можно было решить за пару минут...
  19. Мне кажется что у тебя не OC 1.5.1.3.1 Приведённая тобой функция getTotalProducts() сформирует такой запрос SELECT COUNT(DISTINCT p.product_id) AS total FROM oc_product p LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '2' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' AND p.product_id IN (SELECT p2c.product_id FROM oc_product_to_category p2c WHERE p2c.category_id = '20'); Откуда у тебя в логах этот запрос SELECT COUNT(DISTINCT p.product_id) AS total FROM oc_product p LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN oc_product_to_category p2c ON (p.product_id = p2c.product_id) WHERE pd.language_id = '2' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' AND (p2c.category_id = '20');
  20. Все места требующие земляных работ описать сложно, а если точнее невозможно...Правильнее логировать медленные запросы и разбираться с каждым тормозом персонально. Что касается приведённого запроса - добавь индекс: ALTER TABLE `oc_product_to_category` ADD INDEX (`category_id`); Зря ты делаеш акцент на opencart 1.5.1.3. По твоей реплике многие решат что только opencart 1.5.1.3 требует оптимизации структуры БД и кода. Чем отличаются другие версии? Да ни чем... каждая версия имеет свой набор граблей.
  21. Хотя вру... есть мод с помощью которого можно задавать разные алиасы в зависимости от языка, но он платный и похоже требует допиливания.
×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.