专栏首页L宝宝聊ITMysql5.7——分表和分区

Mysql5.7——分表和分区

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分表和分区的区别

本文分享自微信公众号 - L宝宝聊IT(gh_b0e552aa80db),作者:李一冬

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-08-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Shell脚本应用(shell脚本基础与shell变量)

    L宝宝聊IT
  • Linux系统安全及应用

    L宝宝聊IT
  • MySQL数据库的安装与基本操作

    L宝宝聊IT
  • 企业面试题|最常问的MySQL面试题集合(三)

    问题27:简述MySQL分表操作和分区操作的工作原理,分别说说分区和分表的使用场景和各自优缺点。

    民工哥
  • 【DB笔试面试647】在Oracle中,使用SPLIT来拆分某个分区的时候,其拆分出来的新分区的统计信息行数是多少?

    在Oracle中,使用SPLIT来拆分某个分区的时候,其拆分出来的新分区的统计信息行数是多少?

    小麦苗DBA宝典
  • 网络技术大集合,全网最牛!99个赞都不为过!!!

    Smoothed round trip time (SRTT): 发送EIGRP数据包给邻居,直到本地路由器接收到邻居对该数据包发送确认包的平均时间(毫秒)

    网络技术联盟站
  • C++并发高级接口:std::async和std::future

    std::async创建一个后台线程执行传递的任务,这个任务只要是callable object均可,然后返回一个std::future。future储存一个多...

    racaljk
  • hadoop配置分区

    互联网金融打杂
  • 数据库专题(二) ——数据库设计

    数据库专题(二)——数据库设计 (原创内容,转载请注明来源,谢谢) 一、数据库设计规范——范式 数据库设计,需要遵循设计原则,最主要的设计原则是范式。范式是...

    用户1327360
  • C++ OpenCV之透视变换

    我们在拍摄图片的时候无法保证图片是正下方垂直拍摄的,所以在获取图像的时候会防止我们提取正确的图像,这里我们就需要用到了透视变换。今天我们在试一下OpenCV中的...

    Vaccae

扫码关注云+社区

领取腾讯云代金券