gpt4 book ai didi

小型 "fast-moving"表上的 mysql 索引性能

转载 作者:行者123 更新时间:2023-11-29 02:08:18 25 4
gpt4 key购买 nike

我们有一个用作队列的表。条目不断添加,不断更新,然后删除。尽管我们可能每秒添加 3 个条目,但表永远不会增长到超过几百行。

为了从表中取出条目,我们正在做一个简单的选择。

SELECT * FROM queue_table WHERE some_id = ?

我们正在讨论在 some_id 上添加索引。我认为我们添加和删除行的小规模和速度会拒绝,但按照惯例,我们似乎应该有一个索引。

有什么想法吗?

最佳答案

如果您正在使用 InnoDB(您应该使用这种表)并且同时访问该表,那么您绝对应该创建索引。

当执行 DML 操作时,InnoDB 锁定它扫描的所有行,而不仅仅是那些匹配 WHERE 子句条件的行。

这意味着没有索引,这样的查询:

DELETE
FROM mytable
WHERE some_id = ?

将必须进行全表扫描并锁定所有行。

这会破坏所有并发性(即使线程访问不同的 some_id,它们仍然必须相互等待),甚至可能导致死锁。

每秒 3 个事务,没有索引应该是个问题,所以创建它就可以了。

关于小型 "fast-moving"表上的 mysql 索引性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2095918/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com