Задать вопрос
ivinnic
@ivinnic
Full-Stack - подустал

Как ускорить выборку ( freeing items, cleaning up) из InnoDB по primary key?

Добрый день!

Делаю запрос по таблице в которой 100 записей по полю id (PK)

select * from table_name where id = n

и результат 1.8ms - из которых 1ms - это freeing items и cleaning up.
Почему это может происходить, и как можно это ускорить?
Диск ssd nvme; Mysql 8; InnoDB;

Когда необходимо сделать 100 запросов это 100ms, что конкретно чувствуется... нагугить не удалось...

Profile:
61150f50df138554293287.jpeg
  • Вопрос задан
  • 466 просмотров
Подписаться 5 Сложный 11 комментариев
Пригласить эксперта
Ответы на вопрос 4
ThunderCat
@ThunderCat Куратор тега MySQL
{PHP, MySql, HTML, JS, CSS} developer
Похоже что логичнее хранить ваши данные в каком-то кей-валуе хранилище, в том же редисе, например...
Ответ написан
Fragster
@Fragster
помогло? отметь решением!
Вроде бы это все происходит уже после возврата данных клиенту, по этому сама обработка будет с точки зрения клиента быстрее. А там и серверов добавить можно, если что.
К тому же в некоторых библиотеках, вроде бы, можно делать выборку из разных таблиц одним запросом (не джоины и даже не юнионы, а именно несколько запросов через ; ).

Еще такое может быть, если лог файлы забиты, медленные диски и т.п.
Попробуй innodb_flush_log_at_trx_commit = 2

если что - во доки: https://dev.mysql.com/doc/refman/8.0/en/general-th...
Ответ написан
ky0
@ky0
Миллиардер, филантроп, патологический лгун
Две миллисекунды вас не устраивают? А почему, позвольте спросить? У вас высоконагруженный проект, в котором выполняются тысячи подобных запросов в секунду или вы просто решили поиграть в преждевременную оптимизацию (с)?

Когда необходимо сделать 100 запросов это 100ms

Для read-only запросов это так не работает - даже если конкретно эти данные не хранятся в памяти, у вас SSD прекрасно может отдавать данные параллельно.
Ответ написан
@rPman
where id in (...) работает не быстрее?
ок, залей нужные id в temporary table и делай from table,temp...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы