您的位置:首页技术文章
文章详情页

mysql - 分库分表、分区、读写分离 这些都是用在什么场景下 ,会带来哪些效率或者其他方面的好处

【字号: 日期:2022-06-13 15:15:10浏览:25作者:猪猪

问题描述

问题解答

回答1:用处 / 功能

读写分离:提高数据库的读性能。分库、垂直分表:分散系统负载,让原来一台机器做的事,变成几台机器来做。水平分表、分区:缩小索引大小,使查找更快。

使用场景

读写分离:打开一个帖子内容页,需要select帖子表,和帖子评论表,每个耗时10ms的话。每秒1000次查询就是这个数据库的极限了。也就是说,这个论坛只能承载每秒500次访问。那么我们就可以对这个数据库做读写分离,来成倍提高数据库的读性能。

水平分表:交易历史,这种表。因为很少查询1年前的信息。所以,我们可以按年份来进行水平分表。将今年的表优先对待。就减少了要查询的表的大小。

分库:如果我们的系统非常大了,功能非常多,就会有很多类型的数据库表,例如营销活动的表,和用户账号的表是没有关联的,那么我们就可以将他们分到两个数据库中,然后放到不同的独立的数据库服务器,就能使数据库吞吐量成倍增加。

垂直分表:典型的应用场景是在文章列表这样的场景,一般来讲,我们的文章表会有title、userId、Content等字段,其中的Content字段一般是Text或者LongText类型,而其它的字段都是固定长度的数据类型。我们知道一个数据库优化规则是:

如果一个表的所有字段都是固定长度类型的,那么它就是定长表,定长表比动态长度表查询性能要高

那么,我们就可以使用垂直分表来将文章表分成文章表和文章内容表。于是文章列表页面所需的查询,就只需要查询一张定长表了。

未完待续

回答2:

数据库的表的记录在超过一定数量后性能下降严重,因此要维持单表数据量不过高,分表。

数据库程序是通过大量IO存取数据,为了使用多台廉价机器同时服务以提高性能而不用购买单台超级机器,分库。

同样是因为IO,一般读比写数量多,单独提供读减轻写的压力,还提供了一定的冗余抗灾能力。