• 数据库性能瓶颈解决方案


    方案一、数据库读写分离。多个读库,一个写库。

    方案二、数据库缓存加高可用,没有高可用一旦缓存清除会导致数据库瞬间压力过大。

    方案三、数据库水平切分。通过多个数据库分库字段进行平均存储。

    数据库水平切分的实现原理—分库、分表、读写分离、负载均衡、主从复制

    水平切分数据库的目的 其主要目的是为突破单节点数据库服务器的 I/O 能力限制,解决数据库扩展性问题

     通过一系列的切分规则将数据水平分布到不同的DB或table中,在通过相应的DB路由或者table路由规则找到需要查询的具体的DB或者table,以进行Query操作

                             水平切分数据库:可以单台机器的负载,可以最大限度降低宕机引起的数据损失

                             负载均衡策略:可以降低单台机器的访问负载,降低宕机的可能性。

                             集群方案:解决因为宕机带来的单点数据库不能访问的问题

     水平切分数据库的三种形式:

               1.号段分区 

        user_id为1~1000的对应DB1,1001~2000的对应DB2,以此类推;

         优点:可部分迁移

         缺点:数据分布不均

               2 hash取模分区

                                对user_id进行hash(或者如果user_id是数值型的话直接使用user_id 的值也可),然后用一个特定的数字,

                        比如应用中需要将一个数据库切分成4个数据库的话,我们就用4这个数字对user_id的hash值进行取模运算,

                        也就是user_id%4,这样的话每次运算就有四种可能:结果为1的时候对应DB1;结果为2的时候对应DB2;

                        结果为3的时候对应DB3;结果为0的时候对应DB4。这样一来就非常均匀的将数据分配到4个DB中。

                        优点:数据分布均匀

                        缺点:数据迁移的时候麻烦,不能按照机器性能分摊数据

              3在认证库中保存数据库的配置

                             重新建立一个DB,这个DB单独保存着user_id到 DB的映射关系,每次访问数据库都先要访问一下这个数据库,已得到具体的DB信息,

                             然后才能进行具体的查询操作。

                             优点:灵活性强,一对一关系

                      缺点:每次查询之前都要多一次查询,性能大打折扣

  • 相关阅读:
    心得体悟帖---200130(专业长才(敲门砖))(希望)
    心得体悟帖---200130(一举多的)(少了发自内心的从容)
    范仁义css3课程---19、流动布局
    范仁义css3课程---18、overflow
    日常英语---200130(inspire)
    日常英语---200130(Basketball fans around the world are mourning the death of American superstar Kobe Bryant.)
    视频中的ts文件是什么
    如何美化windows桌面
    心得体悟帖---200127(囚笼-它会推着我的,不必多想)(过好当下,享受当下)
    心得体悟帖---有哪些越早知道越好的人生经验?(转自知乎)
  • 原文地址:https://www.cnblogs.com/guanghuiqq/p/11241372.html
Copyright © 2020-2023  润新知