【问题标题】:Different databases or tables sets for each user为每个用户设置不同的数据库或表集
【发布时间】:2014-05-19 11:28:46
【问题描述】:

我必须创建数据库来存储大量数据,但能够使用 MySQL 足够快地提取数据。 我想知道如果我为每个用户创建一个新数据库或一个新表集而不是使用单个大型数据库是否会有所帮助。 我唯一担心的是用户会很多,但我希望他们不会同时使用该项目。 有没有人有类似结构的经验或任何其他解决问题的建议?

【问题讨论】:

    标签: mysql database large-data-volumes large-data


    【解决方案1】:

    为所有用户使用单个数据库和单个“用户”表...分配主题唯一 ID...。 或者如果单个用户有很多数据...... 示例

    如果 user_a 有 10 本书....

    用这种结构制作一个不同的表,比如“Book_table”.....

    id , user_id , book_name

    你可以为多个用户使用这个结构......

    请详细说明你有哪些用户的详细信息......我会尽量给出更准确的答案......

    【讨论】:

    • 无论我使用单个数据库还是多个数据库,数据库都会被规范化。问题在于,有三个表包含发送给订阅者的消息发送、每次访问从该消息生成以及消息的打开。如果这些表包含所有用户的此事件的数据,则每年将获得 60M 到 120M 条记录。
    【解决方案2】:

    绝对只使用一个用户表。如果您需要快速搜索该表,您可以索引需要快速搜索的列。例如,您有一个包含名字、姓氏和电子邮件地址的用户表。这些是文本字段,因此搜索会很慢,因为它需要扫描整个表并比较所有字符串(注意字符串比较比整数慢得多)。为了解决这个问题,您可以索引诸如电子邮件地址之类的列,这有点像一个只有电子邮件的有序表(隐藏起来)。有序表更易于搜索,因此您的搜索速度会更快。

    这是一个很好的基本example 如何使用索引。不过要小心索引,因为它们会增加插入的开销。阅读您的部分内容将在这里真正有所帮助。

    无论如何,这是对索引的过度简化的解释。

    【讨论】:

      猜你喜欢
      • 2020-04-04
      • 1970-01-01
      • 2012-04-03
      • 1970-01-01
      • 2016-04-30
      • 1970-01-01
      • 1970-01-01
      • 2021-06-05
      • 1970-01-01
      相关资源
      最近更新 更多