mySQL性能一个巨大的数据库vs小很多

时间:2017-08-15 23:34:17

标签: mysql

我正在开发一个包含许多子域的网站。

它有博客模块,管理系统等等。我在各个网站分享了这个问题,但无法得到正确的答复。

问题是我应该为所有模块使用一个数据库,这意味着我的数据库将有近100个表。这种方法是否合适,还是应该为每个模块创建单独的数据库?

2 个答案:

答案 0 :(得分:2)

嗯,这并不重要。

如果您将innodb与单个数据文件一起使用(未启用innodb_file_per_table设置),则无论如何所有数据都将存储在单个文件中。

对于每个表模式的innodb单独文件或myisam表引擎,一个或多个数据库之间的唯一区别实际上是存储数据库文件的目录。除非目录(数据库)位于具有不同速度的不同存储设备中,否则它们的性能将相同。

将一些表保存在不同的数据库中有两个原因:

  1. 安全性:mysql不支持基于角色的访问控制。因此,如果有一组表只能由特定用户组访问,那么如果这些表位于不同的数据库中,则访问控制更易于管理。

  2. 如果您提到的某些模块碰巧使用相同的表名,那么您必须将它们移动到单独的数据库,或者您需要修改代码和表名以避免错误。

答案 1 :(得分:0)

设计系统没有正确或错误的方法。各种技术的优点和缺点。我通常在Oracle和SQL Server中工作,因此我不得不查找MySQL的一些术语。根据我的研究,在MySQL中,数据库与改变事物的模式同义。在为任何供应商规划物理设计时,我会考虑这些事情:

  • 安全性 - 所有子域是否需要相互读/写?用户如何安全?选择一个或多个模式可能会影响架构和用户安全性的管理和控制。
  • 增长 - 某些子域名的增长速度是否快于其他子域名?如果是,我会考虑将它们分开以允许不同的增长率。
  • 组织 - 如果它们分开,在实践中识别不同的子域是否更容易?如果您不将它们分开,请使用强大的命名约定,以便轻松识别一个子域中的对象。
  • 链接 - 从另一个模式访问一个模式/数据库有多容易?

希望这有帮助。