mysql查分区数据_mysql之数据分区
一:概述 通过把表分成多几区间,每个区间存储符合特定表达式的数据(即在我们创建分区表时指定每个分区存储的条件例如:PARTITION p0 VALUES LESS THAN (100) 即p0区间存储小于100的数据)。
二:分区类型
即根据每个区间存储值的表达式不同,可分为如下几个类型,一般都是对数字类型或时间类型的数据进行分区。
2.1 RANGE分区 :即通过表达式 PARTITION p0 VALUES LESS THAN (100) 。即 less小于指定的值存储区间。
2.2 LIST 分区 :即通过表达式 PARTITION pNorth VALUES IN (3,5,6,9,17) 。即值在in括号里面的值存储区间。
2.3 HASH 分区 :即通过特定算法(hash)把指定的值放入不同区间。PARTITION BY HASH(id) PARTITIONS 4。
2.4 KEY 分区: 和hash分区类似,但指定的列值必须是唯一值(即主键或 UNIQUE KEY),PARTITION BY KEY() PARTITIONS 2;
2.5COLUMNS 分区:
三:分区查询
语法:
SELECTselect_expr[, select_expr ...]
FROMtable_references[PARTITION partition_list] //指定分局
eg:select * from rc1 PARTITION(p0) ; //在标的引用后面加上PARTITION(p,...)函数,参数为表的分区名
备注:如果我们查询没有添加分区条件,默认是查询所有分区
四:RANGE分区
CREATE TABLE`tb_range` (-> `id` int(11) NOT NULL,-> `fname` varchar(30) DEFAULT NULL,-> `lname` varchar(30) DEFAULT NULL
->)-> PARTITION BYRANGE (id)-> (PARTITION p0 VALUES LESS THAN (6),-> PARTITION p1 VALUES LESS THAN (11),-> PARTITION p2 VALUESLESS THAN MAXVALUE ) ;
Query OK,0 rows affected (0.64sec)
mysql> insert into tb_range(id,fname,lname)values(1,'a1','b1'),(6,'a6','b6'),(10,'a10','b10'),(20,'a20','b20');
Query OK,4 rows affected (0.02sec)
Records:4 Duplicates: 0 Warnings: 0
View Code
查询:
mysql> select * fromtb_range partition(p0); //查询p0区的数据+----+-------+-------+
| id | fname | lname |
+----+-------+-------+
| 1 | a1 | b1 |
+----+-------+-------+
1 row in set (0.00sec)
mysql> select * fromtb_range partition(p2);//查询p2区的数据+----+-------+-------+
| id | fname | lname |
+----+-------+-------+
| 20 | a20 | b20 |
+----+-------+-------+
1 row in set (0.00sec)
mysql> select * fromtb_range partition(p1);//查询p1区的数据+----+-------+-------+
| id | fname | lname |
+----+-------+-------+
| 6 | a6 | b6 |
| 10 | a10 | b10 |
+----+-------+-------+
2 rows in set (0.00 sec)
五:LIST 分区
mysql> CREATE TABLE`tb_list` (-> `id` int(11) NOT NULL,-> `fname` varchar(30) DEFAULT NULL,-> `lname` varchar(30) DEFAULT NULL,-> `class_id` int(11) NOT NULL
->)-> PARTITION BYLIST(class_id) (-> PARTITION pNorth VALUES IN (1,3),-> PARTITION pEast VALUES IN (2,4)->);
Query OK,0 rows affected (0.47sec)
mysql> insert into tb_list(id,fname,lname,class_id)values(1,'a1','b1',1),(6,'a6','b6',2),(10,'a10','b10',3),(20,'a20','b20',4);
Query OK,4 rows affected (0.02 sec)
View Code
查询:
mysql> select * fromtb_list partition(pEast);+----+-------+-------+----------+
| id | fname | lname | class_id |
+----+-------+-------+----------+
| 6 | a6 | b6 | 2 |
| 20 | a20 | b20 | 4 |
+----+-------+-------+----------+
2 rows in set (0.00sec)
mysql> select * fromtb_list partition(pNorth);+----+-------+-------+----------+
| id | fname | lname | class_id |
+----+-------+-------+----------+
| 1 | a1 | b1 | 1 |
| 10 | a10 | b10 | 3 |
+----+-------+-------+----------+
2 rows in set (0.00 sec)
备注:list方式分区in()参数可以无需
如果插入不存在的分区,数据库会报错
六:HASH 分区
6.1hash散列算法
mysql> CREATE TABLEtb_hash (-> id INT NOT NULL,-> fname VARCHAR(30),-> lname VARCHAR(30)->)-> PARTITION BYHASH(id)-> PARTITIONS 3;
Query OK,0 rows affected (0.56sec)
mysql> insert into tb_hash(id,fname,lname)values(1,'a1','b1'),(6,'a6','b6'),(10,'a10','b10'),(20,'a20','b20');
Query OK,4 rows affected (0.03sec)
Records:4 Duplicates: 0 Warnings: 0
View Code
查询:默认分区为p0,p1....
mysql> select * fromtb_hash partition(p0);+----+-------+-------+
| id | fname | lname |
+----+-------+-------+
| 6 | a6 | b6 |
+----+-------+-------+
1 row in set (0.00sec)
mysql> select * fromtb_hash partition(p1);+----+-------+-------+
| id | fname | lname |
+----+-------+-------+
| 1 | a1 | b1 |
| 10 | a10 | b10 |
+----+-------+-------+
2 rows in set (0.00sec)
mysql> select * fromtb_hash partition(p2);+----+-------+-------+
| id | fname | lname |
+----+-------+-------+
| 20 | a20 | b20 |
+----+-------+-------+
1 row in set (0.01 sec)
mysql> select * from tb_hash partition(p3);
ERROR 1735 (HY000): Unknown partition 'p3' in table 'tb_hash'
6.2 hash线性算法
mysql> CREATE TABLEtb_hash_linear (-> id INT NOT NULL,-> fname VARCHAR(30),-> lname VARCHAR(30)->)-> PARTITION BYLINEAR HASH(id)-> PARTITIONS 3;
Query OK,0 rows affected (0.58 sec)
View Code
七:KEY 分区
mysql> CREATE TABLEtb_key (-> id INT NOT NULL PRIMARY KEY,-> name VARCHAR(20)->)-> PARTITION BY KEY()-> PARTITIONS 2;
Query OK,0 rows affected (0.44 sec)
注意:我们数据库目录存放着我们所有数据库的信息,包括数据库中表的信息和表中数据。其中每个数据库会在该目录下创建一个以数据库名命名文件夹,该文件夹下主要包含.frm和.idb结尾的文件,其中.idb(一个表对应一个)文件存放着每个表的数据。如果我们的表是分区表则一个表对用多个.idb文件。分析下图箭头
有图可知:
数据库目录 : /var/lib/mysql
我查看的数据库为:test3
普通表一个.frm和一个.idb 而分区表一个.frm和多个.idb文件
mysql查分区数据_mysql之数据分区相关推荐
- mysql维护分区脚本_mysql 5.6 分区维护
本人英语不好,如下翻译有不当之处敬请纠正: 表和分区的一些维护任务,适用于在mysql5.6的分区表上用sql语句进行. 维护分区表,可以使用支持分区表的语句:CHECK TABLE, OPTIMIZ ...
- mysql insert id菜鸟_MySQL 插入数据
MySQL 插入数据 MySQL 表中使用INSERT INTOSQL语句来插入数据. 你可以通过 mysql> 命令提示窗口中向数据表中插入数据,或者通过PHP脚本来插入数据. 语法 以下为向 ...
- mysql创建数据表示例_Mysql创建数据表的方法介绍(附示例)
本篇文章给大家带来的内容是关于Mysql创建数据表的方法介绍(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 数据表是数据库最重要的组成部分之一,是其他对象的基础.如果我们的 ...
- mysql 查询姓王_mysql常用数据操作之查
将数据库查询单独开来是因为使用最多,也是技巧最多,同时面试最容易问的部分 简单查询 select * from table_name; select name,age from table_name; ...
- mysql数据库删除列数据_MySQL数据库-数据表、以及列的增删改查
1.创建一个表 CREATE(创建) TABLE(表) ENGINE(引擎) ENGINE=INNODB(引擎)还有很多类引擎,这里只是简单的提一下INNODB引擎,INNODB引擎支持事务(回滚), ...
- mysql查指定日期后的数据_mysql查询指定日期数据
查询 今天 select * from 表名 where to_days(时间字段名) = to_days(now()); 昨天 SELECT * FROM 表名 WHERE TO_DAYS( NOW ...
- mysql 交换分区吗_MySQL分区表——交换分区
从MySQL 5.6开始,支持分区交换.就是将一个分区表中的一个分区和一个普通表中的数据互换.一.实现交换分区的基本语法:ALTER TABLEptEXCHANGE PARTITIONpWITH TA ...
- mysql创建表参数_MySQL创建数据表(CREATE TABLE语句)
在创建数据库之后,接下来就要在数据库中创建数据表.所谓创建数据表,指的是在已经创建的数据库中建立新表. 创建数据表的过程是规定数据列的属性的过程,同时也是实施数据完整性(包括实体完整性.引用完整性和域 ...
- mysql创建销售表_MySQL创建数据表(CREATE TABLE语句)
在创建数据库之后,接下来就要在数据库中创建数据表.所谓创建数据表,指的是在已经创建的数据库中建立新表. 创建数据表的过程是规定数据列的属性的过程,同时也是实施数据完整性(包括实体完整性.引用完整性和域 ...
最新文章
- AI开发者大会之计算机视觉技术实践与应用:2020年7月3日《如何利用计算机视觉增加便利店连锁每日销售额》、《基于图像 / 视频的人脸和人体分析基础技术及其应用介绍》
- cordova打包安卓app
- java -jar 和 java -cp用法
- MFC 网络编程小结
- MessageBox、::MessageBox 、AfxMessageBox三者的区别
- 求一个数字是几位数(简便)
- android webview 长按菜单拦截,javascript-在Android上长按时禁用上下文菜单
- 神舟笔记本风扇控制软件_十代酷睿+RTX2070加持 高性能游戏本首选神舟战神G9CU7PK...
- 在生产服务器上要注意dbgsvc.exe
- ArcPy处理土地利用类型数据
- SSM : 环境搭建
- Python 根据百度 API 获得经纬度,根据经纬度计算城市间距离
- linux-推荐两款好用的录屏软件
- php中字符串与数组的相互转化explode(separator,$str)与implode(separator,$arr)
- “以图搜图”的奇葩用途 | 深度
- win7桌面背景_win7桌面背景怎么改?
- txt文件内容导入mysql数据库中_将txt文件导入mysql数据库
- 【JS】用JS发送电子邮件
- get查询IP PHP源码,ip归属地查询代码
- 《一封来自姐姐的信》