mysql之分区表
1.分区表概述:
1.分区表的主要意义在于,对于表结构进行划分,不同的数据进入不同的分区中,以便于在查询过程中,只查找指定分区的数据,减少数据库扫描的数据量。
2.虽然从逻辑上看分区表是一张表,但是底层却是有不同的物理分区构成,对应的底层就是不同的数据文件。 限制:唯一性索引,必须在分区列上.因为表在底层是分成的.每一段索引在每一段列上,不能跨分区进行唯一判断. |
2.分区处理NULL值的方式:
range分区表: null被保存在最小分区
list分区: null被保存在0分区 hash和key: 被当做0 为了避免这种情况的产生,建议分区键设置成NOT NULL。 |
3.range分区
range分区就是范围分区,根据被分区列的数据的范围,将数据路由到不同的分区中.
range: 优点:可以进行范围查询,并且筛选分区 缺点:特定分区可能数据量很大,或者具有比较多的热数据,不能平均分散数据. 关于范围分区,如果创建范围分区是为了解决单个文件的写压力问题,尽量不要使用递增的id作为分区列。 建range分区表语句: create table emp_range (empno varchar(20) not null, empname varchar(20), deptno int, birthdate date, salary int ) partition by range(salary) ( partition p1 values less than (1000), partition p2 values less than (2000), partition p3 values less than maxvalue ); 查看表文件结构: [root@master test1]# ls |grep emp emp_range.frm emp_range#P#p1.ibd emp_range#P#p2.ibd emp_range#P#p3.ibd |
4.list 列表分区:
list就是列表分区,将固定的值,插入到固定的分区之中
建list分区表语句: create table emp_list (empno varchar(20) not null , empname varchar(20), deptno int, birthdate date not null, salary int ) partition by list(deptno) ( partition p1 values in (1), partition p2 values in (2), partition p3 values in (3) ); 表文件结构: [root@master test1]# ls |grep list emp_list.frm emp_list#P#p1.ibd emp_list#P#p2.ibd emp_list#P#p3.ibd |
5.hash分区:
先对列进行hash计算,然后使用取余算法对数据进行路由.
Hash分区主要用来分散热点读,确保数据在预先确定个数的分区中尽可能平均分布。 hash优点:可以打散热数据 缺点:不能进行范围查询 建hash分区语句: create table emp_hash (empno varchar(20) not null , empname varchar(20), deptno int, birthdate date not null, salary int ) partition by hash(year(birthdate)) partitions 4; 表文件结构: [root@master test1]# ls |grep hash emp_hash.frm emp_hash#P#p0.ibd emp_hash#P#p1.ibd emp_hash#P#p2.ibd emp_hash#P#p3.ibd |
6.key分区:
hash分区只能支持数值的分区,key分区可以支持字符串分区
建key分区语句: create table emp_key (empno varchar(20) not null , empname varchar(20), deptno int, birthdate date not null, salary int ) partition by key(birthdate) partitions 4; 表文件结构: [root@master test1]# ls |grep key emp_key.frm emp_key#P#p0.ibd emp_key#P#p1.ibd emp_key#P#p2.ibd emp_key#P#p3.ibd |
7.查看分区表:
查看分区表的建表语句: show create table emp_list; 查看分区使用情况:从information_schema.partitions表中查询 mysql> select partition_name,partition_expressio-n,partition_description, table_rows 其中 +----------------+----------------------+-----------------------+------------+ | partition_name | partition_expressio-n | partition_description +----------------+----------------------+-----------------------+------------+ | p1 | p2 | p3 +----------------+----------------------+-----------------------+------------+ mysql> select count(1) from emp_list; +----------+ | count(1) | +----------+ | +----------+ 1 row in set (0.00 sec) |
mysql之分区表的更多相关文章
- Mysql的分区表
概论: 分区表一般用作Mysql库表的水平切割(也就是常说的mysql性能优化的几种通用手法"读写分离.分库分表"中的一种),适用于单表的数据量可能很大的场景.因为分区表可以将一个 ...
- mysql使用 分区表使用,常用sql
mysql使用 分区表使用,常用sql 前言 本文的原文连接是: https://blog.csdn.net/freewebsys/article/details/84839478未经博主允许不得转载 ...
- mysql 案例~ 分区表
一 简介:今天来聊聊分区表的概念和维护二分区的优点: 1.提高查询性能:只需要搜索特定分区,而非整张表,提高了查询速度. 2.节约维护时间:单个分区的数据装载,索引重建,备份,维护远远小于整张表的 ...
- 【mysql】分区表
分区表是什么? 分区表可以按照事先创建的规则,对mysql的记录进行分组,每一个组具有一个独立的逻辑单元来存储该组的数据.典型的如:按照创建时间的年份分组,按照id的顺序分组(每1000万条数据分一个 ...
- 将mysql非分区表转换为分区表(转)
查看表的分布状况mysql> select count(*) from justin;+----------+| count(*) |+----------+| 5845246 |+---- ...
- MySQL分区表的使用
MySQL使用分区表的好处: 1,可以把一些归类的数据放在一个分区中,可以减少服务器检查数据的数量加快查询. 2,方便维护,通过删除分区来删除老的数据. 3,分区数据可以被分布到不同的物理位置,可以做 ...
- 互联网公司为啥不使用mysql分区表?
转:http://www.cnblogs.com/zhulin516114/p/7306708.html 缘起:有个朋友问我分区表在58的应用,我回答不出来,在我印象中,百度.58都没有听说有分区表相 ...
- 【58沈剑架构系列】互联网公司为啥不使用mysql分区表?
缘起:有个朋友问我分区表在58的应用,我回答不出来,在我印象中,百度.58都没有听说有分区表相关的应用,业内进行一些技术交流的时候也更多的是自己分库分表,而不是使用分区表.于是去网上查了一下,并询问了 ...
- MYSQL分区表功能测试简析
1.查看Mysql版本是否支持分区 SHOW VARIABLES LIKE '%partition%'; +-------------------+-------+ | Variable_nam ...
随机推荐
- Jmeter请求之cookie处理方式
方法一:增加cookie管理器线程组->配置元件->HTTP Cookie管理器,放在最上方 但该方法不一定有效 方法二:http信息头&正则表达式提取器结合使用, 在登录的htt ...
- jdk可视化工具系列——检视阅读
jdk可视化工具系列--检视阅读 参考 java虚拟机系列 RednaxelaFX知乎问答 RednaxelaFX博客 JConsole--Java监视与管理控制台 jconsole介绍 JConso ...
- 分布式事务说的的2PC、3PC、TCC是啥
目录 2PC(Two Phase Commit) 3PC(Three Phase Commit) TCC(Try-Confirm-Cancel) 2PC(Two Phase Commit) 顾名思义, ...
- Linux命令之tab 键补全
tab 键补全 tab 键可以实现命令及路径等补全,提高输入效率,避免出错 命令补全 用户给定的字符串只有一条惟一对应的命令,直接补全, 两次Tab会给出列表 内部命令: 外部命令:bash根据PAT ...
- HTML编辑器(1)
前言 现在网上有很多这样的HTML编辑器,这种编辑器无疑给人带来了很多方便,所以自己也想尝试制作一款这样的HTML编辑器,既然要制作,那就肯定是先把UI搭起来,再慢慢完善功能 设计思路 我的思路就是将 ...
- 腾讯云函数免费搭建onedrive网盘
目录 腾讯云函数 介绍 真免费? 搭建教程 准备条件 创建云函数 创建触发器 配置SecretId和SecretKey 添加onedriver盘 自定义域名 访问路径处理 总结 搭建期间遇到的问题 想 ...
- java如何实现一个Future
实现Futrue接口 public class MsgFuture<V> implements java.util.concurrent.Future<V> { ... ... ...
- 联赛模拟测试25 C. Repulsed 贪心+树形DP
题目描述 分析 考虑自底向上贪心 \(f[x][k]\) 表示 \(x\) 下面距离为 \(k\) 的需要灭火器的房间数,\(g[x][k]\) 表示 \(x\) 下面距离为 \(k\) 的多余灭火器 ...
- 云计算管理平台之OpenStack启动虚拟机实例
在前边的博客中,我们主要聊了下openstack的基础环境.核心服务(认证服务keystone/镜像服务glance/计算服务nova/网络服务neutron)的安装配置:回顾请查看前边的博客:今天我 ...
- mysql报错10061和10038
用navicat连接报错10038,用sqlyog报错10061,又去查看服务,发现服务丢失 经过一系列的查阅资料,用下面的方式解决了问题 1.用管理员的方式打开命令行窗口 2.进入mysql的bin ...