MySQL 8.0开始,用户可自定义表空间,语法如下:
参见官方链接:
https://dev.mysql.com/doc/refman/8.0/en/create-tablespace.html
CREATE [UNDO] TABLESPACE tablespace_name
InnoDB and NDB:
[ADD DATAFILE 'file_name']
[AUTOEXTEND_SIZE [=] value]
InnoDB only:
[FILE_BLOCK_SIZE = value]
[ENCRYPTION [=] {'Y' | 'N'}]
NDB only:
USE LOGFILE GROUP logfile_group #自定义日志文件组,一般每组2个logfile
[EXTENT_SIZE [=] extent_size]
[INITIAL_SIZE [=] initial_size]
[MAX_SIZE [=] max_size] #单个文件最大size,最大是32G
[NODEGROUP [=] nodegroup_id]
[WAIT]
[COMMENT [=] 'string']
InnoDB and NDB:
[ENGINE [=] engine_name]
Reserved for future use:
[ENGINE_ATTRIBUTE [=] 'string']
可以看到MySQL从8.0版本开始,越来越像Oracle了。
MySQL这么搞,有啥好处?
大家知道,MySQL5.7 版本之前在设置数据目录datadir时只能指定一个文件系统,如果这个文件系统满了怎么办?这时候只能扩展OS层的文件系统。8.0版本后,可通过ADD DATAFILE ‘file_name’ 方式指定新的文件系统了,是的数据扩展更加的灵活;
隐含的好处是:
可做数据冷热分离,如分别用HDD和SSD来存储,实现数据高效存取/提升业务响应,又能节约成本。
举个栗子:
有两块1TB的存储(SSD和HDD),经过创建两个卷组vg,划分两个逻辑卷lv,创建/hot_data 和 /cold_data两个数据目录,并mount对应的lv上;此方式可实现数据冷热分离。
以下为个人公众号,欢迎扫码关注:

MySQL8.0自定义表空间:灵活性与数据管理优化
MySQL8.0引入了自定义表空间功能,允许用户通过ADDDATAFILE指定不同文件系统进行数据存储,增强数据扩展性和冷热数据分离能力。例如,可以使用HDD和SSD结合,实现高效存取并降低成本。这一改变使得MySQL在数据管理上更接近Oracle,提高了系统的灵活性和可维护性。
1074

被折叠的 条评论
为什么被折叠?



