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

posted @   PiscesCanon  阅读(63)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 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
点击右上角即可分享
微信分享提示