MySQL按某个字段建立表分区_mysql表分区

本文介绍了MySQL中如何按某个字段(如时间戳`insertTime`)建立表分区,包括创建、查询、删除分区的方法。通过示例展示了如何创建、插入数据、查询特定分区,并解释了分区修剪的概念,有助于提升查询效率和数据管理。
摘要由CSDN通过智能技术生成

1. 概述

通过删除仅包含该数据的分区(或多个分区),通常可以轻松地从分区表中删除失去其实用性的数据。相反,在某些情况下,通过添加一个或多个新分区来特别存储该数据,可以极大地促进添加新数据的过程。

由于满足给定WHERE子句的数据只能存储在一个或多个分区上,因此可以大大优化某些查询,这会自动从搜索中排除任何剩余的分区。由于在创建分区表后可以更改分区,因此可以重新组织数据以增强在首次设置分区方案时可能不常使用的频繁查询。这种排除不匹配分区(以及它们包含的任何行)的能力通常称为 分区修剪。

查看是否支持分区

MariaDB []> SHOW PLUGINS;

Name

Status

Type

partition

ACTIVEt

STORAGE ENGINE

2.完成一个空的分区表创建

2.1 Create Table:

CREATE TABLE `test1` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`sip` varchar(32) NOT NULL,

`client_address` varchar(32) DEFAULT NULL,

`media_name` varchar(128) DEFAULT NULL,

`auth_encrypt` varchar(1024) DEFAULT NULL,

`auth_decrypt` varchar(1024) DEFAULT NULL,

`sn` varchar(128) DEFAULT NULL,

`error_code` int(11) DEFAULT NULL,

`response_code` int(11) DEFAULT NULL,

`start_time` bigint(20) DEFAULT NULL,

`end_time` bigint(20) DEFAULT NULL,

`play_duration` bigint(20) DEFAULT NULL,

`insertTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

`client_ip` varchar(32) DEFAULT NULL,

`client_sn` varchar(512) DEFAULT NULL,

`media_type` int(12) DEFAULT NULL,

`token_decrypt` varchar(512) DEFAULT NULL,

`token_encrypt` varchar(512) DEFAULT NULL,

PRIMARY KEY (`id`,`insertTime`)

)ENGINE=InnoDB

PARTITION BY RANGE (UNIX_TIMESTAMP(`insertTime`))(

PARTITION p0 VALUES LESS THAN (UNIX_TIMESTAMP('2019-03-30 00:00:00')),

PARTITION p1 VALUES LESS THAN (UNIX_TIMESTAMP('2019-03-31 00:00:00')),

PARTITION p2 VALUES LESS THAN (UNIX_TIMESTAMP('2019-04-01 00:00:00'))

);

2.2 创建表后, 数据库目录下会生成3个分区的表空间

[root@localhost ~]# ls /var/lib/mysql/test -lh

总用量 41M

-rw-rw----. 1 mysql mysql 14K 3月 29 11:37 test1.frm

-rw-rw----. 1 mysql mysql 44 3月 29 11:37 test1.par

-rw-rw----. 1 mysql mysql 96K 3月 29 11:38 test1#P#p0.ibd

-rw-rw----. 1 mysql mysql 96K 3月 29 11:38 test1#P#p1.ibd

-rw-rw----. 1 mysql mysql 96K 3月 29 11:38 test1#P#p2.ibd

2.3 插入测试数据

INSERT INTO test1(sip,insertTime) VALUES ('1.1.1.4','2019-03-

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值