有没有办法定义mysql数据库的最大大小?例如:
CREATE DATABASE `foo` WITH maxSize=1gb;
slhcrj9b1#
最接近于设置硬大小限制的事情是在定义InnoDB系统表空间的大小时。www.example.comhttps://dev.mysql.com/doc/refman/8.0/en/innodb-init-startup-configuration.html#innodb-startup-data-file-configuration示例:
[mysqld] innodb_data_file_path=ibdata1:12M:autoextend:max:500M
请注意,如果设置了这个大小限制,您将不能使用每个表一个文件的表空间或常规表空间。您设置了innodb_file_per_table=OFF,所有表将共享系统表空间。如果您需要执行ALTER TABLE或OPTIMIZE TABLE操作,而系统表空间中没有足够的可用空间,那么这将非常不舒服。您可能会遇到这样一种情况:如果不删除或截断一些表,或者临时使用innodb_file_per_table=ON,您 * 无法 * 执行这些操作。MySQL中没有设置每个表一个文件的表空间或一般表空间的最大大小的特性。在MySQL的现代版本中,仍然有其他文件在系统表空间之外创建,比如临时表、回滚段和doublewrite缓冲区。我不认为这些文件的大小可以用同样的方式控制。然后是查询日志和二进制日志,它们可能会占用大量空间,具体取决于您的流量速率。
innodb_file_per_table=OFF
innodb_file_per_table=ON
1条答案
按热度按时间slhcrj9b1#
最接近于设置硬大小限制的事情是在定义InnoDB系统表空间的大小时。www.example.comhttps://dev.mysql.com/doc/refman/8.0/en/innodb-init-startup-configuration.html#innodb-startup-data-file-configuration
示例:
请注意,如果设置了这个大小限制,您将不能使用每个表一个文件的表空间或常规表空间。您设置了
innodb_file_per_table=OFF
,所有表将共享系统表空间。如果您需要执行ALTER TABLE或OPTIMIZE TABLE操作,而系统表空间中没有足够的可用空间,那么这将非常不舒服。您可能会遇到这样一种情况:如果不删除或截断一些表,或者临时使用
innodb_file_per_table=ON
,您 * 无法 * 执行这些操作。MySQL中没有设置每个表一个文件的表空间或一般表空间的最大大小的特性。
在MySQL的现代版本中,仍然有其他文件在系统表空间之外创建,比如临时表、回滚段和doublewrite缓冲区。我不认为这些文件的大小可以用同样的方式控制。
然后是查询日志和二进制日志,它们可能会占用大量空间,具体取决于您的流量速率。