gpt4 book ai didi

mysql - 有两张表 - 一张用于选择,一张用于更新

转载 作者:行者123 更新时间:2023-11-29 09:28:16 24 4
gpt4 key购买 nike

我有一个表,它不断更新大量实时数据。为了使其具有可扩展性,最好不要有任何索引以尽可能快地进行更新。当我获取数据时,我按天对其进行分组,因此选择不需要是实时的,但如果它们被编入索引那就太好了:

表结构:

id | date | fk_1 | fk_2 | some_data | incr

更新 SQL:

INSERT INTO table VALUES(null, DATE(NOW()), 5, 2, 'some data', 1) ON DUPLICATE KEY SET incr = incr + 1;

每天制作一个具有适当索引的重复表并将其用于选择,同时保持原始表未建立索引并用于更新,这是一个好习惯吗? (该表有几百万行)。

最佳答案

是的,使用不同的数据库来收集“操作”数据和运行查询是一种很好的做法。但是,将数据从一个系统复制到另一个系统会带来额外的负载,因此可能无法直接解决您的问题。

不过,在此之前,您应该测试其他解决方案。首先,您的更新负载是多少?日期上的单个索引确实会增加开销,但不会导致数据库停止运行。在合理的硬件上,数据库应该仍然能够管理每秒数百次修改。

如果您只关心一列,并且您的意思是按天过滤,那么按日期分区数据可能是一个不错的解决方案。

第三,就性能而言,我可能更关心 select 查询对 DML 查询的干扰,而不是索引的开销。这是用于查询的第二个数据库有用的地方。

关于mysql - 有两张表 - 一张用于选择,一张用于更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59225912/

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