Хранение часто используемых таблиц в MySQL

Y
На сайте с 01.04.2018
Offline
41
152
Добрый день.
Мне нужно хранить в ОЗУ сервера большое количество страниц, около 60 тыс. Конкретно, две таблицы на 60 тыс и 8 тыс записей.
При чтении запросов из БД время ответа сервера 400-600 мс. При чтении из ОЗУ всего 60 мс. Поэтому хочу хранить таблицы в ОЗУ как можно дольше.
БД всего 100 Мб. ОЗУ на 2 Гб (VPS).
Как это можно решить?  Каждый день вручную краулить сайт Screaming Frog-om не интересно, надо чтобы работало на автомате.
Aisamiery
На сайте с 12.04.2015
Offline
293
#1
yuriynik :
Добрый день.
Мне нужно хранить в ОЗУ сервера большое количество страниц, около 60 тыс. Конкретно, две таблицы на 60 тыс и 8 тыс записей.
При чтении запросов из БД время ответа сервера 400-600 мс. При чтении из ОЗУ всего 60 мс. Поэтому хочу хранить таблицы в ОЗУ как можно дольше.
БД всего 100 Мб. ОЗУ на 2 Гб (VPS).
Как это можно решить?  Каждый день вручную краулить сайт Screaming Frog-om не интересно, надо чтобы работало на автомате.

Скорее всего в ваших таблицах не хватает индексов - рекомендую проставить.

А так есть тип memory перегоняйте данные туда и читайте с неё, ну или можно залить все в другие типы хранилищ, но вам помогут индексы

Разработка проектов на Symfony, Laravel, 1C-Bitrix, UMI.CMS, OctoberCMS
Y
На сайте с 01.04.2018
Offline
41
#2
Aisamiery #:

Скорее всего в ваших таблицах не хватает индексов - рекомендую проставить.

А так есть тип memory перегоняйте данные туда и читайте с неё, ну или можно залить все в другие типы хранилищ, но вам помогут индексы

Спасибо, подумаю над этим 

A
На сайте с 30.01.2015
Offline
80
#3
Еще, как вариант, вы можете закешировать результаты повторяющихся тяжелых запросов с помощью Redis или  Memcached in-memory cache.  Часто бывает, что  запрос какой-нибудь менюшки-списка с JOIN +  GROUP BY + ORDER BY портит всю малину. Ну и оптимизировать/упростить сами запросы в мускуль, добавить индексы. Еще можете посмотреть что скажет про вашу конфигурацию утилита mysql-tuner, она может подсказать что надо подкрутить в конфиге. 
LEOnidUKG
На сайте с 25.11.2006
Offline
1722
#4

Настройте сервер нормально, таблицы InnoDB автоматически полностью загружаются в БД при частом использовании данных.

Но если записи не будет, то тип таблиц MEMORY как выход. Но опять же там нужно настроить сервер, чтобы они туда помещались.

Так же мы не знаем что у вас за таблицы и что за запросы.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/
Y
На сайте с 01.04.2018
Offline
41
#5
Спасибо за советы. Буду пробовать.
Y
На сайте с 01.04.2018
Offline
41
#6

Подскажите, почему таблицы memory не оптимизируются? Как это исправить?
http://joxi.ru/zANYMpJFvopyG2

LEOnidUKG
На сайте с 25.11.2006
Offline
1722
#7

Забудьте про кнопку Оптимизация. НИКОГДА не пользуйтесь ей, если не знаете что это и как проходят там процессы. 

Для Memory явно нечего оптимизировать.

Y
На сайте с 01.04.2018
Offline
41
#8
LEOnidUKG #:

Забудьте про кнопку Оптимизация. НИКОГДА не пользуйтесь ей, если не знаете что это и как проходят там процессы. 

Для Memory явно ничего оптимизировать.

Даже так... А я где-то читал оптимизировать таблицы время-от времени полезно. Данные со временем фрагментируются, оптимизация удаляет всё лишнее и ускоряет работу таблицы...

LEOnidUKG
На сайте с 25.11.2006
Offline
1722
#9
yuriynik #:

Даже так... А я где-то читал оптимизировать таблицы время-от времени полезно. Данные со временем фрагментируются, оптимизация удаляет всё лишнее и ускоряет работу таблицы...

Не нужно "где-то читал" и сразу тыкать.  Всё это уже в прошлом. При использовании InnoDB лучше вообще руками всё делать, чем нажимать "Оптимизировать" т.к. она просто блокирует таблицу и делает бэкап и в чистую заливает всё. Никаких чудес.


Но при этом сайте лежит и если не ДАЙ бог додумается кто-то mysql перезагрузить или весь сервер, могут случиться необратимые последствия.

Y
На сайте с 01.04.2018
Offline
41
#10
LEOnidUKG #:

Не нужно "где-то читал" и сразу тыкать.  Всё это уже в прошлом. При использовании InnoDB лучше вообще руками всё делать, чем нажимать "Оптимизировать" т.к. она просто блокирует таблицу и делает бэкап и в чистую заливает всё. Никаких чудес.


Но при этом сайте лежит и если не ДАЙ бог додумается кто-то mysql перезагрузить или весь сервер, могут случиться необратимые последствия.

Спасибо, разберусь подробнее в этом

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