运维利器之mysql进行表的分区
运维利器之mysql进行表的分区
特别声明一下哈,小编不是DBA,所以相对来说对mysql的理解不是那么的透彻,小编可以做到的是确保数据的安全,知道数据怎么存储,才能更好的保护数据,知己知彼,方能百战不殆,哈,最近想到了数据库分区这块,所以也就自己鼓捣鼓捣看看
什么叫做表的分区,这个吧,小编有个外号,他们都叫小编粗人一个,在这里就不多解释了,简单的理解一下就是把一个大表根据相应的条件给分割成好多的小表,来增加数据库的性能,虽然说的有瑕疵,但是可以这样理解
- 相关优点
- 支持分表到磁盘,相对来说可以存储更多的数据
- 部分查询可以得到极大的优化
- 获得更大的查询吞吐量
基本分区类型
RANGE分区
这个是非常简单理解的,就是说把需要分区的字段具体的点来进行分区,比如说年龄,将小于10岁的分一个区,小于20岁的分一个区,小于30岁的分一个区,其他年龄的分一个区。这里需要注意得是分区的名字是不区分大小写的,也就是说p01==P01,这两个是一个表的分区
###创建表的时候进行分区
mysql> create table t1 (id int,name varchar(20),age int)-> partition by range(age)-> (-> partition p01 values less than (10),-> partition p02 values less than (20),-> partition p03 values less than (30),-> partition p04 values less than (maxvalue)-> );
Query OK, 0 rows affected (0.07 sec)###检验分区后的效果[root@lnmp mysql]# ll test2
总用量 404
-rw-rw---- 1 mysql mysql 61 11月 14 16:20 db.opt
-rw-rw---- 1 mysql mysql 8614 11月 14 16:23 t1.frm
-rw-rw---- 1 mysql mysql 36 11月 14 16:23 t1.par
-rw-rw---- 1 mysql mysql 98304 11月 14 16:23 t1#P#p01.ibd ###分区后的效果
-rw-rw---- 1 mysql mysql 98304 11月 14 16:23 t1#P#p02.ibd ###分区后的效果
-rw-rw---- 1 mysql mysql 98304 11月 14 16:23 t1#P#p03.ibd ###分区后的效果
-rw-rw---- 1 mysql mysql 98304 11月 14 16:23 t1#P#p04.ibd ###分区后的效果
LIST分区
这个的话,个人感觉哈,就是把上面的range分区进行了列表话分区,range分区不是一个分区时一个条件吗,但是这个list分区里面可以是多个条件来分成一个区。列如:将物品id为1,2,3分为一个分区,物品id为4,5,6分为一个分区,物品id为7,8,9另一个分区。对,就是这样。
mysql> create table t2 (id int,cid int,name varchar(20),pos_date datetime)-> partition by list(cid)-> (-> partition p01 values in (1,2,3),-> partition p02 values in (4,5,6),-> partition p03 values in (7,8,9)-> );
Query OK, 0 rows affected (0.01 sec)[root@lnmp test2]# ll t2*
-rw-rw---- 1 mysql mysql 8652 11月 14 19:40 t2.frm
-rw-rw---- 1 mysql mysql 32 11月 14 19:40 t2.par
-rw-rw---- 1 mysql mysql 98304 11月 14 19:40 t2#P#p01.ibd ###分区后的效果
-rw-rw---- 1 mysql mysql 98304 11月 14 19:40 t2#P#p02.ibd ###分区后的效果
-rw-rw---- 1 mysql mysql 98304 11月 14 19:40 t2#P#p03.ibd ###分区后的效果
HASH分区
这个分区的优点在于数据分布的比较均匀,还有一系列的较为复杂的算法,可以这样理解,就比如大于2的分布一个区,小于2的分一个区,当然了,小编的思考还是比较简单了,其实她也是相当的复杂,具体的话可以看看官方的文档喽。
mysql> create table t3 (id int,cid int,name varchar(20),pos_date datetime)-> partition by hash (cid)-> partitions 4; ###指定分区数量
Query OK, 0 rows affected (0.01 sec)[root@lnmp test2]# ll t3*
-rw-rw---- 1 mysql mysql 8652 11月 14 19:54 t3.frm
-rw-rw---- 1 mysql mysql 32 11月 14 19:54 t3.par
-rw-rw---- 1 mysql mysql 98304 11月 14 19:54 t3#P#p0.ibd ###分区后的效果
-rw-rw---- 1 mysql mysql 98304 11月 14 19:54 t3#P#p1.ibd ###分区后的效果
-rw-rw---- 1 mysql mysql 98304 11月 14 19:54 t3#P#p2.ibd ###分区后的效果
-rw-rw---- 1 mysql mysql 98304 11月 14 19:54 t3#P#p3.ibd ###分区后的效果
LINEAR HASH分区
hash分区的一种,优点在于适合处理极其大量数据的表,是一个线性哈希分区,但是也有缺点,导致数据分布不是那么的均匀。导致某一个节点数据较多,查询次数较多。
mysql> create table t4 (id int,cid int,name varchar(20),pos_date datetime) partition by linear hash(cid) partitions 4;
Query OK, 0 rows affected (1.73 sec)[root@lnmp test2]# ll t4*
-rw-rw---- 1 mysql mysql 8652 11月 14 20:07 t4.frm
-rw-rw---- 1 mysql mysql 32 11月 14 20:07 t4.par
-rw-rw---- 1 mysql mysql 98304 11月 14 20:07 t4#P#p0.ibd
-rw-rw---- 1 mysql mysql 98304 11月 14 20:07 t4#P#p1.ibd
-rw-rw---- 1 mysql mysql 98304 11月 14 20:07 t4#P#p2.ibd
-rw-rw---- 1 mysql mysql 98304 11月 14 20:07 t4#P#p3.ibd
KEY分区
类似于hash分区,hash分区使用的用户自定义的表达式,但是kkey分区的哈希函数是有mysql服务器提供。mysql簇(cluster)使用md5()来实现key分区;对于使用其他存储引擎的表,服务器使用的其自己的内部的哈希函数,这些函数是基于与PASSWORD()一样的运算法则。使用率不是很高,做一了解即可
mysql> create table t5 (id int,cid int,name varchar(20),pos_date datetime) partition by linear key (cid) partitions 4;
Query OK, 0 rows affected (1.64 sec)[root@lnmp test2]# ll t5*
-rw-rw---- 1 mysql mysql 8652 11月 14 20:18 t5.frm
-rw-rw---- 1 mysql mysql 32 11月 14 20:18 t5.par
-rw-rw---- 1 mysql mysql 98304 11月 14 20:18 t5#P#p0.ibd
-rw-rw---- 1 mysql mysql 98304 11月 14 20:18 t5#P#p1.ibd
-rw-rw---- 1 mysql mysql 98304 11月 14 20:18 t5#P#p2.ibd
-rw-rw---- 1 mysql mysql 98304 11月 14 20:18 t5#P#p3.ibd
多列分区
以前我们在分区的时候,只是用的一个字段来进行的分区,有时候,我们也需要两个或者多个字段来进行分区,于是在mysql5.5后加入COLUMNS关键字允许多个字段来进行分区
mysql> create table t6 (a int,b int,c int)-> partition by range columns(a,b)-> (-> partition p01 values less than (10,10),-> partition p02 values less than (10,20),-> partition p03 values less than (10,30),-> partition p04 values less than (10,maxvalue),-> partition p05 values less than (maxvalue,maxvalue)-> );[root@lnmp test2]# ll t6*
-rw-rw---- 1 mysql mysql 8602 11月 14 20:42 t6.frm
-rw-rw---- 1 mysql mysql 44 11月 14 20:42 t6.par
-rw-rw---- 1 mysql mysql 98304 11月 14 20:42 t6#P#p01.ibd
-rw-rw---- 1 mysql mysql 98304 11月 14 20:42 t6#P#p02.ibd
-rw-rw---- 1 mysql mysql 98304 11月 14 20:42 t6#P#p03.ibd
-rw-rw---- 1 mysql mysql 98304 11月 14 20:42 t6#P#p04.ibd
-rw-rw---- 1 mysql mysql 98304 11月 14 20:42 t6#P#p05.ibd
结束语
针对不同的场景要合理的使用不同的分区,小编的责任就是保证数据的安全,知己知彼方能百战不殆,少年们,一起来加油呀.
运维利器之mysql进行表的分区相关推荐
- 分享:mysql分表,分区的区别和联系
mysql分表,分区的区别和联系 http://my.oschina.net/haorizi/blog/113044
- mysql 分表和分区_Mysql分表和分区的区别
一,什么是mysql分表,分区 什么是分表,从表面意思上看呢,就是把一张表分成N多个小表,具体请看mysql分表的3种方法 什么是分区,分区呢就是把一张表的数据分成N多个区块,这些区块可以在同一个磁盘 ...
- mysql分表和分区的区别
1.分区和分表的测重点不同,分表重点是存取数据时,如何提高mysql并发能力上:而分区呢,如何突破磁盘的读写能力,从而达到提高mysql性能的目的. 2.访问量不大,但是表数据很多的表,我们可以采取分 ...
- MySQL数据库表的分区
分区的过程是将一个表或索引分解为多个更小.更可管理的部分.就访问数据库的应用而言,从逻辑上讲,只有一个表或索引,但是在物理上这个表或索引可能由数十个物理分区组成.每个分区都是独立的对象,可以独自处理, ...
- MySQL建表枚举分区SQL,【mysql备份】02、Xtrabackup备份mysql
一.Xtrabackup概述 1.Xtrabackup简介 Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb ...
- mysql表分区和表空间_mysql分表和分区的区别浅析
一.什么是mysql分表和分区 什么是分表,从表面意思上看呢,就是把一张表分成N多个小表 什么是分区,分区呢就是把一张表的数据分成N多个区块,这些区块可以在同一个磁盘上,也可以在不同的磁盘上 二.my ...
- mysql 主表存hash和子表的名字_【mysql】mysql分表和表分区详解
为什么要分表和分区? 日常开发中我们经常会遇到大表的情况,所谓的大表是指存储了百万级乃至千万级条记录的表.这样的表过于庞大,导致数据库在查询和插入的时候耗时太长,性能低下,如果涉及联合查询的情况,性能 ...
- MySql 分表、分库、分片和分区
MySql 分表.分库.分片和分区 转载:用sharding技术来扩展你的数据库(一)sharding 介绍 转载:MySQL架构方案 - Scale Out & Scale Up. 转载: ...
- mysql 分表规则获取表名_mysql分表和表分区详解
为什么要分表和分区? 日常开发中我们经常会遇到大表的情况,所谓的大表是指存储了百万级乃至千万级条记录的表.这样的表过于庞大,导致数据库在查询和插入的时候耗时太长,性能低下,如果涉及联合查询的情况,性能 ...
最新文章
- python3.6安装scrapy-python3.6 安装scrapy
- 网络编程3之TCP/IP协议
- thymeleaf模板引擎
- 第一百零四期:搞清这些陷阱,NULL和三值逻辑再也不作妖
- python中的reduce函数用法
- 【Kafka】kafka 再均衡监听器 ConsumerRebalanceListener
- solr课程学习系列-solr的概念与结构(1)
- caffe目录结构 及 caffe源码文件说明
- iOS 版本更新迭代
- 蚂蚁区块链第19课 联盟链创建及管理
- 更改Edge浏览器缓存位置
- jenkins调用VS201X
- 去空格函数trim-C语言
- python如何下载pdfminer_在python中使用PDFMiner从PDF文件中提取文本?
- Byte,Kb,Mb,Gb,Tb,Pb,Eb,Zb,Yb,Bb单位换算
- echarts树形图样式_echarts的树形结构图及参数
- AWS新用户入门学习必备知识
- 如何在手机上做读书笔记?手机做读书笔记的软件
- 关于C语言二级机考软件环境的一些问题
- 华为鸿蒙OS摄像头,首款华为鸿蒙OS摄像头开售:分布式看家新神器 无需SD卡