V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  JasonLaw  ›  全部回复第 33 页 / 共 37 页
回复总数  728
1 ... 25  26  27  28  29  30  31  32  33  34 ... 37  
@ekoeko 其实更严格来说,client 2 是不知道 client 1 和它并发的,它只是知道返回了多个值,出现了并发,但是它不知道具体是和哪个 client 。或许更加合理的方式是说数据库知道哪个版本跟哪个版本并发了。你觉得呢?
2020-08-05 22:43:39 +08:00
回复了 autoname 创建的主题 MySQL 环形 sql 主从同步, 3 台机子挂掉其中一台该怎么办
在“Designing Data-Intensive Applications - CHAPTER 5 Replication - Multi-Leader Replication - Multi-Leader Replication Topologies”中,介绍了三种不同 replication topologies:1. circular topology 2. star topology 3. all-to-all topology 。

它说“A problem with circular and star topologies is that if just one node fails, it can interrupt the flow of replication messages between other nodes, causing them to be unable to communicate until the node is fixed. The topology could be reconfigured to work around the failed node, but in most deployments such reconfiguration would have to be done manually. The fault tolerance of a more densely connected topology (such as all-to-all) is better because it allows messages to travel along different paths, avoiding a single point of failure.”,也就是说如果你继续采用 circular topology 的话,如果其中一个节点失败了,你可以重新配置 topology,你也可以选择容错性更好的 all-to-all topology 。

当然不同的 topologies 都有各自的优缺点,具体的话,你可以看一下“Designing Data-Intensive Applications”这本书。

顺便说一下,你这个根本不是主从同步,而是 Multi-Leader Replication 。
2020-08-05 11:20:24 +08:00
回复了 sdfqwe 创建的主题 MySQL mysql 优化问题
@xsm1890 #9 说实话,这条语句真的一点意义都没有。
@sdfqwe 是你自己可以制造出来的吗?
2020-08-05 11:12:30 +08:00
回复了 sdfqwe 创建的主题 MySQL mysql 优化问题
@sdfqwe 你的表为什么是这样子的?

1. nodeId 已经是 PRIMARY KEY 了,为什么还要定义一个多余的索引 nodeid 呢?
2. 为什么不直接叫 id 和 parentId 呢? nodeId 不会有什么业务含义吧?
3. 为什么城市表会有层级关系的呢?
2020-08-05 10:14:30 +08:00
回复了 sdfqwe 创建的主题 MySQL mysql 优化问题
@sdfqwe #4 那就可以完全解释了,PRIMARY 和 nodeid 两个 index 相关的列都是 nodeid 。
2020-08-04 22:30:46 +08:00
回复了 sdfqwe 创建的主题 MySQL mysql 优化问题
但是这无法解释第三和第四条语句会使用 PRIMARY 那个 index,难道 PRIMARY 和 nodeid 两个 index 相关的列都是 nodeid ?

提供多一点信息吧,表结构以及数据。不然无法知道什么原因。
2020-08-04 21:25:52 +08:00
回复了 sdfqwe 创建的主题 MySQL mysql 优化问题
如果是的话,那就可以解释了。

查询优化器可能将 select b.* from b_city b where b.nodeid in (select a.nodeid from b_city a)转化为 select b.* from b_city b where
exists(select 1 from b_city a where a.nodeid = b.nodeid),然后又转化为 select b.* from b_city b where
exists(select 1 from b_city a where a.id = b.id),它的执行可以做到跟展示的执行计划匹配,可以逻辑地理解为“检查 b_city 的每一行,对于每一行,查询是否存在 id 为这行 id 的 b_city”。

至于为什么不限执行 select a.nodeid from b_city a,不管是怎样,你都要检查 b_city b 的每一行,相比于检查 b_city b 的每一行的 nodeid 是否存在于 select a.nodeid from b_city a 所代表的集合中,为什么不直接检查 b_city a 中是否存在 nodeid 为 b_city b 行 nodeid 的行呢?如果 nodeid 索引是唯一索引并且 nodeid 是 not null 的话,它甚至可以做到“检查 b_city b 的每一行,检查 b_city a 中是否存在 id 为 b_city b 行 id 的行”。
2020-08-04 20:21:43 +08:00
回复了 sdfqwe 创建的主题 MySQL mysql 优化问题
nodeid 索引是唯一索引并且 nodeid 是 not null 。对吗?
2020-08-04 10:05:08 +08:00
回复了 zzhpeng 创建的主题 MySQL 大佬们求救,慢 SQL 问题
@kimqcn #55 “是不是 IS NULL=全表扫描”,可以看一下这个相关讨论 https://www.v2ex.com/t/694500
2020-08-04 09:21:57 +08:00
回复了 zzhpeng 创建的主题 MySQL 大佬们求救,慢 SQL 问题
最近在看《数据密集型应用系统设计》,如果对你现在的情况合理的话,或许你应该分开 OLTP 和 OLAP 。
2020-08-03 17:28:21 +08:00
回复了 zzhpeng 创建的主题 MySQL 大佬们求救,慢 SQL 问题
@zzhpeng #26

我主要是表达“条件为 is_virtual = 0,并且大多数的 is_virtual 都是 0”的时候,idx_storeid_isvirtual 其实是没有什么用处的。

你那条语句是直接在同一个环境运行的吗?如果是的话,单独运行肯定跟同其他语句并发运行是不一样的,我不清楚具体的情况,无法给你答案。
2020-08-03 17:16:48 +08:00
回复了 zzhpeng 创建的主题 MySQL 大佬们求救,慢 SQL 问题
@GTim #18 你理解错了,具体情况具体分析吧。

1. 你说“如果没有聚合函数,select 是在 order by -> limit 后面执行的”,此问题的例子就能够说明这种说法是错的。
2. 你说“但是有了聚合函数,select 会优于 order by -> limit 执行”,假设 SQL 是 select sum(c1) from t group by c2 order by c2,如果先执行 select sum(c1),之后的 order by c2 怎么能够成功呢?
2020-08-03 17:06:33 +08:00
回复了 zzhpeng 创建的主题 MySQL 大佬们求救,慢 SQL 问题
@zzhpeng #21 所以你的索引基本没什么用,甚至会降低速度,因为对于每个符合条件的 secondary index 子节点,都会去 clustered index 搜索。
2020-08-03 16:49:02 +08:00
回复了 zzhpeng 创建的主题 MySQL 大佬们求救,慢 SQL 问题
如果有人好奇“为什么加了 LIMIT 1,COUNT(*)还可以正常工作的话”,可以看一下 https://stackoverflow.com/questions/17020842/mysql-count-with-limit
2020-08-03 16:40:47 +08:00
回复了 zzhpeng 创建的主题 MySQL 大佬们求救,慢 SQL 问题
sima_order.is_virtual 是不是只有 0 和 1 两种值?每个值对应的行数是多少?
2020-08-03 16:33:59 +08:00
回复了 zzhpeng 创建的主题 MySQL 大佬们求救,慢 SQL 问题
我觉得你的 SQL 语句不太合理。

1. 为什么 LIMIT 1 和 COUNT(*)一起使用?
2. 为什么使用了 COUNT(*),还要进行无谓的 ORDER BY ?
2020-08-03 11:01:48 +08:00
回复了 huweic 创建的主题 全球工单系统 [吐槽] 简书为什么老是维护啊,动辄一星期
想了解一下大家都是使用什么?不用简书的话
2020-08-01 22:58:22 +08:00
回复了 JasonLaw 创建的主题 程序员 数据密集型应用系统设计 - 关于 Apache Avro 的疑问
@gfreezy 我好像明白了。sign 代表是不是还要考虑接下来的字节。union branch 1 (long, not null)代表类型是 long,因为 branch 0 是 null,所以 long 是 branch 1 。但是我不太确定自己的理解是否正确。明天再仔细看看。
2020-07-31 09:47:20 +08:00
回复了 JasonLaw 创建的主题 MySQL MySQL InnoDB 的索引将 null 存储在哪里?
@iConnect #3 虽然 https://dev.mysql.com/doc/refman/8.0/en/is-null-optimization.html 说了“MySQL can perform the same optimization on col_name IS NULL that it can use for col_name = constant_value. For example, MySQL can use indexes and ranges to search for NULL with IS NULL.”,但是我更想知道“索引是怎么存储 null”的官方文档,可惜我没有找到。
2020-07-31 09:28:35 +08:00
回复了 JasonLaw 创建的主题 MySQL MySQL InnoDB 的索引将 null 存储在哪里?
@yyyyfan #1 有没有官方文档说明这个东西呢?我并没有找到相关的内容。
1 ... 25  26  27  28  29  30  31  32  33  34 ... 37  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   931 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 20ms · UTC 22:23 · PVG 06:23 · LAX 14:23 · JFK 17:23
Developed with CodeLauncher
♥ Do have faith in what you're doing.