gpt4 book ai didi

mysql - 大 MySQL 表

转载 作者:可可西里 更新时间:2023-11-01 08:01:51 26 4
gpt4 key购买 nike

我正在处理一个需要缓存分页“搜索”结果的问题:Paginating very large datasets

搜索工作如下:给定一个 item_id,我找到匹配的 item_id 及其排名。

我愿意承认不向我的用户显示任何超过 500 的结果。在 500 之后,我假设他们不会找到他们正在寻找的东西......结果是排序的反正按照比赛顺序。所以我想缓存这 500 个结果,这样我只需执行一次繁重的查询,用户仍然可以分页结果(最多 500 个)。

现在,假设我使用一个中间 MySQL 表作为我的缓存...也就是说,我将每个项目的前 500 个结果存储在“匹配”表中,如下所示:“item_id (INTEGER), matched_item_id (INTEGER) , match_rank (REAL)”。搜索现在变得非常快:

SELECT item.* FROM item, matches 
WHERE matches.item_id=<item in question>
AND item.id=matches.matched_item_id
ORDER BY match_rank DESC
LIMIT x,y

我可以毫无问题地将项目及其匹配项重新索引到此表中,因为如果结果早于 24 小时,客户会要求它们。问题是,存储 N 个项目的 500 个结果(其中 N 是 ~100,000 到 1,000,000)这个表变得相当大...... 50,000,000 - 500,000,000 行。

MySQL 能处理这个吗?我应该注意什么?

最佳答案

MySQL 可以处理这么多行,当您开始碰壁时,有多种技术可以扩展。 Partioningreplication是该场景的主要解决方案。

您还可以在 a question I previously asked 中查看 MySQL 的其他扩展技术。在 stackoverflow 上。

关于mysql - 大 MySQL 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/347837/

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