首页 > 数据库 >MySQL分区表各个分区如何创建在不同目录

MySQL分区表各个分区如何创建在不同目录

时间:2023-06-30 19:55:23浏览次数:47  
标签:30 LESS 分区 MySQL 分区表 VALUES mysql employees THAN

 

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

标签:30,LESS,分区,MySQL,分区表,VALUES,mysql,employees,THAN
From: https://www.cnblogs.com/PiscesCanon/p/17517710.html

相关文章

  • MySQLINNODB表空间分类简单介绍
     MySQLINNODB表空间分类简单介绍 从功能上看INNODB表空间共以下几种:系统表空间File-Per-Table表空间通用表空间Undo表空间临时表空间 从共享与否角度看上边提到的五种表空间可以这么归类。共享表空间独立表空间官档中有明确提到“共享表空间”这个说法:http......
  • 高手都是如何做 Mysql 慢 SQL 优化
    tip:作为程序员一定学习编程之道,一定要对代码的编写有追求,不能实现就完事了。我们应该让自己写的代码更加优雅,即使这会费时费力。......
  • Docker安装MySQL8.0
    安装拉取镜像默认拉取最新版本的镜像$dockerpullmysql如果要指定版本,使用下面的命令$dockerpullmysql:8.0.16创建数据目录和配置文件 在宿主机创建放置mysql的配置文件的目录和数据目录,并且进行授权$mkdir-p/usr/mysql/conf/usr/mysql/data$chmod-R755/usr/m......
  • MySQL 知识合集
    脏页脏页的来历一言蔽之,脏页就是插入和更新的数据锁保存的对应的内存(缓存)页脏页的刷新脏页的刷新采用定时+阈值触发+关闭前 相关参数innodb_page_cleanersinnodb_buffer_pool_instancesinnodb_lru_scan_depthinnodb_nax_dirty_pages_pct是否刷新脏页......
  • mysql 如何 使用一个字符串来进行排序
    如果想进行对一个字段进行排序,但是这个字段却不是int类型,适应varchar类型怎么办呢?常用的方式:给字符字段加上0,举例:1:假设scoreRate是一个varchar类型,并且值是一个百分(90%)的数据格式.要求:请获取scoreRate值最高的一条数据:sql:select*fromresultTableorderbyreplace(sco......
  • 一文读懂 Mysql MVCC
    ......
  • MySQL如何将创建外部表
     MySQL如何将创建外部表 本文实验版本MySQL8。MySQL中所谓的外部表,就是将innodb表创建在变量datadir代表的数据目录之外。(跟Oracle外部表完全不是一个东西)出于扩容,空间管理,IO优化等原因。这里可以使用如下3种方式创建外部表:使用DATADIRECTORY子句使用CREATETA......
  • MYSQL查询时间范围内的数据
    其中,table_name是要查询的表名,date_column是日期字段的列名。一周SELECT *FROM table_nameWHERE date_columnBETWEENDATE_SUB(CURDATE(),INTERVAL1WEEK)ANDCURDATE();一个月SELECT *FROM table_nameWHERE date_columnBETWEENDATE_SUB(CURDATE(),INTERV......
  • python连接mysql数据库
    连接mysql方式很多,这里先只介绍pymysql库连接mysql数据库。1.安装pymysqlpipinstallpymysql-ihttps://pypi.tuna.tsinghua.edu.cn/simple2.  建立mysql数据表 安装好mysql数据库之后,建立表并插入数据后如下: 表的结构:3.连接数据库连接数据......
  • 事务全攻略,MySQL数据库必学知识!
    前言从今天开始,健哥就带各位小伙伴学习数据库技术。数据库技术是Java开发中必不可少的一部分知识内容。也是非常重要的技术。本系列教程由浅入深,全面讲解数据库体系。非常适合零基础的小伙伴来学习。全文大约【1707】字,不说废话,只讲可以让你学到技术、明白原理的纯干货!本文......