cc959798
V2EX  ›  Java

请问单个数据库不能支持服务后怎样解决呢?

  •  
  •   cc959798 · Jul 12, 2018 · 2500 views
    This topic created in 2879 days ago, the information mentioned may be changed or developed.

    常见的是分库分表 分表有什么常见的解决方案? 分库的话怎样解决查询问题?

    6 replies    2018-07-13 07:43:51 +08:00
    tamer
        1
    tamer  
       Jul 12, 2018 via Android
    亿级流量网站架构核心技术,张开涛
    yanaraika
        2
    yanaraika  
       Jul 12, 2018
    8102 年了别手动 sharding 了,尝试下 TiDB 等 NewSQL 解决方案
    my3157
        3
    my3157  
       Jul 12, 2018   ❤️ 2
    我的理解是关系型数据库, 可以试试以下两种方案

    增加硬件配置

    磁盘 HDD 换 SSD, 内存翻倍


    单点 ==> 集群

    以 mysql 为例, 有很多集群解决方案, 各种云厂商也有云服务, 推荐两种, 一种是 mysql 原生的集群, 主从集群, 同步或异步复制, 可以读写分离提高性能, 不过 client 得做相应的处理, 大多数 client 应该都是支持的, 或者采用 percona cluster, 多主, 也非常成熟, 客户端不用做任何处理


    单库 ==> 多库

    先把表分下类, 放到几个单独的数据库, 分类的时候注意, 关联性比较强的, 比如需要做关联查询的可以放一个库,


    反正就是先别急着横向分表, 后续一大堆麻烦事, 不要轻易尝试, 建议先从以上三个方案着手
    micean
        4
    micean  
       Jul 12, 2018
    得先从自身找原因吧
    慢是慢在哪
    msg7086
        5
    msg7086  
       Jul 13, 2018
    也可以看看有些复杂的查询能不能让程序而不是数据库来解决。
    比如有些表连接就可以拆分成两个查询然后在程序端组装,这样可以减轻不少数据库上的压力。
    limuyan44
        6
    limuyan44  
       Jul 13, 2018 via Android
    先查业务,或者看能不能套个缓存,再加配置,加不了配置就加节点。还不行就换个程序员试试,
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2777 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 53ms · UTC 13:31 · PVG 21:31 · LAX 06:31 · JFK 09:31
    ♥ Do have faith in what you're doing.