powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / После создания и наполнения таблицы данными, какое-то время не используется primary key
6 сообщений из 6, страница 1 из 1
После создания и наполнения таблицы данными, какое-то время не используется primary key
    #39586182
i3bepb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть своя сортировка вывода товаров, чтобы ее реализовать создается отдельная таблица в которой есть поле по которому делает 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. Кто знает от чего может быть такой эффект?
...
Рейтинг: 0 / 0
После создания и наполнения таблицы данными, какое-то время не используется primary key
    #39586185
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
i3bepbПосле создания этих таблиц и начала их использования несколько минут запросы начинают тормозить, когда смотришь EXPLAIN то видно, что при JOIN-е не используется PRIMARY KEY. Проходит минут 5-10 и mysql начинает использовать PRIMARY KEY и все хорошо.Пока не наберётся статистика (и индекс не закэшится) - будет скан, это нормально.
Попробуйте зафорсить использование индекса.
...
Рейтинг: 0 / 0
После создания и наполнения таблицы данными, какое-то время не используется primary key
    #39586199
i3bepb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробовал создавать таблицы, но не использовать их на боевую, чтобы не было тормозов т.е. пользоваться предыдущим вариантом. А тем временем попробовать после создания посмотреть EXPLAIN типичных запросов как было и с использование FORCE INDEX и никакой разницы, в обоих случаях использует ключ как на тестовых. Либо проблема носит не постоянный характер, а при каких-то нагрузках, например под вечер когда больше посетителей или в реальных условиях не один такой запрос, который я тестирую, а несколько. Видимо FORCE INDEX получиться проверить только пустив все в продакшен по полной.
...
Рейтинг: 0 / 0
После создания и наполнения таблицы данными, какое-то время не используется primary key
    #39593271
i3bepb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добавил 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. Посмотрим, что выйдет, отпишусь завтра...
...
Рейтинг: 0 / 0
После создания и наполнения таблицы данными, какое-то время не используется primary key
    #39593453
Гулин Федор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
i3bepb,
не уверен - но analyze table - по идее должно собрасть статистику
...
Рейтинг: 0 / 0
После создания и наполнения таблицы данными, какое-то время не используется primary key
    #39593492
i3bepb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гулин Федорi3bepb,
не уверен - но analyze table - по идее должно собрасть статистику
Если таблица только создана и заполнена данными, какая может быть тут статистика, но в любом случае добавил еще ANALYZE TABLE и OPTIMIZE TABLE, пока с обеда залитое на продакш, пересчитывалось уже несколько раз пока никаких тормозов и использует ключ, но теперь не понятно, что конкретно помогло
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / После создания и наполнения таблицы данными, какое-то время не используется primary key
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]