V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cc959798
V2EX  ›  Java

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

  •  
  •   cc959798 · 2018-07-12 20:18:22 +08:00 · 2028 次点击
    这是一个创建于 2352 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    增加硬件配置

    磁盘 HDD 换 SSD, 内存翻倍


    单点 ==> 集群

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


    单库 ==> 多库

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


    反正就是先别急着横向分表, 后续一大堆麻烦事, 不要轻易尝试, 建议先从以上三个方案着手
    micean
        4
    micean  
       2018-07-12 23:15:38 +08:00
    得先从自身找原因吧
    慢是慢在哪
    msg7086
        5
    msg7086  
       2018-07-13 07:21:47 +08:00
    也可以看看有些复杂的查询能不能让程序而不是数据库来解决。
    比如有些表连接就可以拆分成两个查询然后在程序端组装,这样可以减轻不少数据库上的压力。
    limuyan44
        6
    limuyan44  
       2018-07-13 07:43:51 +08:00 via Android
    先查业务,或者看能不能套个缓存,再加配置,加不了配置就加节点。还不行就换个程序员试试,
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1179 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 83ms · UTC 23:19 · PVG 07:19 · LAX 15:19 · JFK 18:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.