内容简介:当MySQL单表的数据量过大时,数据库的访问速度会下降,“数据量大”问题的常见解决方案是“水平切分”。画外音:我C,没听过分区表,有朋友惊叹。
潜在场景如何?
当 MySQL 单表的数据量过大时,数据库的访问速度会下降,“数据量大”问题的常见解决方案是“水平切分”。
MySQL常见的水平切分方案有哪些?
- 分库分表;
- 分区表。
画外音:我C,没听过分区表,有朋友惊叹。
什么是分库分表?
把一个很大的库(表)的数据分到几个库(表)中,每个库(表)的结构都相同,但他们可以分布在不同的MySQL实例,甚至不同的物理机器上,以达到降低单库(表)数据量,提高读写性能的目的。
分库分表有什么缺点?
分库分表往往是业务层实施的,分库分表后,往往需要升级系统:
- 修改某些 SQL 代码;
- 丧失某些SQL功能。
什么是分区表?
所有数据,逻辑上还在一个表中,但物理上,可以根据一定的规则放在不同的文件中。这是MySQL5.1之后支持的功能,业务代码无需改动。
分区表看上去很帅气,为什么大部分互联网公司不使用,而更多的选择分库分表来进行水平切分呢?
分区表的一些缺点,是大数据量,高并发量的业务难以接受的:
- 如果SQL不走分区键,很容易出现全表锁;
- 在分区表实施关联查询,就是一个灾难;
- 分库分表,自己掌控业务场景与访问模式,可控;分区表,工程师写了一个SQL,自己无法确定MySQL是怎么玩的,不可控;
画外音:类似于,不要把业务逻辑实现在存储过程,用户自定义函数,触发器里,而要实现在业务代码里一样。
- DBA给OP埋坑,容易大打出手,造成同事矛盾;
当然,在数据量和并发量不太大,或者按照时间来存储冷热数据或归档数据的一些特定场景下,分区表还是有上场机会的。
画外音:例如,按照时间分区,存储日志。
希望这一分钟有收获。
【本文为51CTO专栏作者“58沈剑”原创稿件,转载请联系原作者】
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Web Data Mining
Bing Liu / Springer / 2011-6-26 / CAD 61.50
Web mining aims to discover useful information and knowledge from Web hyperlinks, page contents, and usage data. Although Web mining uses many conventional data mining techniques, it is not purely an ......一起来看看 《Web Data Mining》 这本书的介绍吧!