2012-07-08 49 views
-1

我有一个30 GB的大型mysql数据库,其中所有表使用innodb引擎。 几乎所有这些空间都是由一个大型表格(大约25 GB)取得的,我用二进制格式存储大型文本,但99%的查询使用其他较小的表格。mysql/innodb数据库大小如何影响性能?

我的服务器有16 GB RAM,系统内存非常短,总是使用交换并给我的用户带来很大的痛苦。我的innodb_pool_buffer_size设置为6G

我正在考虑通过将这些文本从数据库移动到文件系统来解决此性能问题。

如果大多数查询不使用这个大表,将25 GB的文本移动到文件系统会解决这个问题吗?数据库大小是否会影响服务器性能,即使最大innodb表不用于查询太多?

+0

你使用'innodb_file_per_table'选项吗? – raina77ow 2012-07-08 19:41:59

+0

我同意这将是一个更好的系统。由于25G表的干扰,SilverLight应该将其打开,因为其他池可能运行缓慢。 – 2012-07-08 19:49:17

回答

3

您的问题中根本没有足够的信息来提供答案。

在为您的问题应用可行的解决方案之前,您需要采取系统的方法来找到问题。否则,你正在开具随机药物,用于未知的疾病。你可能会让问题变得更糟,因为要让它变得更好,或者没有效果。

从慢速查询开始,运行EXPLAIN,看看他们在做什么。确保您的表格已正确编制索引以改善这些查询(如果尚未)。然后,如果你仍然坚持,发布最慢的查询,并输出EXPLAIN作为一个新问题,你会得到更多有用的答案。

+0

+1是的,你需要一个系统的方法。如果你的系统内存非常短,交换或分页太多,你可能需要增加额外的内存,或考虑降低'inno_pool_buffer_size'来释放内存用于其他目的。除了运行MySQL之外,你的服务器还有什么功能? – HeatfanJohn 2012-07-08 19:53:34

0

我完全同意Flimzy的观点,您需要仔细检查数据库的使用方式,如果您需要优化它的帮助,则需要更多信息。

但是,我可以回答你提出的两个问题。在99.9%的情况下,迁移到基于文件的系统并不比MySQL好。 MySQL有更好的方法来排序,排序和选择标准文件系统的数据。基本上,任何操作系统在将大量文件保存在单个目录中都非常糟糕,并且I/O和硬盘驱动器的延迟时间将简单地通过屋顶。
对第二个问题:不,数据库/表大小不必影响服务器性能。我有一个145 GiB的InnoDB表(授予它,它在一个SSD上),它被严重使用,没有我的网站受到重创。 Ole Flimzy说,你将不得不优化你的SQL服务器,表格设计和索引,然后查询最佳性能。

相关问题