一个日经问题总结- Java 向

2018-11-01 15:19:12 +08:00
 wysnylc

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

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

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

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

以上为官方文档回答,纯粹用性能堆叠出的"join",我认为弊大于利
wysnylc
2018-11-01 16:33:47 +08:00
wysnylc
2018-11-01 16:38:58 +08:00
@glacer #5 贴一个知乎对 join 的相关讨论 https://www.zhihu.com/question/38038257
单机情况随便你玩,分布式跨库使用 join 带来的问题远远大于解决的问题,与其找实现 join 的方案不如考虑业务上拆分
个人认为最终解决跨库事务的方案是量子纠缠
pexcn
2018-11-01 16:43:29 +08:00
csdn 差评
glacer
2018-11-01 16:45:31 +08:00
@wysnylc 我并没有在你贴出的文章中看到明显表明有分布式、分库分表的字样,那么这样的文章就很有可能会误导别人。
至于你说支持强一致事务的中间件,那就是楼上说的 DRDS,链接: https://helpcdn.aliyun.com/document_detail/71230.html
而且我们之前讨论的是跨库 Join 的问题,为什么和分布式事务扯上关系呢?真是奇怪。
wysnylc
2018-11-01 16:52:50 +08:00
@glacer #12 你用 join 吧,我并不会反对,反正最后改的也不会是我. 你认为你是对的那你就是对的
wysnylc
2018-11-01 16:53:09 +08:00
@pexcn #11 收到,谢谢惠顾

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/503424

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX