当前位置: 首页 > 面试题库 >

MySQL:很多表还是很多数据库?

况嘉运
2023-03-14
问题内容

对于一个项目,我们有一堆始终具有相同结构且未链接在一起的数据。有两种保存数据的方法:

  • 为每个池创建一个新的数据库(约15-25个表)
  • 在一个数据库中创建所有表,并根据表名称更改池。

对于MySQL来说,哪一个更容易和更快地处理?

编辑: 我对数据库设计没有兴趣,只是对两种可能性中的哪一种更快感到兴趣。

编辑2:
我将尝试使其更加清晰。如前所述,我们将获得数据,其中一些日期很少会属于不同的池。将一种类型的所有数据放在一个表中并将其与池ID链接不是一个好主意:

  • 很难备份/删除特定的池(并且我们希望过一会儿(即使使用big int时)用尽主键)

因此,其想法是为每个池创建一个数据库,或在一个数据库中创建许多表。针对数据库的50%查询将很简单inserts。49%selects的主键很简单。

问题是,什么是更快处理的MySQL?许多表或许多数据库?


问题答案:

单个数据库中的多个表与单独数据库中的多个表之间应该没有明显的性能差异。

在MySQL中,数据库(标准SQL为此使用术语“模式”)主要用作表的命名空间。数据库仅具有一些属性,例如默认字符集和排序规则。的使用GRANT使控制每个数据库的访问权限变得很方便,但这与性能无关。

您可以通过单个连接访问任何数据库中的表(前提是它们由MySQL Server的同一实例管理)。您只需要限定表名:

SELECT * FROM database17.accounts_table;

这纯粹是语法上的差异。它对性能没有影响。

关于存储,您不能像@Chris推测的那样将表组织到每个数据库文件中。使用MyISAM存储引擎,每个表始终有一个文件。使用InnoDB存储引擎,您可以拥有一组合并所有表的存储文件,或者每个表都有一个文件(此文件是为整个MySQL服务器配置的,而不是为每个数据库配置的)。无论哪种情况,在单个数据库与多个数据库中创建表都没有性能优势或劣势。

每个数据库没有多少MySQL配置参数可以使用。影响服务器性能的大多数参数在整个服务器范围内。

关于备份,您可以指定表的子集作为mysqldump命令的参数。备份每个数据库的逻辑表集可能更方便,而不必在命令行上命名所有表。但这对性能没有影响,在您输入backup命令时仅为您带来方便。



 类似资料:
  • 问题内容: 我的用户表有26列以上,这正常吗?当该用户表引起我注意时,数据库已被标准化为第3级。设计26列是否可以,或者在设计数据库时应该使用其他优化技术吗? 更多:对表进行分区是什么意思? 问题答案: 26列没有什么问题,但是如果很少使用它们,那就不一样了。 而不是使用26列,而是使用更少的列,并使用序列化字符串将它们分组。 将字段更改为文本字段,然后在代码中可以对它们进行反序列化并使用它们。如

  • 问题内容: 我很少(每月/每季度)使用Microsoft SQL Server 2005数据库视图生成数百个Crystal Reports报表。这些视图是否一直在浪费我的时间,而不是在浪费它们的CPU周期和RAM?由于我很少从视图中读取内容,我应该改用存储过程,临时表还是短暂的普通表吗? 我不是DBA,所以我不知道数据库服务器内部幕后发生的事情。 是否有太多的数据库视图?什么是最佳做法? 问题答案

  • 问题内容: 如何获得比Long.MAX_VALUE大的整数? 我希望此方法返回: 问题答案: 该方法无法返回。这是该 点 的。如果它的名字是… false,那 真是 令人困惑。然后应该只调用它,并且合理地使用零个字。只需使用Android的isUserAGoat,您就可以滚动自己的始终返回的函数。 请注意,内存中的字节数固定。 从Oracle: long:long数据类型是64位带符号的二进制补码

  • 问题内容: 我必须使用270多个更新字段来更新一个大表。 我对.NET相对较新,需要建议在这种情况下使用什么更好:SqlCommand,某种内存映射表或DataSet,或者它存在某种使用来自数据库的元数据自动生成的对象?请帮忙。 原因:我有一个旧的大型Delphi7应用程序,其中的一部分负责在套接字上侦听一些封包到大型结构并最终存储在DB中的数据包。现在,我要将这部分移植到新的C#服务上,至少实际

  • 问题内容: 我正在尝试将2.5GB的txt文件读入我的应用程序。我正在运行Win7 x64,并且有43GB的可用内存(64GB中的可用空间)。我尝试使用-Xmx -XX:MaxParmSize -XX:ParmSize等。这些都不影响错误。我还能尝试什么?因为我当然有足够的可用堆空间,所以这个错误似乎很奇怪。 我在跑步 非常感谢。 =============答案============== 好,我

  • 所以我的情况是:我想使用Jackson和Hibernate构建一个简单的CRUD Web服务。似乎是一个完美的Spring启动工作。因此,我们有以下几点: (请注意,我正在压缩代码,使其无法编译) 一个简单的数据模型。我们有一个简单的要求:在Web服务上,当我们得到服务对象时,我们应该得到相关的医生。当我们得到医生时,我们应该得到相关的服务。我们使用lazy是因为[insert justifica