数据库简单分表实践

最近项目中用到了分表,记录一下学习思考实践过程。--真情妙悟铸文章!!!

为什么要分表

项目开发中,我们的数据库数据越来越大,随之而来的是单个表中数据太多。以至于查询变慢,而且由于表的锁机制导致应用操作也搜到严重影响,出现了数据库性能瓶颈。

当出现这种情况时,我们可以考虑分表,即将单个数据库表进行拆分,拆分成多个数据表,然后用户访问的时候,根据一定的算法,让用户访问不同的表,这样数据分散到多个数据表中,减少了单个数据表的访问压力。提升了数据库访问性能。

我们可以进行简单的设想:现在有一个表products存储产品信息,现在有100万用户在线访问,就要进行至少100万次请求,现在我们如果将它分成100个表即products0~~products99,那么利用一定的算法我们就分担了单个表的访问压力,每个表只有1万个请求(当然,这是理想情况下!)

分表算法

资格表数据量很大,分为32个表。表名qualification0,qualification1,qualification2,...qualification31。

分表逻辑:拿到用户的证件号id并计算对应的hash值。hash值取绝对值并且与32取模得到一个值n,表名为qualification+n。

分表方式:水平分表、垂直分表

其实上面我们介绍的是水平分表的实施方法,还存在另一种方法叫做:垂直分表。
 举例说明,在一个博客系统中,文章标题,作者,分类,创建时间等,是变化频率慢,查询次数多,而且最好有很好的实时性的数据,我们把它叫做冷数据。
       而博客的浏览量,回复数等,类似的统计信息,或者别的变化频率比较高的数据,我们把它叫做活跃数据。
                 我们可以把冷数据放在一个表,活跃数据放在一个表。

 

posted @ 2021-09-30 11:16  精进的浩然兄  阅读(108)  评论(0编辑  收藏  举报