00:00
各位,刚才呢,我们介绍了什么是筛顶皮,让各位对它有一个基本的认识,然后下面呢,给大家介绍我们里边的第二概念,也就是什么是分库分表,因为咱们的课程主要讲解用筛丁皮实现对关心数据库做分库分享操作,那下面给大家介绍一下什么是分库分表。我在里边写一下。分库分表,那首先给大家先举个例子,说明下为什么要分库分表,包括分库分表用在什么样的场景下,给大家来举这么一个例子,那我们来看一下啊。比如现在呢,我们打开一个网站,这个网站呢,因为各位很熟悉,就打开这个京东点。com,咱们把它打开,京东网是一个电商平台,在里边,咱在这位置能买很多的产品,比如我现在随便我点一个手机,然后点这个全部手机,大家看到在这个界面中是不是列出了很多的手机,而大家注意这些手机中有手机这个商品,包括手机是不是要属于某一个这个店铺,比如是京东自营的,或者说某个商家运营的。
01:21
那这过程中呢,在咱做操作中,肯定要在我们的关员数据库中存很多的数据,比如里边你有一个商品表,有一个店铺表,当然各位注意,随着我们现在啊,这里边因为数据库中的数据量肯定是不一定的,或者说不是可控的,因为我们这个电商平台的业务量肯定会不断增加,而随之带来咱们的数据库中数据是不是也会不断增多,而你数据库中的数据增多的话,表中数据量也会越来越大,那相应的与数据库在做这个增删改查操作的时候,它的性能是会产生很大的问题,那这个时候我们就需要对这问题做一个相应的处理。
02:04
那我下面给大家在图上咱来大概画一下,比如现在我们有一个电商平台。就是假如说就是我们那个京东,而电商平台中的,随着他这个时间和业务的发展,那我们向表里边存的数据是不是会越来越多,假如现在我们这里边有我们这个最基本的商品,比如画个表,假如这个表就是我们这个商品表。比如下面还有一个表是咱们那个店铺表,因为一个商品要属于某一个店铺,比如说你是京东自营的,还是什么商家的,或者我们叫商家表,这里边当然可能还有加的表啊,所以会涉及到很多的表,而现在随着咱们的业务量增加,那我现在在里边我的平台中会有很多的商家入驻,而每个商加都要在里边卖商品,那他向商品表中会加入大量的商品数据,那随着业务量增加,这个表中数据会越来越多,那随着他一多的话,就算咱们在表里边加了,从表的处理或者说索引的处理,它也并不能跟不上解决你这种性能的降低,因为你数据量一的话,大家做这种增删杆操作,对它的这种消耗,对它的性能是会产生很大的影响,所以我们现在就需要对它做一些相应的。
03:39
处理来解决这个问题,要不然你的平台会造成很大的这种性能的瓶颈,这是一个背景,那这问题我们该怎么解决呢?但是解决方案有很多种,各位可以想一下,比如现在我的业务量增加,表中数据在不断增加,比如我这个商表数据比如达到了千万,甚至超过千万的量级,那肯定会产生很多的性能瓶颈,但是当我们遇到这个性能瓶颈,这些问题该怎么解决呢?
04:09
那下面给大家讲一下它的解决方案,首先呢,我们先看里边的。方案一,但是这种方案呢,肯定不是最优的方案,当然也是一种解决的方式,那怎么做?其实第一种方案很简单。咱可以从这个硬件上来解决,什么叫硬件上,比如现在我这个数据库,我把这个数据库那个服务器的性能给他提高,比如加内存,加存储量,加硬盘,让它的性能有个很大的提高,但你注意啊,这么做的话,它只从表面上解决了,因为你注意,如果说你现在比如说你加了服务器,加了你的CPU,加了硬盘,加了内存,第一个成本很高,第二个并从根本上解决,因为数据量在不断增加,你不可能每天都去加服务器,加你的内存,所以这只是一种治标不治本的方案。
05:06
但是它也算一种方案,就是从面上来解决,那这种方案并不能根本解决,那咱该怎么做呢?所以后面呢,我们就出现了第二种方案。那这个方案是什么呢?比如我们要讲的,咱就可以对这个数据库和表做一个叫分库和分表的这么一个处理,这是第二种方案,那分库分表到底该怎么做,给各位来简单画一下啊,比如我现在大家看啊,我这个比如是一个数据库,就是我电商平台这个DB的数据库,而在数据库中呢,有商品表,有这个商家表,那怎么做,首先第一个。咱的做法就是给大家画一下,比如现在我这是一个电商平台,那个DB数据库,首先第一个方案,咱可以把数据库做个拆分,怎么拆分,比如现在我为商品表建个数据库,为商家表建个数据库,这是第一步。
06:05
我写一下啊,比如现在我们先把这个数据库呢,拆分成两个数据库,一个是你的商品的数据库,一个是你的商家数据库。我写一下这是一个商品的那个DB。然后第二个,比如是你的这个商家的DB,这是第一部分,把数据库先做个拆分。我写到这个位置。数据库拆分。然后数据库拆完之后怎么做呢?因为在我们商品DB中,咱是不是有商品表啊,那这表中咱不要把所有数据都存到一张表中哇,这商品表做拆分,假如我现在把身份表变成这么两个表,第一个是商品表一,第二个是这个商品表二,比如我现在让每张表中的只只存这么1万条数据,或者只存这么10万条数据,让他有一个数量,一个限制,把表做拆分,同样商家表中再做拆分,因为商家也在不断增加,那他让这个数据也是存到不同表中,假如有一个商家表一。
07:21
有一个叫商家表二,咱让每张表中有一个固定的一个数据量,然后当有新的增加,再给他加多张表,这是一种简单的分库,那要处理,而这么做大家发现它会带来什么好处呢?大家可以想一下,因为现在如果按照原始方式,咱们一个库中一张表中会有上千万甚至更多的数据,那你要处理一张表才能查那数据,但是现在我们无形中就把数据是不是做分单呀,让每张表数据就急剧减少,让你数据库做了拆分,每个数据库中只放你单独表示数据,这么做可以极大的提高我们性能,让你就是。
08:03
多个数据库里边分担你库的压力,让多张表中分担你一张大表中数据,也就是说把数据库拆分成若干的数据库,把你的数据大表拆分成若干的表,共同组成你的数据。比如按照我这张图上,我这数据库拆分成了商品DB、商家DB,然后商品DB中又有商品表,商品表又拆分成了多个小表,商家表也拆分成了多个小表,让你的单一库和单一表中数据变小,这样的话能够极大提高数据库的性能。所以这是关于我们说的分库分表的一个基本的一个场景,大家把这过程给他知道。然后我在笔记中对于这个做一个文字上的描述,那我写一下啊,它的描述就是因为大家知道我们数据库中那个数据量。肯定是不可控的,就是它是不断变化的,当我们随着这个时间和你业务上的这些发展,因为你时间要增加,业务要不断改善,那这个时候会造成我们这个表里面的数据会急剧增加。
09:20
写一下,会造成表里边的数据会越来越多。那这个时候如果说我们再去对这个数据库表进行这么一个就是增删改查操作,或者说cardd操作的时候,它就会造成。很多的性能问题。造成这个就是你的这种性能上的一些问题,那这问题怎么做呢?刚才我们提供了两种解决方案。首先咱说的方案一。
10:01
这个方案呢,其实只是治标不治本的方案,就是从硬件上解决,比如说我们现在加服务器给他提高CPU。加内存加硬盘,但是它只是治标不认本,并不从根本上解决,所以咱有下一个方案,这个方案是什么呢?就刚才我们提到这个分库分表的这么一个解决方案。分库分表。我写这个位置,然后分户分表,各位要明确啊,它的目的是什么呢?就是为了解决什么,由于你这个数据量过大。而造成的数据库性能降低的这个问题。这是它解决的根本问题,而它的具体做法怎么样呢?就是将原有的数据库拆分成若干数据库组成,将你的大表拆分成若干的小表组成,使你的单一数据库和单一表的数据量变小,从而提高数据库的性能,这是它一个根本目的,也就我这里边给大家画的这么张图,对应的数据库做拆分,对应的表并拆分,然后让你的单一库和单一表中的数据量减少,从而提高你的数据库的这么一个性能。所以这个就是分库分表,咱对它的背景给各位做一个介绍,所以要求通过我的描述,各位知道咱们为什么要分过分表。
11:34
分库分表能解出问题,它能带来什么好处,而分库分表之后,这里边我们该怎么去做,这是关于什么是分库分表这个概念上一个介绍,然后介绍之后呢,下面给大家就来继续讲解这个分库分表到底该用什么方式进行分库分表。
我来说两句