MySQL分区表各个分区如何创建在不同目录
MySQL分区表各个分区如何创建在不同目录
分区表无法创建在共享表空间(系统表空间,通用表空间),只能放在不同的独立表空间上。
以下是分区表不同分区放在不同目录的示例:

CREATE TABLE zkm.employees ( id INT NOT NULL, fname VARCHAR(30), lname VARCHAR(30), hired DATE NOT NULL DEFAULT '1970-01-01', separated DATE NOT NULL DEFAULT '9999-12-31', job_code INT NOT NULL, store_id INT NOT NULL ) ENGINE = InnoDB PARTITION BY RANGE (store_id) ( PARTITION p0 VALUES LESS THAN (6) DATA DIRECTORY = '/mysqldata_tmp', PARTITION p1 VALUES LESS THAN (11) DATA DIRECTORY = '/test_share_tbs', PARTITION p2 VALUES LESS THAN (16) tablespace = innodb_file_per_table, PARTITION p3 VALUES LESS THAN (21) );
(root@localhost 19:35:36) [(none)](9)> show variables like 'innodb_dire%'; +--------------------+----------------------------------+ | Variable_name | Value | +--------------------+----------------------------------+ | innodb_directories | /mysqldata_tmp/;/test_share_tbs/ | +--------------------+----------------------------------+ 1 row in set (0.01 sec) (root@localhost 19:35:42) [(none)](9)> CREATE TABLE zkm.employees ( -> id INT NOT NULL, -> fname VARCHAR(30), -> lname VARCHAR(30), -> hired DATE NOT NULL DEFAULT '1970-01-01', -> separated DATE NOT NULL DEFAULT '9999-12-31', -> job_code INT NOT NULL, -> store_id INT NOT NULL -> ) ENGINE = InnoDB -> PARTITION BY RANGE (store_id) ( -> PARTITION p0 VALUES LESS THAN (6) DATA DIRECTORY = '/mysqldata_tmp', -- 独立表空间,放在 /mysqldata_tmp 库名目录下 -> PARTITION p1 VALUES LESS THAN (11) DATA DIRECTORY = '/test_share_tbs', -- 独立表空间,放在 /test_share_tbs 库名目录下 -> PARTITION p2 VALUES LESS THAN (16) tablespace = innodb_file_per_table, -- 独立表空间,放在变量datadir 库名目录下 -> PARTITION p3 VALUES LESS THAN (21) -- 独立表空间,放在变量datadir 库名目录下,同接着的上边一样的效果 -> ); Query OK, 0 rows affected (0.15 sec)
对应OS的位置:
[root@dev-app80 ~]# ll /mysqldata_tmp/zkm/ total 112 -rw-r----- 1 mysql mysql 114688 Jun 30 19:36 employees#p#p0.ibd [root@dev-app80 ~]# ll /test_share_tbs/zkm/ total 112 -rw-r----- 1 mysql mysql 114688 Jun 30 19:36 employees#p#p1.ibd [root@dev-app80 ~]# ll /data/mysql3306/data/zkm/ total 448 -rw-r----- 1 mysql mysql 114688 Jun 30 19:36 employees#p#p2.ibd -rw-r----- 1 mysql mysql 114688 Jun 30 19:36 employees#p#p3.ibd -rw-r----- 1 mysql mysql 114688 Jun 30 18:49 t1.ibd -rw-r----- 1 mysql mysql 114688 Jun 30 18:52 t2.ibd
添加新分区防偷防爬:
alter table zkm.employees add partition ( partition p4 VALUES LESS THAN (50) DATA DIRECTORY = '/mysqldata_tmp'); alter table zkm.employees add partition ( partition p5 VALUES LESS THAN (60) tablespace = innodb_file_per_table); (root@localhost 19:38:13) [(none)](9)> alter table zkm.employees add partition ( partition p4 VALUES LESS THAN (50) DATA DIRECTORY = '/mysqldata_tmp'); Query OK, 0 rows affected (0.03 sec) Records: 0 Duplicates: 0 Warnings: 0 (root@localhost 19:38:14) [(none)](9)> alter table zkm.employees add partition ( partition p5 VALUES LESS THAN (60) tablespace = innodb_file_per_table); Query OK, 0 rows affected (0.06 sec) Records: 0 Duplicates: 0 Warnings: 0
可惜不支持修改表的某个分区数据文件的目录。
要研究研究怎么搞。
alter table partition:https://dev.mysql.com/doc/refman/8.0/en/alter-table-partition-operations.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2021-06-30 Oracle数据泵expdp遭遇Streams AQ: Enqueue Blocked On Low Memory等待事件
2021-06-30 Oracle已经应用PSU+OJVM补丁后通过dbca新创建的数据库是否需要跑脚本
2020-06-30 ORA-39257: Data cannot be remapped for more than 10 columns.
2020-06-30 Oracle expdp导出分区表,query条件带有rownum