Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Оптимизация движка под 120 000 товаров


Recommended Posts

Уважаемые, кто-нибудь делал выборку категорий одним запросом с сортировкой соответственно для потомков? Интересует три и более уровней вложенности, два уровня я реализовал, но что то дальше затык

SELECT
c1.category_id,
CASE WHEN c0.c0_category_id = c1.category_id THEN 0 ELSE c0.c0_category_id END AS parent_id,
c0.c0_sort_order,
CASE WHEN c1.parent_id = 0 THEN 0 ELSE c1.sort_order END AS sort_order,
cd.name
FROM " . DB_PREFIX . "category AS c1
	JOIN (SELECT category_id AS c0_category_id, sort_order AS c0_sort_order FROM " . DB_PREFIX . "category WHERE parent_id = 0) AS c0
	ON c0.c0_category_id = c1.parent_id OR (c1.parent_id = 0 AND c0.c0_category_id = c1.category_id)
LEFT JOIN " . DB_PREFIX . "category_description AS cd ON (c1.category_id = cd.category_id)
LEFT JOIN " . DB_PREFIX . "category_to_store AS c2s ON (c1.category_id = c2s.category_id)
WHERE cd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND c2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND c1.status = '1'
ORDER BY c0_sort_order, sort_order;

Надіслати
Поділитися на інших сайтах

А вы уреренны, что 3 вложенных запроса будут быстрее, чем запросы в цикле?

Может быть лучше загрузить все категории, а потом средствами PHP построить дерево?

Такой вариант рассматривается, там рекурсия, и не факт что эта рекурсия средствами php будет лучше чем запросами SQL.
Надіслати
Поділитися на інших сайтах

Уважаемые, кто-нибудь делал выборку категорий одним запросом с сортировкой соответственно для потомков? Интересует три и более уровней вложенности, два уровня я реализовал, но что то дальше затык

https://opencartforum.com/topic/3355-есть-ли-модуль-анализа-лог-файлов/page__p__22909#entry22909

Надіслати
Поділитися на інших сайтах


да вы картинки залейте и тестируйте что вы буковки тестите,тестируйте артилерию тогда увидите реальный загруз

Ламерское замечание...

Так как картинки во первых все закешированы это раз, два, даже отдача сотни картинок по 10 кб на страницу, не так затратна как процесс формирования дерева категорий и подсчет количества товаров на каждую категорию

  • +1 2
Надіслати
Поділитися на інших сайтах


Надо убрать now() во всех запросах, тогда mysql закеширует... вот мой кусок в vqmod

<modification>
<id>My Patches 2</id>
<version>0.0.2</version>
<vqmver>1.0.8</vqmver>
<author>Vlad</author>
<file name="/catalog/model/catalog/product.php">
    <operation>
	    <search position="replace"><![CDATA[
 $query = $this->db->query("SELECT DISTINCT *, pd.name AS name, p.image, m.name AS manufacturer, (SELECT price FROM " . DB_PREFIX . "product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '" . (int)$customer_group_id . "' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < NOW()) AND (pd2.date_end = '0000-00-00' OR pd2.date_end > NOW())) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM " . DB_PREFIX . "product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '" . (int)$customer_group_id . "' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special, (SELECT points FROM " . DB_PREFIX . "product_reward pr WHERE pr.product_id = p.product_id AND customer_group_id = '" . (int)$customer_group_id . "') AS reward, (SELECT ss.name FROM " . DB_PREFIX . "stock_status ss WHERE ss.stock_status_id = p.stock_status_id AND ss.language_id = '" . (int)$this->config->get('config_language_id') . "') AS stock_status, (SELECT wcd.unit FROM " . DB_PREFIX . "weight_class_description wcd WHERE p.weight_class_id = wcd.weight_class_id AND wcd.language_id = '" . (int)$this->config->get('config_language_id') . "') AS weight_class, (SELECT lcd.unit FROM " . DB_PREFIX . "length_class_description lcd WHERE p.length_class_id = lcd.length_class_id AND lcd.language_id = '" . (int)$this->config->get('config_language_id') . "') AS length_class, (SELECT AVG(rating) AS total FROM " . DB_PREFIX . "review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT COUNT(*) AS total FROM " . DB_PREFIX . "review r2 WHERE r2.product_id = p.product_id AND r2.status = '1' GROUP BY r2.product_id) AS reviews, p.sort_order FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN " . DB_PREFIX . "manufacturer m ON (p.manufacturer_id = m.manufacturer_id) WHERE p.product_id = '" . (int)$product_id . "' AND pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'");
	    ]]></search>
	    <add><![CDATA[
$now1 = date("Y-m-d")." 23:59:59";
$now2 = date("Y-m-d")." 00:00:00";
 $query = $this->db->query("SELECT DISTINCT *, pd.name AS name, p.image, m.name AS manufacturer, (SELECT price FROM " . DB_PREFIX . "product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '" . (int)$customer_group_id . "' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < '$now1') AND (pd2.date_end = '0000-00-00' OR pd2.date_end > '$now2')) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM " . DB_PREFIX . "product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '" . (int)$customer_group_id . "' AND ((ps.date_start = '0000-00-00' OR ps.date_start < '$now1') AND (ps.date_end = '0000-00-00' OR ps.date_end > '$now2')) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special, (SELECT points FROM " . DB_PREFIX . "product_reward pr WHERE pr.product_id = p.product_id AND customer_group_id = '" . (int)$customer_group_id . "') AS reward, (SELECT ss.name FROM " . DB_PREFIX . "stock_status ss WHERE ss.stock_status_id = p.stock_status_id AND ss.language_id = '" . (int)$this->config->get('config_language_id') . "') AS stock_status, (SELECT wcd.unit FROM " . DB_PREFIX . "weight_class_description wcd WHERE p.weight_class_id = wcd.weight_class_id AND wcd.language_id = '" . (int)$this->config->get('config_language_id') . "') AS weight_class, (SELECT lcd.unit FROM " . DB_PREFIX . "length_class_description lcd WHERE p.length_class_id = lcd.length_class_id AND lcd.language_id = '" . (int)$this->config->get('config_language_id') . "') AS length_class, (SELECT AVG(rating) AS total FROM " . DB_PREFIX . "review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT COUNT(*) AS total FROM " . DB_PREFIX . "review r2 WHERE r2.product_id = p.product_id AND r2.status = '1' GROUP BY r2.product_id) AS reviews, p.sort_order FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN " . DB_PREFIX . "manufacturer m ON (p.manufacturer_id = m.manufacturer_id) WHERE p.product_id = '" . (int)$product_id . "' AND pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= '$now1' AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'");
]]></add>
    </operation>
</file>
</modification>

Ну и диски надо перемонтировать в noatime... - тоже уберет лишнию запись, после этого серваки очень часто оживают :)

  • +1 1
Надіслати
Поділитися на інших сайтах


Опять у меня никаких изменений :-)

До, без кеша

Memory Usage: 8.050377 MB

Execution Time: 0.249878 seconds

109 sql queries executed:

До, с кешем

Memory Usage: 8.006096 MB

Execution Time: 0.3022 seconds

68 sql queries executed:

После, без кеша

Memory Usage: 8.054298 MB

Execution Time: 0.292623 seconds

109 sql queries executed:

После, с кешем

Memory Usage: 8.008942 MB

Execution Time: 0.314817 seconds

68 sql queries executed:

Надіслати
Поділитися на інших сайтах

Надо убрать now() во всех запросах, тогда mysql закеширует... вот мой кусок в vqmod

<modification>
<id>My Patches 2</id>
<version>0.0.2</version>
<vqmver>1.0.8</vqmver>
<author>Vlad</author>
<file name="/catalog/model/catalog/product.php">
	<operation>
		<search position="replace"><![CDATA[
 $query = $this->db->query("SELECT DISTINCT *, pd.name AS name, p.image, m.name AS manufacturer, (SELECT price FROM " . DB_PREFIX . "product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '" . (int)$customer_group_id . "' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < NOW()) AND (pd2.date_end = '0000-00-00' OR pd2.date_end > NOW())) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM " . DB_PREFIX . "product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '" . (int)$customer_group_id . "' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special, (SELECT points FROM " . DB_PREFIX . "product_reward pr WHERE pr.product_id = p.product_id AND customer_group_id = '" . (int)$customer_group_id . "') AS reward, (SELECT ss.name FROM " . DB_PREFIX . "stock_status ss WHERE ss.stock_status_id = p.stock_status_id AND ss.language_id = '" . (int)$this->config->get('config_language_id') . "') AS stock_status, (SELECT wcd.unit FROM " . DB_PREFIX . "weight_class_description wcd WHERE p.weight_class_id = wcd.weight_class_id AND wcd.language_id = '" . (int)$this->config->get('config_language_id') . "') AS weight_class, (SELECT lcd.unit FROM " . DB_PREFIX . "length_class_description lcd WHERE p.length_class_id = lcd.length_class_id AND lcd.language_id = '" . (int)$this->config->get('config_language_id') . "') AS length_class, (SELECT AVG(rating) AS total FROM " . DB_PREFIX . "review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT COUNT(*) AS total FROM " . DB_PREFIX . "review r2 WHERE r2.product_id = p.product_id AND r2.status = '1' GROUP BY r2.product_id) AS reviews, p.sort_order FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN " . DB_PREFIX . "manufacturer m ON (p.manufacturer_id = m.manufacturer_id) WHERE p.product_id = '" . (int)$product_id . "' AND pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'");
		]]></search>
		<add><![CDATA[
$now1 = date("Y-m-d")." 23:59:59";
$now2 = date("Y-m-d")." 00:00:00";
 $query = $this->db->query("SELECT DISTINCT *, pd.name AS name, p.image, m.name AS manufacturer, (SELECT price FROM " . DB_PREFIX . "product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '" . (int)$customer_group_id . "' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < '$now1') AND (pd2.date_end = '0000-00-00' OR pd2.date_end > '$now2')) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM " . DB_PREFIX . "product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '" . (int)$customer_group_id . "' AND ((ps.date_start = '0000-00-00' OR ps.date_start < '$now1') AND (ps.date_end = '0000-00-00' OR ps.date_end > '$now2')) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special, (SELECT points FROM " . DB_PREFIX . "product_reward pr WHERE pr.product_id = p.product_id AND customer_group_id = '" . (int)$customer_group_id . "') AS reward, (SELECT ss.name FROM " . DB_PREFIX . "stock_status ss WHERE ss.stock_status_id = p.stock_status_id AND ss.language_id = '" . (int)$this->config->get('config_language_id') . "') AS stock_status, (SELECT wcd.unit FROM " . DB_PREFIX . "weight_class_description wcd WHERE p.weight_class_id = wcd.weight_class_id AND wcd.language_id = '" . (int)$this->config->get('config_language_id') . "') AS weight_class, (SELECT lcd.unit FROM " . DB_PREFIX . "length_class_description lcd WHERE p.length_class_id = lcd.length_class_id AND lcd.language_id = '" . (int)$this->config->get('config_language_id') . "') AS length_class, (SELECT AVG(rating) AS total FROM " . DB_PREFIX . "review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT COUNT(*) AS total FROM " . DB_PREFIX . "review r2 WHERE r2.product_id = p.product_id AND r2.status = '1' GROUP BY r2.product_id) AS reviews, p.sort_order FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN " . DB_PREFIX . "manufacturer m ON (p.manufacturer_id = m.manufacturer_id) WHERE p.product_id = '" . (int)$product_id . "' AND pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= '$now1' AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'");
]]></add>
	</operation>
</file>
</modification>

Ну и диски надо перемонтировать в noatime... - тоже уберет лишнию запись, после этого серваки очень часто оживают :)

обновление товаров раз в сутки ?! а оно надо если склад ведётся по магазину?
Надіслати
Поділитися на інших сайтах

Надіслати
Поділитися на інших сайтах

To RGB (стандартные модули кешированные пробовали использовать ?)

У меня из стандартных только блок категорий, но учитывая малое их количество, там даже отключение подсчета кол-ва не сильно сыграло роль

Надіслати
Поділитися на інших сайтах

И если он

поиск? не, не слышал: http://opencartforum...8c912c84c371af1

как написано в теме

Начиная с версии ocStore 0.1.9 данный драйвер включен в состав основного кода

то обсуждать нечего? :-)

Надіслати
Поділитися на інших сайтах

извиняйте, если слишком грубо выглядит сообщение :-(

очень смутило, что ссылка на opencart.com, а не наша внутренняя.

обсуждать есть чего :-)

Надіслати
Поділитися на інших сайтах

Да я тут полночи себе репу чешу, где б костылей еще навставлять... наткнулся, глянул мельком. а тут как раз тему развили...

А по делу.

Пока что по моим всем наблюдениям.. Попытки по мелочи где то ускорится за счет классических советом по оптимизации запросов.. до одного места.

Кешер на респонсе спасает но отчасти. Во первых прегенерация все равно иногда должна происходить. Во вторых если без него страница генерится секунд 10 и начинается регистрация или корзины, покупатели могут сбежать.

Глобальные затыки кроются в алгоритмах построения дерева категорий, подсчете кол-ва товаров и выборке самих товаров. И думается мне что надо попробовать сделать временные таблицы и переопределить методы.

Надіслати
Поділитися на інших сайтах


Переделал под свои нужды + seo_pro кэшируемый - всё летает.
Надіслати
Поділитися на інших сайтах

Переделал под свои нужды + seo_pro кэшируемый - всё летает.

А какая у вас версия ОС? Там в теме ниже freelancer писал про то, что этот алгоритм есть в 1.5.1.3, но я у себя в 1.5.2.1 как-то его не нашел, хотя вроде если он так хорош, почему его не внедрили в последующие версии?

Надіслати
Поділитися на інших сайтах

А какая у вас версия ОС? Там в теме ниже freelancer писал про то, что этот алгоритм есть в 1.5.1.3, но я у себя в 1.5.2.1 как-то его не нашел, хотя вроде если он так хорош, почему его не внедрили в последующие версии?

1.5.4.1 естественно ocStore

Выборка одним запросом дампа категорий и перестройка дерева рекурсией - не самое лучшее решение если дерево категорий сильно увесистое, у меня категорий около сотни так, что терпимо, + кэширование готового результата сильно выручает.

Надіслати
Поділитися на інших сайтах

да чего уж там. может сразу амазон, кластеры и пр. ?

я к тому, что у рядового пользователя обычный lamp хостинг(и на котором впрочем есть куда оптимизировать)

Змінено користувачем freelancer
Надіслати
Поділитися на інших сайтах

Опять у меня никаких изменений :-)

До, без кеша

Memory Usage: 8.050377 MB

Execution Time: 0.249878 seconds

109 sql queries executed:

До, с кешем

Memory Usage: 8.006096 MB

Execution Time: 0.3022 seconds

68 sql queries executed:

После, без кеша

Memory Usage: 8.054298 MB

Execution Time: 0.292623 seconds

109 sql queries executed:

После, с кешем

Memory Usage: 8.008942 MB

Execution Time: 0.314817 seconds

68 sql queries executed:

Измерял новым дебаггером, и о чудо! никаких пятен

Разброс в результатах исчез, и цифры стали реальнее.

До замены NOW()

Cache off: 7.22501 s 7.95 mb logs (2) sql (114) files (95) request (95)

Cache on: 3.48739 s 7.95 mb logs (2) sql (73) files (95) request (95)

После замены NOW()

Cache off: 6.98414 s 7.95 mb logs (2) sql (114) files (95) request (95)

Cache on: 3.44409 s 7.95 mb logs (2) sql (73) files (95) request (95)

С выключенным кешем выигрыш 0.3 сек очень даже неплохо, как мне кажется

Надіслати
Поділитися на інших сайтах

К сожалению, дебаггер обрезает запросы, и я еще не понял как их полностью вывести, но если устроят начальные куски их (по идее из них видно, что это за запрос), то вот такая картина (холодный старт):

SELECT p.product_id, (SELECT AVG(rating) AS total FROM review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating FROM product p LEFT JOIN product_description pd ON (p.product_id = pd.product_id) LEFT JOIN product_to_store p2s ON (p.product_id = p2s.product_id 

0.19743750 s

SELECT DISTINCT m.`manufacturer_id`, m.`name` FROM `manufacturer` m LEFT JOIN product p ON(p.manufacturer_id=m.`manufacturer_id`) LEFT JOIN product_to_category p2c ON(p.product_id=p2c.product_id) LEFT JOIN product_to_store p2s ON(p.product_id=p2s.product_id) WHERE p.status = '1' AND p.date_availa 

0.10013175 s

SELECT DISTINCT pa.text, a.`attribute_id`, ad.`name`, ag.attribute_group_id, agd.name as attribute_group_name FROM `product_attribute` pa LEFT JOIN attribute a ON(pa.attribute_id=a.`attribute_id`) LEFT JOIN attribute_description ad ON(a.attribute_id=ad.`attribute_id`) LEFT JOIN attribute_group ag 

0.56159700 s

SELECT DISTINCT *, pd.name AS name, p.image, m.name AS manufacturer, (SELECT price FROM product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '8' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < '2013-03-12 23:59:59') AND (pd2.date_end = ' 

0.01184400 s

Последний запрос повторяется столько раз, сколько товаров выводится (у меня 12), и каждый раз так же медленно выполняется.

Страница категории, 12 товаров на страницу, из модулей только список категорий в шапке и сбоку (всего пара десятков, без подсчета), ну и фильтрпро с фильтрацией по цене, производителю и одной единственной группе атрибутов (тип товара).

Надіслати
Поділитися на інших сайтах

1. Последний запрос можно выполнить 1 раз. Если сначала собрать массив product_id, а потом сделать WHERE product_id IN (...)

2. По атрибутам тяжеленький запрос получился. А где он вызывается? В модуле фильтра?

1. Наверное да, но тогда ведь теряется совместимость с версиями (хотя мне уже не страшно :-))

2. Да, это функция getAttributesByCategoryId так резвится

Скорее всего из-за кол-ва товаров в категории (4К), потому что самих уникальных атрибутов там 10 шт во всего 1-й группе.

P.S. Скоро попробую изменения с вашей статьи снова прикрутить к движку, и перемерять результаты, а то старый дебаггер оказывается врал, а вот новый вроде ничего

P.P.S. Подумал, что о совместимости в теме про оптимизацию вообще нет смысла говорить - либо оптимизируем, либо радуемся новым обновлениям НЕоптимизированного медленного движка :-)

Змінено користувачем RGB
Надіслати
Поділитися на інших сайтах

RGB, запустите db_log на холодную, походите по тормозным местам и скиньте мне дам если будет время. либо саму базу(без заказов, пользователей и прочих секретных данных)

я сейчас как раз занят такими проблемами

Надіслати
Поділитися на інших сайтах

Для ускорения производительности прибегают в основном к кэшированию. Действенный способ, спору нет. Но давайте обсудим те моменты, которые НЕ стоит кэшировать:

1. Не стоит кэшировать весь контент страницы, так как nginx уже кэширует;

2. Не стоит кэшировать SQL-запросы, так как MySQL уже кэширует;

3. Разумно используйте файловый кэш OpenCart, так как при очень большом кол-ве файлов в папке system/cache/ будет тормозить из-за особенностей файловой системы;

1. nginx не везде, более того он вообще встречается в малых количествах на шаред хостингах, если не шаред хостинг и есть возможность рулить ПО на нём, то вообще к чему вопрос про кэшировние если всё лечится путём вливания денег в железо, смены СУБД/ПО, кластеризации и тд.

2. Если у Вас нет возможности рулить настройками MySQL (query_cache_size, query_cache_limit и тд) вкупе с достаточно имеющимся кол-вом физ. RAM, то толку от кэширования MySQL будет не много.

3. Здесь важно знать этот самый размер, "при очень большом кол-ве файлов" - сколько именно, какая ФС, какое железо, какой RAID?

Надіслати
Поділитися на інших сайтах

обновление товаров раз в сутки ?! а оно надо если склад ведётся по магазину?

Если будет обновление кол-ва товара - то запрос выпадет из кеша как бэ :)

Просто так mysql вообще этот кусок у вас не будет кешировать...

Кто на VDSах/виртуалах отпишите в ТП пусть на серваках в noatime перемаунтят диски где mysql (на время хотябы) и посмотрите на время исполнения :)

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.