2010-06-21 88 views
7

我的MySql服务器目前有235个数据库。我应该担心吗? 它们都与MyISAM表具有相同的结构。MySQL可以处理多少个数据库?

该硬件是一台虚拟机,具有运行在四核AMD Opteron 2.2GHz上的2 GB RAM。

最近cPanel给我发了一封电子邮件,说MySql失败了,并且重新启动了。

新数据库正在预计创建,我不知道是否应该添加更多的内存,或者如果我应该简单地添加另一个虚拟机。

+1

虽然我从来没有听说过任何限制,但我可能会检查你的结构 - 有那么多必要吗? – 2010-06-21 20:52:30

回答

0

我不相信有一个硬限制,唯一真正限制你的将是你的硬件和这些数据库将获得的流量。

你似乎有很少的内存,这可能意味着你没有连接的庞大的数字...

你应该把用户的用电习惯为每个数据库(或一组数据库,这取决于如何开始使用它们

当然)。

我的建议 - MySQL(或任何数据库服务器)可以使用更多的内存。你永远不会有足够的。

0

你做错了。

评论关于你的数据库的一些细节,我们也可以填写你的设计出错的地方。

+1

谢谢大家的意见。 该系统与Google Analytics类似。 用户网站的访问被登录到“主”表中。本地应用程序正在监视主表并处理已注册的访问并将它们写入用户的数据库。每个用户都有自己的数据库。这已经决定了分片。各个用户正在运行各种报告和统计数据。如果它只运行在特定的数据库上(更少的数据),速度会更快 我知道这不是最好的设置。但我们必须处理一段时间。 – 2010-06-22 20:46:17

6

mysql中的“数据库”实际上是目录,无论您是将所有表放在一个还是每个表中,它都不会影响其限制。

主要问题是表缓存。如果不进行调整,您将拥有默认的表缓存(通常为64个),这意味着您每次打开表时都会关闭一个表。这是非常糟糕的。

除了在MyISAM中,它更糟糕,因为关闭表将其关键块从关键缓存中抛出,这意味着后续索引查找或扫描将从磁盘读取实际块,这是可怕和缓慢的,并且真的需要应避免。

我的建议是:

  • 如果可能的话,立即增加表缓存到>表总数
  • 监控您的监控全局状态变量opened_tables的;如果它迅速增加,这是不好的。
  • 在非生产环境中的相同硬件上进行性能和健壮性测试(如果您尚未这样做)。
+1

我也会添加,检查文件描述符限制 - 虽然没有直接连接到no。的数据库,你可以用很多MyISAM表来用完文件描述符。 – nos 2010-06-23 10:48:35

+0

正常的启动脚本将根据需要增加数量(在Linux下) - 当然可以有10,000个没有任何问题。其他引擎也可能不使用每个表的文件描述符。 – MarkR 2010-06-24 05:50:05

1

(重新发布我的意见,以提高知名度) 谢谢大家的意见。该系统与Google Analytics类似。用户网站的访问被记录到“主”表中。本地应用程序正在监视主表并处理已注册的访问并将它们写入用户的数据库。每个用户都有自己的数据库。这已经决定了分片。各个用户正在运行各种报告和统计数据。如果它只运行在特定的数据库上(更少的数据),速度会更快我知道这不是最好的设置。但我们必须处理一段时间。

+0

此信息似乎与原始问题有关。如果您希望它具有比评论更高的可见性,为什么不编辑原始问题以包含此信息? – Trevor 2016-04-15 23:05:01