Добрый день. Мне нужно хранить в ОЗУ сервера большое количество страниц, около 60 тыс. Конкретно, две таблицы на 60 тыс и 8 тыс записей. При чтении запросов из БД время ответа сервера 400-600 мс. При чтении из ОЗУ всего 60 мс. Поэтому хочу хранить таблицы в ОЗУ как можно дольше. БД всего 100 Мб. ОЗУ на 2 Гб (VPS). Как это можно решить? Каждый день вручную краулить сайт Screaming Frog-om не интересно, надо чтобы работало на автомате.
Aisamiery
yuriynik : Добрый день. Мне нужно хранить в ОЗУ сервера большое количество страниц, около 60 тыс. Конкретно, две таблицы на 60 тыс и 8 тыс записей. При чтении запросов из БД время ответа сервера 400-600 мс. При чтении из ОЗУ всего 60 мс. Поэтому хочу хранить таблицы в ОЗУ как можно дольше. БД всего 100 Мб. ОЗУ на 2 Гб (VPS). Как это можно решить? Каждый день вручную краулить сайт Screaming Frog-om не интересно, надо чтобы работало на автомате.
Скорее всего в ваших таблицах не хватает индексов — рекомендую проставить.
А так есть тип memory перегоняйте данные туда и читайте с неё, ну или можно залить все в другие типы хранилищ, но вам помогут индексы
MySQL :: MySQL 8.0 Reference Manual :: 16.3 The MEMORY Storage Engine
dev.mysql.com
Feature Support
yuriynik
Aisamiery #:
Скорее всего в ваших таблицах не хватает индексов — рекомендую проставить.
А так есть тип memory перегоняйте данные туда и читайте с неё, ну или можно залить все в другие типы хранилищ, но вам помогут индексы
Спасибо, подумаю над этим
artshevtsov
Еще, как вариант, вы можете закешировать результаты повторяющихся тяжелых запросов с помощью Redis или Memcached in-memory cache. Часто бывает, что запрос какой-нибудь менюшки-списка с JOIN + GROUP BY + ORDER BY портит всю малину. Ну и оптимизировать/упростить сами запросы в мускуль, добавить индексы. Еще можете посмотреть что скажет про вашу конфигурацию утилита mysql-tuner, она может подсказать что надо подкрутить в конфиге.
LEOnidUKG
Настройте сервер нормально, таблицы InnoDB автоматически полностью загружаются в БД при частом использовании данных.
Но если записи не будет, то тип таблиц MEMORY как выход. Но опять же там нужно настроить сервер, чтобы они туда помещались.
Так же мы не знаем что у вас за таблицы и что за запросы.
yuriynik
Спасибо за советы. Буду пробовать.
yuriynik
Подскажите, почему таблицы memory не оптимизируются? Как это исправить? http://joxi.ru/zANYMpJFvopyG2
LEOnidUKG
Забудьте про кнопку Оптимизация. НИКОГДА не пользуйтесь ей, если не знаете что это и как проходят там процессы.
Для Memory явно нечего оптимизировать.
yuriynik
LEOnidUKG #:
Забудьте про кнопку Оптимизация. НИКОГДА не пользуйтесь ей, если не знаете что это и как проходят там процессы.
Для Memory явно ничего оптимизировать.
Даже так… А я где-то читал оптимизировать таблицы время-от времени полезно. Данные со временем фрагментируются, оптимизация удаляет всё лишнее и ускоряет работу таблицы…
LEOnidUKG
yuriynik #:
Даже так… А я где-то читал оптимизировать таблицы время-от времени полезно. Данные со временем фрагментируются, оптимизация удаляет всё лишнее и ускоряет работу таблицы…
Не нужно «где-то читал» и сразу тыкать. Всё это уже в прошлом. При использовании InnoDB лучше вообще руками всё делать, чем нажимать «Оптимизировать» т.к. она просто блокирует таблицу и делает бэкап и в чистую заливает всё. Никаких чудес.
Но при этом сайте лежит и если не ДАЙ бог додумается кто-то mysql перезагрузить или весь сервер, могут случиться необратимые последствия.
yuriynik
LEOnidUKG #:
Не нужно «где-то читал» и сразу тыкать. Всё это уже в прошлом. При использовании InnoDB лучше вообще руками всё делать, чем нажимать «Оптимизировать» т.к. она просто блокирует таблицу и делает бэкап и в чистую заливает всё. Никаких чудес.
Но при этом сайте лежит и если не ДАЙ бог додумается кто-то mysql перезагрузить или весь сервер, могут случиться необратимые последствия.
yuriynik
Мне нужно хранить в ОЗУ сервера большое количество страниц, около 60 тыс. Конкретно, две таблицы на 60 тыс и 8 тыс записей.
При чтении запросов из БД время ответа сервера 400-600 мс. При чтении из ОЗУ всего 60 мс. Поэтому хочу хранить таблицы в ОЗУ как можно дольше.
БД всего 100 Мб. ОЗУ на 2 Гб (VPS).
Как это можно решить? Каждый день вручную краулить сайт Screaming Frog-om не интересно, надо чтобы работало на автомате.
Aisamiery
Добрый день.
Мне нужно хранить в ОЗУ сервера большое количество страниц, около 60 тыс. Конкретно, две таблицы на 60 тыс и 8 тыс записей.
При чтении запросов из БД время ответа сервера 400-600 мс. При чтении из ОЗУ всего 60 мс. Поэтому хочу хранить таблицы в ОЗУ как можно дольше.
БД всего 100 Мб. ОЗУ на 2 Гб (VPS).
Как это можно решить? Каждый день вручную краулить сайт Screaming Frog-om не интересно, надо чтобы работало на автомате.
Скорее всего в ваших таблицах не хватает индексов — рекомендую проставить.
А так есть тип memory перегоняйте данные туда и читайте с неё, ну или можно залить все в другие типы хранилищ, но вам помогут индексы
yuriynik
Скорее всего в ваших таблицах не хватает индексов — рекомендую проставить.
А так есть тип memory перегоняйте данные туда и читайте с неё, ну или можно залить все в другие типы хранилищ, но вам помогут индексы
Спасибо, подумаю над этим
artshevtsov
LEOnidUKG
Настройте сервер нормально, таблицы InnoDB автоматически полностью загружаются в БД при частом использовании данных.
Но если записи не будет, то тип таблиц MEMORY как выход. Но опять же там нужно настроить сервер, чтобы они туда помещались.
Так же мы не знаем что у вас за таблицы и что за запросы.
yuriynik
yuriynik
Подскажите, почему таблицы memory не оптимизируются? Как это исправить?
http://joxi.ru/zANYMpJFvopyG2
LEOnidUKG
Забудьте про кнопку Оптимизация. НИКОГДА не пользуйтесь ей, если не знаете что это и как проходят там процессы.
Для Memory явно нечего оптимизировать.
yuriynik
Забудьте про кнопку Оптимизация. НИКОГДА не пользуйтесь ей, если не знаете что это и как проходят там процессы.
Для Memory явно ничего оптимизировать.
Даже так… А я где-то читал оптимизировать таблицы время-от времени полезно. Данные со временем фрагментируются, оптимизация удаляет всё лишнее и ускоряет работу таблицы…
LEOnidUKG
Даже так… А я где-то читал оптимизировать таблицы время-от времени полезно. Данные со временем фрагментируются, оптимизация удаляет всё лишнее и ускоряет работу таблицы…
Не нужно «где-то читал» и сразу тыкать. Всё это уже в прошлом. При использовании InnoDB лучше вообще руками всё делать, чем нажимать «Оптимизировать» т.к. она просто блокирует таблицу и делает бэкап и в чистую заливает всё. Никаких чудес.
Но при этом сайте лежит и если не ДАЙ бог додумается кто-то mysql перезагрузить или весь сервер, могут случиться необратимые последствия.
yuriynik
Не нужно «где-то читал» и сразу тыкать. Всё это уже в прошлом. При использовании InnoDB лучше вообще руками всё делать, чем нажимать «Оптимизировать» т.к. она просто блокирует таблицу и делает бэкап и в чистую заливает всё. Никаких чудес.
Но при этом сайте лежит и если не ДАЙ бог додумается кто-то mysql перезагрузить или весь сервер, могут случиться необратимые последствия.
Спасибо, разберусь подробнее в этом