V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
wysnylc
V2EX  ›  问与答

一个日经问题总结- Java 向

  •  
  •   wysnylc · 2018-11-01 15:19:12 +08:00 · 1396 次点击
    这是一个创建于 2215 天前的主题,其中的信息可能已经有所发展或是发生改变。

    先贴地址:Java 日经问题总结
    欢迎补充,蟹蟹

    第 1 条附言  ·  2018-11-02 14:24:50 +08:00

    2018 年 11 月 2 日 14:24:07 已收录 8 个日经问题
    14 条回复    2018-11-01 16:53:09 +08:00
    wysnylc
        1
    wysnylc  
    OP
       2018-11-01 15:38:15 +08:00
    目前收录:
    Mybatis 二级缓存->业务缓存的解决方案
    为什么不推荐使用 join
    glacer
        2
    glacer  
       2018-11-01 15:47:11 +08:00
    又是一个不推荐使用 join 的
    除了在分布式分库分表的情况下,我想不出还有别的会使得 join 性能地下的场景
    真以为自己在程序中 merge 数据能快过 db ?
    wysnylc
        3
    wysnylc  
    OP
       2018-11-01 15:54:41 +08:00
    @glacer #2 来来来,您提供一个跨库事务的解决方案,如何保证同时提交?回滚怎么处理?回滚异常怎么处理?你能接受数据库不一致的错误数据?
    glacer
        4
    glacer  
       2018-11-01 16:02:58 +08:00
    @wysnylc 没看到我说除了分库分表的情况?
    glacer
        5
    glacer  
       2018-11-01 16:06:07 +08:00
    @wysnylc 就算是分库分表的情况也不需要完全禁掉 join 的使用,一个良好的中间件是可以根据 sharding key 分析 SQL 判断数据的分布,如果查询的表中的数据都在一个分库中,那么这条 join 的 SQL 是完全可以直接下推到分库执行的。
    wysnylc
        6
    wysnylc  
    OP
       2018-11-01 16:16:42 +08:00
    @glacer #4 这里讨论的情况就是分布式,跨库的场景 join 带来的问题所以你说的跟我说的有什么关系?
    其次你说的良好的中间件能够提供下名称吗?据我所知目前能够实现强事务的中间件根本没有,都只有弱事务比如 mycat

    支持多租户方案。
    支持分布式事务(弱 xa )。
    支持 XA 分布式事务( 1.6.5 )。

    注意到第二条了吗?
    hexinxucxy
        7
    hexinxucxy  
       2018-11-01 16:27:40 +08:00
    @wysnylc DRDS 可以完美支持 join
    wysnylc
        8
    wysnylc  
    OP
       2018-11-01 16:33:06 +08:00
    @hexinxucxy #7 DRDS 是否支持分布式 JOIN ? 它是如何支持复杂 SQL?
    支持大部分的 JOIN 的语义,但对于比较复杂的情况,DRDS 做了一些限制。例如大表之间的 JOIN,由于执行代价过高,速度过慢容易导致性能或者系统不可用等情况,因此请尽量避免。

    以上为官方文档回答,纯粹用性能堆叠出的"join",我认为弊大于利
    wysnylc
        9
    wysnylc  
    OP
       2018-11-01 16:33:47 +08:00
    wysnylc
        10
    wysnylc  
    OP
       2018-11-01 16:38:58 +08:00
    @glacer #5 贴一个知乎对 join 的相关讨论 https://www.zhihu.com/question/38038257
    单机情况随便你玩,分布式跨库使用 join 带来的问题远远大于解决的问题,与其找实现 join 的方案不如考虑业务上拆分
    个人认为最终解决跨库事务的方案是量子纠缠
    pexcn
        11
    pexcn  
       2018-11-01 16:43:29 +08:00
    csdn 差评
    glacer
        12
    glacer  
       2018-11-01 16:45:31 +08:00
    @wysnylc 我并没有在你贴出的文章中看到明显表明有分布式、分库分表的字样,那么这样的文章就很有可能会误导别人。
    至于你说支持强一致事务的中间件,那就是楼上说的 DRDS,链接: https://helpcdn.aliyun.com/document_detail/71230.html
    而且我们之前讨论的是跨库 Join 的问题,为什么和分布式事务扯上关系呢?真是奇怪。
    wysnylc
        13
    wysnylc  
    OP
       2018-11-01 16:52:50 +08:00
    @glacer #12 你用 join 吧,我并不会反对,反正最后改的也不会是我. 你认为你是对的那你就是对的
    wysnylc
        14
    wysnylc  
    OP
       2018-11-01 16:53:09 +08:00
    @pexcn #11 收到,谢谢惠顾
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1373 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 17:22 · PVG 01:22 · LAX 09:22 · JFK 12:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.