Новости Joomla

Человек на GitHub ускорил Joomla в 600 раз на объёме 150к+ материалов в 1700+ категориях

Человек на GitHub ускорил Joomla в 600 раз на объёме 150к+ материалов в 1700+ категориях

👩‍💻 Человек на GitHub ускорил Joomla в 600 раз на объёме 150к+ материалов в 1700+ категориях. На старте его сайт на Joomla 3 вообще не смог обновиться на Joomla 5. Пришлось делать экспорт/импорт материалов. Проделав всё это он запустил-таки этот объём данных на Joomla 5. Тестовый скрипт грузил 200 материалов из этого объёма всего за 94 секунды ))) А главная страница с категориями грузилась 20 секунд. Добавив индекс для таблицы #__content

CREATE INDEX idx_catid_state ON #__content (catid, state);
он сократил время загрузки категорий до 1 секунды. Затем наш герой решил поковырять SQL-запрос в ArticleModel, который отвечает за выборку материалов. И решил заменить тип JOIN на STRAIGHT_JOIN для категорий.
// ->from($db->quoteName('#__content', 'a'))->from(    $db->quoteName('#__content', 'a')    . ' STRAIGHT_JOIN ' . $db->quoteName('#__categories', 'c')    . ' ON ' . $db->quoteName('c.id') . ' = ' . $db->quoteName('a.catid'))// ->join('LEFT', $db->quoteName('#__categories', 'c'), $db->quoteName('c.id') . ' = ' . $db->quoteName('a.catid'))
Что сократило загрузку 200 материалов из 150к с 94 секунд до 5. К слову сказать, боевой сайт на Joomla 3 крутится на 12CPU 64GB рамы. А все манипуляции с кодом он делает на базовом 1CPU 1GB сервере и замеры скорости даны именно для базового сервера. Но это всё в дискуссии, хотя в идеале должно вылиться в Pull Requests. Мы - Open Source сообщество, где никто никому ничего не должен. Джунгли. Но человек ищет пути оптимизации Joomla и предлагает решения. Если оказать поддержку и предложить помощь хотя бы с тестированием самых разнообразных сценариев, то возможно эти улучшения смогут войти в ядро. Пусть не быстро, пусть через несколько лет, пусть не все, но войдут. Достаточно предложить руку помощи и приложить немного усилий.
Дискуссию на GitHub можно почитать здесь.@joomlafeed#joomla #community #php

0 Пользователей и 1 Гость просматривают эту тему.
  • 3 Ответов
  • 1553 Просмотров
*

TonyChiter

  • Новичок
  • 2
  • 0 / 0
Здравствуйте. Joomla 3.5.1 VirtueMart 3.0.18
При заходе в панель управления VirtueMart стала появится такая ошибка:
1054 Unknown column 'first_name' in 'field list' SQL=SELECT `id` as `virtuemart_user_id`, `first_name`, `last_name`, `order_number` FROM `#__users` as `u` JOIN `#__virtuemart_vmusers` as uv ON u.id = uv.virtuemart_user_id JOIN `#__virtuemart_userinfos` as ui ON u.id = ui.virtuemart_user_id JOIN `#__virtuemart_orders` as uo ON u.id = uo.virtuemart_user_id ORDER BY uo.`created_on` DESC LIMIT 0, 5

При входе в раздел Заказы:
1054 Unknown column 'u.city' in 'field list' SQL=SELECT SQL_CALC_FOUND_ROWS o.*, CONCAT_WS(' ',u.company) AS order_name ,u.email as order_email, pm.payment_name AS payment_method, u.company AS company, u.city AS city, u.zip AS zip, u.phone_1 AS phone, st.address_type AS st_type, st.company AS st_company, st.city AS st_city, st.zip AS st_zip, u.customer_note AS customer_note FROM #__virtuemart_orders as o LEFT JOIN #__virtuemart_order_userinfos as u ON u.virtuemart_order_id = o.virtuemart_order_id AND u.address_type="BT" LEFT JOIN #__virtuemart_order_userinfos as st ON st.virtuemart_order_id = o.virtuemart_order_id AND st.address_type="ST" LEFT JOIN #__virtuemart_paymentmethods_ru_ru as pm ON o.virtuemart_paymentmethod_id = pm.virtuemart_paymentmethod_id ORDER BY created_on DESC LIMIT 0, 30

При входе в раздел Магазин:
1054 Unknown column 'u.city' in 'field list' SQL=SELECT o.*, CONCAT_WS(' ',u.company) AS order_name ,u.email as order_email, pm.payment_name AS payment_method, u.company AS company, u.city AS city, u.zip AS zip, u.phone_1 AS phone, st.address_type AS st_type, st.company AS st_company, st.city AS st_city, st.zip AS st_zip, u.customer_note AS customer_note FROM #__virtuemart_orders as o LEFT JOIN #__virtuemart_order_userinfos as u ON u.virtuemart_order_id = o.virtuemart_order_id AND u.address_type="BT" LEFT JOIN #__virtuemart_order_userinfos as st ON st.virtuemart_order_id = o.virtuemart_order_id AND st.address_type="ST" LEFT JOIN #__virtuemart_paymentmethods_ru_ru as pm ON o.virtuemart_paymentmethod_id = pm.virtuemart_paymentmethod_id WHERE ( u.virtuemart_user_id = 393 AND u.virtuemart_user_id = 393 ) order by o.modified_on DESC

Как я понял проблема в бд но как это пофиксить и где не знаю потому что я не силен в нем. Если кто знает помогите.
*

SeBun

  • BanMaster
  • 4030
  • 259 / 5
  • @SeBun48
Re: Ошибка 1054 запроса баз данных
« Ответ #1 : 02.12.2016, 11:26:48 »
1054 Unknown column... Эта запись говорит о том, что в БД отсутствуют колонки, в которые делается запрос. Просто создайте их.
Оказываю услуги по Joomla | Миграция/Обновление | Сопровождение | IT-аутсорсинг | Недорогие домены и хостинг
*

gartes

  • Завсегдатай
  • 1859
  • 142 / 6
  • Е = mс²
Re: Ошибка 1054 запроса баз данных
« Ответ #2 : 03.12.2016, 00:13:25 »
FROM `#__users`
Так там и не должно их быть ...
Отключите плагины.. По очереди включайте..
Что то стоит у Вас такое что делает некорректный запрос.
 
*

TonyChiter

  • Новичок
  • 2
  • 0 / 0
Re: Ошибка 1054 запроса баз данных
« Ответ #3 : 09.12.2016, 11:41:18 »
SeBun, Извините за беспокойство, а что где создавать а то я не могу этого понять?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Нет данных в массиве?

Автор warlocksp

Ответов: 0
Просмотров: 2649
Последний ответ 21.12.2022, 17:59:11
от warlocksp
После регистрации VM в письме нет данных из пользовательских полей

Автор Slava77

Ответов: 0
Просмотров: 2860
Последний ответ 10.07.2022, 04:04:23
от Slava77
Ошибка mError: Could not find product with id 385, entries exists for language?

Автор sergspb

Ответов: 0
Просмотров: 2792
Последний ответ 11.03.2022, 14:00:28
от sergspb
Ошибка при экспорте категорий

Автор tmpnikl

Ответов: 3
Просмотров: 979
Последний ответ 06.05.2021, 13:36:08
от tmpnikl
Ошибка "vmError: Имя пользователя занято" при попытке сохранить настройки магазина

Автор Cueball

Ответов: 7
Просмотров: 6210
Последний ответ 16.05.2020, 17:05:15
от d0ublezer0