一,什么是mysql分表
什么是分表,从表面意思上看呢,就是把一张表分成N多个小表,是多个的物理表
实现方法
1,手动物理分表,
优点:业务简单的情况下实现比较简单
缺点: 比较low你得用代码控制去哪张表去增删改查,排序分页问题较多
(当然,你写出来像sharding-sphere这样框代码就不low了,哈哈)
2,利用merge存储引擎来实现分表
Mysql MERGE引擎简介: https://blog.csdn.net/qmhball/article/details/7499432 实现分表:https://www.cnblogs.com/gxz-sw/p/6707504.html
优点:利用mysql自带功能逻辑,实现简单,对实现日志表,报表无修改数据分表较好
缺点:库表只能用merge存储,数据插入只能插到最后一张表
3,利用mycat,shardingsphere 等中间件实现分表
mycat分表介绍 https://blog.csdn.net/zhaofuqiangmycomm/article/details/110241718
优点:中间件对代码是透明的,数据操作代码基本无需任何修改,实现功能强大,能解较多务场景需求
缺点:需要研究这些中间件,前期运维成本稍高,哈哈,其实这也算不上什么缺点
分表的好处:单表的并发能力提高了,磁盘I/O性能也提高了。并发能力为什么提高了呢,
因为查寻一次所花的时间变短了,如果出现高并发的话,总表可以根据不同 的查询,
将并发压力分到不同的小表里面。磁盘I/O性能怎么搞高了呢,本来一个非常大的.MYD文件现在也分摊到各个小表的.MYD中去了。
二 ,什么是mysql分区
什么是分区,分区呢就是把一张表的数据分成N多个区块,这些区块可以在同一个磁盘上,也可以在不同的磁盘上,其实还是一张物理表
分区的实现方法目前我查到的资料只有mysql自己实现的分区表。mycat分片(分表,分库)的概念其实都是物理分表,是多个物理报表
mysql分区的规则有 RANGE分区,LIST分区,HASH分区,KEY分区,子分区
按日期分表范围 https://blog.csdn.net/zhaofuqiangmycomm/article/details/111580829
分区表的好处: 对程序来说是透明的,分区后无需对代码做调整,能提高读写能力,
刚看到个帖子说分区不能提高效率的就是在放屁,mysql搞出来的东西没任何作用?唯一的作用让你在那放屁喷他?
三,总结:
1,分区和分表的测重点不同,分表重点是存取数据时,如何提高mysql并发能力上;而分区呢,如何突破磁盘的读写能力,从而达到提高mysql性能的目的。
2,都能提高mysql的性高,在高并发状态下都有一个良好的表现。
3,分表和分区不矛盾,可以相互配合的,对于那些大访问量,并且表数据比较多的表,我们可以采取分表和分区结合的方式(如果merge这种分表方式,不能和分区配合的话,可以用其他的分表试),访问量不大,但是表数据很多的表,我们可以采取分区的方式等。
四,扩展:什么是mysql分片
分片就是分库,分表统称,分库也是数据分片,分表也是数据分片
参考:https://www.cnblogs.com/langtianya/p/4997768.html