【问题标题】:Best way to store and retrieve (user's actions) in php/MYSQL?在 php/MYSQL 中存储和检索(用户操作)的最佳方式?
【发布时间】:2012-05-05 00:25:49
【问题描述】:

我会像用户一样存储东西;搜索历史、帖子查看历史、保存的帖子等...你懂的。

例如,对于用户已保存的帖子,用户在其整个生命周期中将拥有大约 500-2,000 条信息,而对于成千上万的用户,您可以看到这将如何迅速增加。因此,当用户想要查看他们已保存的帖子时发布历史记录显示它的最佳方式是什么?

Surley 在表中查询所有与用户 ID(大约 2,000 个)匹配的已保存帖子会很疯狂(如果我以传统方式(用户、帖子 ID)存储它)!

我的想法是将所有用户保存的帖子 ID 保存在一个大数组中,这样每个用户就会有 1 行而不是 2,000 行(存储在一个单元格中)。有什么理由我不应该这样做吗?你知道的最有效的方法是什么?哦,如果你同意这应该是什么数据类型,BLOB?

附带问题 - 当数据库达到超过 10-1 亿行的大小时,大多数人会采用什么解决方案? (硬件除外)

【问题讨论】:

  • 只要确保在您将用于查找的列(例如在您的WHERE 子句中)或表连接中创建索引。
  • 您也指的是哪种方法?谢谢
  • 存储在 MySQL 中,只需创建适当的索引。 10-1 亿行本身不应该是一个问题。见dev.mysql.com/doc/en/table-size-limit.html
  • 对不起,我的意思是,为了检索 - 将 postids 数组存储在 1 个大单元格中……或 2,000 行中会更好吗?及时从 1000 万表中获取 2000 行不是几乎不可能吗?
  • 没有。第三次,请确保使用适当的索引。

标签: php mysql


【解决方案1】:

按照建议添加索引。 1 亿行的可能解决方案是一种称为数据库分片的技术,您可以根据 ID 范围有效地将同一个表跨多个数据库实例(服务器)存储。然后,给定用户的帖子将存在于许多“分片”之一上

http://en.wikipedia.org/wiki/Shard_(database_architecture)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-24
    • 2010-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多