数据库分表分区

概念


分表:分表就是将一张表分成N张小表, 
分区:就是将一张表的数据分成N个区块,这些区块可以放在一个磁盘上.一张表主要对应三个文件: 
frm:存放表结构 
myd:存放表数据 
myi:存放索引的 
如果一张表数据量太大了的话,那么myd 和 myi 就会变的很大,那么我们在查询数据的时候就会很慢,所以这个时候我们就可对其进行表,在物理上将这一张表对应的三个文件,分割成多个小块,这时在查询某一条数据的时候,不用查找全部的数据,只用找到这条数据在哪儿一块儿,然后找到对应的那一块儿就行了.如果一张表的数据太大,可能一个磁盘放不下,这个时候,我们就可以把数据分配到不同的磁盘里面去了.

如何分表


分表的方式有两种: 
水平分割(横向分割)

就是横着来分区,比如有100w条数据,分成10份,每一份存放在一个区,而每一区中都包含分区之前表中的所有字段.

垂直分割(纵向分割) 
就是竖着来分区了.出现这种情况的原因很多时候是因位数据表在前期设计的时候每有考虑好,导致了这张表中的字段太多了.有些字段可以不经常用也放在一张表中,所有我们可以将这些字段分开来.

数据方面


分表后,数据都存放在分表中,以前的表就是一空壳,村塾数据发生在一个一个分表中, 
分区后,没有分表的概念,分区只是包存放数据的文件分成了许多小块,分区之后的表还是一张表.

意义–提高性能


分表:单表并发能力提高了,因为查询一次的所用时间缩短了,如果高并发的话,总表可以根据不同的查询,将并发压力分到不同的小表里面,同时也提高了磁盘的I/O性能,因为原来一个很大的myd(表数据)文件也分摊到了各个小表的myd中去了.

分区: 


1、改善查询性能:对分区对象的查询可以仅搜索自己关心的分区,提高检索速度。 
2、增强可用性:如果表的某个分区出现故障,表在其他分区的数据仍然可用; 
3、维护方便:如果表的某个分区出现故障,需要修复数据,只修复该分区即可; 
4、均衡I/O:可以把不同的分区映射到磁盘以平衡I/O,改善整个系统性能。

总结:二者的联系


1,都能提高mysql的性高,在高并发状态下都有一个良好的表面。

2,分表和分区不矛盾,可以相互配合的,对于那些大访问量,并且表数据比较多的表,我们可以采取分表和分区结合的方式(如果merge这种分表方式,不能和分区配合的话,可以用其他的分表试),访问量不大,但是表数据很多的表,我们可以采取分区的方式等。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值