在MySQL中构建一个大表

在MySQL中构建一个大表,mysql,database-design,Mysql,Database Design,这是我第一次用包含1000万条记录的表构建数据库。该表是一个成员表,将包含成员的所有详细信息 我在建立数据库时需要注意什么 我需要MySQL的特殊版本吗?我应该使用MyISAM还是InnoDB?首先,您可能需要后退一步,重新检查您的模式。如何在成员表中获得1000万行?你真的有1000万会员吗(似乎很多) 我怀疑(尽管我不确定)您的成员不足1000万,在这种情况下,您的表将无法正确构造。请发布模式,这是我们帮助您的第一步 如果您确实有1000万成员,我的建议是让您的应用程序供应商从一开始就不可知

这是我第一次用包含1000万条记录的表构建数据库。该表是一个成员表,将包含成员的所有详细信息

我在建立数据库时需要注意什么


我需要MySQL的特殊版本吗?我应该使用MyISAM还是InnoDB?

首先,您可能需要后退一步,重新检查您的模式。如何在成员表中获得1000万行?你真的有1000万会员吗(似乎很多)

我怀疑(尽管我不确定)您的成员不足1000万,在这种情况下,您的表将无法正确构造。请发布模式,这是我们帮助您的第一步

如果您确实有1000万成员,我的建议是让您的应用程序供应商从一开始就不可知(即标准SQL)。然后,如果您开始遇到问题,只需扔掉当前的DBMS,并用一个更强大的DBMS替换它

一旦你确定了你有一个合适的,然后,只有到那时,我才建议使用供应商特定的东西。否则,改变将是一个痛苦的过程

顺便说一句,1000万行并不是真正意义上的大数据库表,至少在我的家乡不是这样

除此之外,以下内容也很重要(不一定是详尽的列表,而是一个良好的开端)

  • 始终为3NF设计您的桌子。一旦发现性能问题,只要您了解后果,就可以违反该规则
  • 不要在开发过程中进行性能调优,您的查询处于不断变化的状态。接受这样一个事实,他们可能跑得不快
  • 锁定大多数查询后,开始调整表。添加任何加快选择、反规范化等的索引
  • 调优不是一个“一劳永逸”的操作(这就是为什么我们要向DBA支付如此多的费用)。持续监控性能并调整以适应
  • 我宁愿保留我的SQL标准,以保持随时切换供应商的能力。但我很务实。如果它真的能给你提振的话,就使用特定于供应商的东西。只是要意识到你失去了什么,并尽可能地隔离特定于供应商的东西
  • 当不需要每一列时,使用
    “选择*自…”
    的人应该被击败提交
  • 同样,那些在客户端选择要过滤掉的每一行的。编写我们的DBMS的人不是整天坐在一起玩纸牌游戏,他们知道如何让查询快速运行。让数据库做它最擅长的事情。过滤和聚合最好在服务器端完成——只通过网络发送所需内容
  • 生成有用的查询。除了国防部要求提供报告,详细说明航空母舰的每个组成部分,直至细节层面,没有人对阅读1200页的报告感兴趣,不管你认为它有多有用。事实上,我认为国防部也不会读他们的,但我不想让某个将军把我骂一顿,因为我没有发表意见——那些家伙声音很大,他们控制着相当多的尖端武器

首先,您可能需要后退一步,重新检查您的模式。如何在成员表中获得1000万行?你真的有1000万会员吗(似乎很多)

我怀疑(尽管我不确定)您的成员不足1000万,在这种情况下,您的表将无法正确构造。请发布模式,这是我们帮助您的第一步

如果您确实有1000万成员,我的建议是让您的应用程序供应商从一开始就不可知(即标准SQL)。然后,如果您开始遇到问题,只需扔掉当前的DBMS,并用一个更强大的DBMS替换它

一旦你确定了你有一个合适的,然后,只有到那时,我才建议使用供应商特定的东西。否则,改变将是一个痛苦的过程

顺便说一句,1000万行并不是真正意义上的大数据库表,至少在我的家乡不是这样

除此之外,以下内容也很重要(不一定是详尽的列表,而是一个良好的开端)

  • 始终为3NF设计您的桌子。一旦发现性能问题,只要您了解后果,就可以违反该规则
  • 不要在开发过程中进行性能调优,您的查询处于不断变化的状态。接受这样一个事实,他们可能跑得不快
  • 锁定大多数查询后,开始调整表。添加任何加快选择、反规范化等的索引
  • 调优不是一个“一劳永逸”的操作(这就是为什么我们要向DBA支付如此多的费用)。持续监控性能并调整以适应
  • 我宁愿保留我的SQL标准,以保持随时切换供应商的能力。但我很务实。如果它真的能给你提振的话,就使用特定于供应商的东西。只是要意识到你失去了什么,并尽可能地隔离特定于供应商的东西
  • 当不需要每一列时,使用
    “选择*自…”
    的人应该被击败提交
  • 同样,那些在客户端选择要过滤掉的每一行的。编写我们的DBMS的人不是整天坐在一起玩纸牌游戏,他们知道如何让查询快速运行。让数据库做它最擅长的事情。过滤和聚合最好在服务器端完成——只通过网络发送所需内容
  • 生成有用的查询。除了国防部要求提供报告,详细说明航空母舰的每个组成部分,直至细节层面,没有人对阅读1200页的报告感兴趣,不管你认为它有多有用。事实上,我认为国防部也没有读过他们的,但我不想让一些将军把我骂一顿,因为我没有做到——那些人可能是我