前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Mysql5.7——分表和分区

Mysql5.7——分表和分区

作者头像
L宝宝聊IT
发布2018-09-29 10:58:25
3.4K0
发布2018-09-29 10:58:25
举报
文章被收录于专栏:L宝宝聊ITL宝宝聊ITL宝宝聊IT

mysq中有一种机制是表锁定和行锁定,是为了保证数据的完整性。表锁定表示你们都不能对这张表进行操作,必须等我对表操作完才行。行锁定也一样,别的sql必须等我对这条数据操作完了,才能对这条数据进行操作。当出现这种情况时,我们可以考虑分表或分区。

一、分表

分表是将一个大表按照一定的规则分解成多张具有独立存储空间的实体表,每个表都对应三个文件,MYD数据文件,.MYI索引文件,.frm表结构文件。这些表可以分布在同一块磁盘上,也可以在不同的机器上。app读写的时候根据事先定义好的规则得到对应的表名,然后去操作它。分表的目的就是减小数据库的负担,缩短查询时间。

1、分表的类型

(1)垂直切分

是指数据表列的拆分,把一张列比较多的表拆分为多张表。

(2)水平切分

是指数据表行的拆分,把一张的表的数据拆成多张表来存放。

2、利用merge存储引擎来实现分表

(1)创建一个完整表,存储着所有的成员信息(表名为member)

(2)把member分成两个表tb_member1,tb_member2

(3)查看tb_member表的结构

注:查看子表和主表的字段定义要一致

(4)把数据分到两个表中:

注:总表只是一个外壳,存取数据发生在一个一个的子表里面。

每个子表都有自己独立的相关表文件,而主表只是一个壳,没有完整的相关表文件

二、分区

分区和分表相似,都是按照规则分解表。不同在于分表将大表分解为若干个独立的实体表,而分区是将数据分段划分在多个位置存放,分区后,表还是一张表,但数据散列到多个位置了。app读写的时候操作的还是表名字,db自动去组织分区的数据。

1、分区的两种形式

(1)水平分区

对表的行进行分区,所有在表中定义的列在每个数据集中都能找到,所以表的特性依然得以保持。

(2)垂直分区

是通过对表的垂直划分来减少目标表的宽度,使某些特定的列被划分到特定的分区,每个分区都包含了其中的列所对应的行。

2、分区的技术支持

3、测试

(1)创建range分区表

(2)插入一些数据

(3)到存放数据库文件的地方看一下

4、分区的合并和删除

5、分区表和未分区表的性能测试

结果表明分区表比未分区表的执行时间少的多。

通过explain语句分析执行情况

创建索引后测试

创建索引后分区表和未分区表相差不大

6、将不同分区放到不同存储位置

(1)建表时,提前创建好存储目录,并授权给mysql;

(2)创建表格

(3)查看分区情况

查看默认数据存储位置的文件:

Mysql分区类型:

RANGE分区、LIST分区、HASH分区、key分区、columns分区

三、Mysql分表和分区的区别

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-08-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 L宝宝聊IT 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据保险箱
数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档