(в MySQL ...) DATABASE
- это скорее логическая и административная конструкция, которая связана с производительностью.
На диске база данных является каталогом;таблица в этой базе данных содержит 1-3 файла в этом каталоге.Операционные системы начинают задыхаться, когда у вас есть много тысяч файлов или подкаталогов в одном каталоге.Но это не похоже на то, что вы достигаете такого масштаба.
В MySQL практически нет разницы в производительности, независимо от того, находятся ли две таблицы (которые объединяются и т. Д.) В одной базе данных (каталоге) или в отдельной.
Что касается «безопасности» ... С отдельной базой данных для каждого пользователя легче предоставлять разные разрешения на доступ разным пользователям.Это само по себе может быть причиной наличия дБ на пользователя.
Размер таблицы может влиять на производительность, но мы обычно говорим о миллиарде строк или терабайте.Тем не менее, индексы и т. Д. Могут держать проблемы под контролем.Необходимо посмотреть на таблицу 200 ГБ, чтобы увидеть, есть ли у вас типы данных минимального размера, достаточная нормализация, но не чрезмерная нормализация.Подходящие индексы, особенно составные индексы, а не дополнительные индексы и т. Д. (Начните новый Вопрос, если хотите продолжить.)
ALTER TABLE
влияет на одну таблицу, о которой идет речь;не имеет значения, какова структура базы данных.Кстати, MySQL 8.0 теперь имеет некоторые «мгновенные» изменения.
Превзойдете ли вы свой сервер?Что ты будешь делать тогда?Запустить другой сервер и перенести на него некоторых пользователей?В этом случае может быть удобнее иметь в базе данных на пользователя.Тогда вы просто перемещаете один дБ как единое целое;все остальное нетронутым.(То есть вы уже «зарезервированы» пользователем.)
Существуют ли какие-либо таблицы (кроме таблиц грантов), которые используются совместно пользователями?С помощью db-per-user создайте свою собственную базу данных.
Что касается , когда для обновления схемы, есть много методов, но ни один не идеален.Я бы посмотрел на каждый случай индивидуально.Одним из методов добавления столбцов является создание параллельной таблицы (вертикальное разбиение) для размещения новых столбцов.Это нулевое время простоя, но небрежно.В следующий раз, когда вы не сможете использовать этот трюк, вы можете разметить эти столбцы.
150 таблиц - это много для одного приложения.
200 ГБ для одной таблицы звучит так же, как выэкономят больше вещей, чем нужно.Подумайте о сводных таблицах.
Или я неправильно прочитал вопрос ... У вас есть
- Один набор из 150 таблиц со всеми пользователями в них?
- Одна база данных с несколькими наборами по 150 таблиц, по одному на пользователя?
- Множество баз данных, по одной на пользователя, по 150 таблиц в каждой?