Этот вопрос был задан почти 10 лет назад: Размер схемы MySQL
Я не буду закрывать ваш вопрос как дубликат, потому что он был достаточно длинным, чтобы заслуживать нового ответа.
Ничего не изменилось. MySQL не может определять ограничение размера отдельной базы данных.
Вы можете установить максимальный размер для системного табличного пространства, и все ваши таблицы и схемы заполнят его, если вы установите innodb_file_per_table=0
. Вы можете настроить максимальный размер в my.cnf следующим образом:
innodb_data_file_path=ibdata1:12M:autoextend:max:1G
Это всего лишь пример, это означает, что файл ibdata1 изначально создается на 12 МБ, он увеличивается по мере необходимости, но не будет больше, чем 1 ГБ. См. https://dev.mysql.com/doc/refman/8.0/en/innodb-init-startup-configuration.html для получения дополнительной информации.
Даже при потенциальном ограничении на системное табличное пространство это не дает вам контроля над тем, сколько места может использовать каждая схема. Все они используют одно и то же табличное пространство.
Если вы используете innodb_file_per_table=1
, каждая таблица хранится в своем собственном файле табличного пространства. Нет опции для определения размера табличного пространства для таблицы.
Начиная с MySQL 5.7, вы также можете создать Общее табличное пространство и назначить ему несколько таблиц. Например, вы можете поместить все таблицы для определенной схемы в одно общее табличное пространство. Но это также не имеет синтаксиса для определения предельного размера общего табличного пространства.
Я видел несколько решений в сети, чтобы отменить привилегии вставки / обновления в схеме, если она превышает предельный размер. Но это не обеспечивается MySQL, это внешнее решение.