gpt4 book ai didi

php - 在没有仅索引表的情况下跟踪开/关

转载 作者:搜寻专家 更新时间:2023-10-30 22:19:28 27 4
gpt4 key购买 nike

我正在寻找最好的、最具可扩展性的方式来跟踪大量的开/关。开/关适用于项目,编号从 1 到大约 6000 万。 (在我的例子中,开/关是成员(member)的书是否被编入索引,这是一个单独的过程。)

开/关必须按项目编号快速搜索。它们不断变化,因此重新编制索引的成本不会很高。新项目添加到表格末尾的频率较低。

我认为,理想的解决方案是一个只有索引的表——一个每个字段都是主键一部分的表。我知道 ORACLE 有这个,但 MySQL 的引擎没有。

如果我使用 MySQL,我认为我的选择是:

  1. 一个包含两个字段的表——项目和“开/关”字段。将使用 UPDATE 处理更改。

  2. 单字段表 -- 项目。在 table 上意味着“在”。使用 INSERT 和 DELETE 处理更改。

我对其他技术持开放态度。将整个内容按位存储在文件中?

最佳答案

使用选项 #1 可能会更灵活,但两者都会有效。但是,如果速度是一个问题,您可能需要考虑创建一个 HEAP 表,该表在 mysql 启动时预先填充并与其他进程一起维护。此外,在表中使用 int 和 enum 字段类型。因为它全部保存在内存中,它应该快如闪电,而且因为表中存储的数据不多,6000 万条记录在内存方面应该不是一个巨大的负担。如果我必须粗略估计:

int(8)(为了增长,假设有一天你会超过 1 亿条记录)

枚举(0,1)

所以让我们四舍五入到每条记录 10 个字节:

10 * 60,000,000 = 600,000,000

这大约是 572 MB 的数据,加上索引和额外的开销,所以我们粗略地说...一个 600 MB 的表。如果您的服务器上有这种内存可用,那么 HEAP 表可能是最佳选择。

关于php - 在没有仅索引表的情况下跟踪开/关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5891789/

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