Задать вопрос

2 миллиона таблиц в 15 тысячах баз в MySQL, как с этим жить?

Сабж. Как потюнить и что, железо быстрое, нагрузки нет, но запросы тормозят.
  • Вопрос задан
  • 2603 просмотра
Подписаться 7 Оценить 3 комментария
Пригласить эксперта
Ответы на вопрос 6
Приколите хоть народ, откуда у вас 15к баз? И какой у них средний размер? Может объединить все базы, укрупнить, только юзеров разделить? Как в некоторых коммерческих CMS можно несколько сайтов на одной копии CMS создавать, но база у них одна будет.
Ответ написан
Комментировать
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
самое простое:
1. вначале всегда смотрите на кол-во объектов при выборке, прежде чем получать сами строки выборки.
2. ограничьте максимальное кол-во записей до 1, если ищите по ID или ключу.
3. увеличьте размер кэша
4. используйте одну транзакцию вместо нескольких подряд.
5. не используйте связанные таблицы в сложных выборках: делайте 2-3 выборки отдельно в одной транзакции через переменные...

А, ну еще ОБЯЗАТЕЛЬНО: перепроектируйте базу в 3НФ!
Ответ написан
Комментировать
leahch
@leahch
3D специалист. Dолго, Dорого, Dерьмово.
Я так понимаю, это хостинг, все базы живут в одном компухтере. Скорее всего Вы упёрлись в производительность дисковой системы или в ресурсы ядра, типа количество открытых сокетов, файлов на пользователя и т.д. Если так, то смотреть где затыки, то и улучшать. Ну и перенести особо нагруженные базы на другой сервер.
Ответ написан
alexxxst
@alexxxst Автор вопроса
Вообще, это такой эксперимент. Был сервер с 5 тысячами баз, с 700 тысячами таблиц. По какому-то там железу спокойно тянул свою нагрузку без напрягов, все летало. Было решено взять крутой сервер в 4 раза мощнее и запихнуть на него в 3 раза больше, по идее должно было заработать, но нет.
Ответ написан
Комментировать
Большое значение %sys может говорить о множестве системных вызовов - открытие/закрытие файлов, создание/завершение потоков. Стоит попробовать увеличить table_open_cache и thread_pool_size.
Ответ написан
Комментировать
opium
@opium
Просто люблю качественно работать
раскидать на 15 серверов по тысяче баз для начала.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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