Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
После создания и наполнения таблицы данными, какое-то время не используется primary key
|
|||
|---|---|---|---|
|
#18+
Есть своя сортировка вывода товаров, чтобы ее реализовать создается отдельная таблица в которой есть поле по которому делает ORDER BY и id товара. Алгоритм создания такой: 1) TRUNCATE TABLE 2) INSERT Таких таблиц много и делается за раз их 62 штуки в каждой по 40 тыс. записей с двумя полями id и поле для сортировки, id это PRIMARY KEY. После их создания в коде ставиться флаг начать использовать эти таблицы. В запросах на вывод товаров эти таблицы JOIN-ятся к таблице товаров по id, т.е. по PRIMARY KEY и вроде все работает быстро, но на практике происходит какая-то штука странная. После создания этих таблиц и начала их использования несколько минут запросы начинают тормозить, когда смотришь EXPLAIN то видно, что при JOIN-е не используется PRIMARY KEY. Проходит минут 5-10 и mysql начинает использовать PRIMARY KEY и все хорошо. Пробовал после создания таблиц делать задержку в минуту. Воспроизвести на тестовом сервере не получается там после создания этих таблиц сразу же используются PRIMARY KEY. Тестовый сервер в разы слабее, но там никто не ходит. Но вновь созданные таблицы никто кроме алгоритма создания не юзает и уже пробовал делать задержку минут до ввода их в эксплуатацию. Тип таблиц INNODB. Кто знает от чего может быть такой эффект? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2018, 08:05 |
|
||
|
После создания и наполнения таблицы данными, какое-то время не используется primary key
|
|||
|---|---|---|---|
|
#18+
i3bepbПосле создания этих таблиц и начала их использования несколько минут запросы начинают тормозить, когда смотришь EXPLAIN то видно, что при JOIN-е не используется PRIMARY KEY. Проходит минут 5-10 и mysql начинает использовать PRIMARY KEY и все хорошо.Пока не наберётся статистика (и индекс не закэшится) - будет скан, это нормально. Попробуйте зафорсить использование индекса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2018, 08:17 |
|
||
|
После создания и наполнения таблицы данными, какое-то время не используется primary key
|
|||
|---|---|---|---|
|
#18+
Попробовал создавать таблицы, но не использовать их на боевую, чтобы не было тормозов т.е. пользоваться предыдущим вариантом. А тем временем попробовать после создания посмотреть EXPLAIN типичных запросов как было и с использование FORCE INDEX и никакой разницы, в обоих случаях использует ключ как на тестовых. Либо проблема носит не постоянный характер, а при каких-то нагрузках, например под вечер когда больше посетителей или в реальных условиях не один такой запрос, который я тестирую, а несколько. Видимо FORCE INDEX получиться проверить только пустив все в продакшен по полной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2018, 09:05 |
|
||
|
После создания и наполнения таблицы данными, какое-то время не используется primary key
|
|||
|---|---|---|---|
|
#18+
Добавил SELECT COUNT(*) FROM таблица_сортировка WHERE non_index_col BETWEEN 0 AND 100000; после создания, это рецепт как заставить MySQL положить PRIMARY KEY в buffer_pool, взять отсюда https://www.percona.com/blog/2008/05/01/quickly-preloading-innodb-tables-in-the-buffer-pool/ и добавил FORCE INDEX предложенный выше Akina. Посмотрим, что выйдет, отпишусь завтра... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2018, 12:48 |
|
||
|
После создания и наполнения таблицы данными, какое-то время не используется primary key
|
|||
|---|---|---|---|
|
#18+
i3bepb, не уверен - но analyze table - по идее должно собрасть статистику ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2018, 16:39 |
|
||
|
После создания и наполнения таблицы данными, какое-то время не используется primary key
|
|||
|---|---|---|---|
|
#18+
Гулин Федорi3bepb, не уверен - но analyze table - по идее должно собрасть статистику Если таблица только создана и заполнена данными, какая может быть тут статистика, но в любом случае добавил еще ANALYZE TABLE и OPTIMIZE TABLE, пока с обеда залитое на продакш, пересчитывалось уже несколько раз пока никаких тормозов и использует ключ, но теперь не понятно, что конкретно помогло ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2018, 17:33 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39593271&tid=1830095]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
35ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
| others: | 14ms |
| total: | 153ms |

| 0 / 0 |
