-1

我有一个 30 GB 的大型mysql数据库,其中所有表都使用innodb引擎。几乎所有这些空间都被一个大表(大约 25 GB)占用,我在其中以二进制格式存储大文本,但 99% 的查询使用其他较小的表。

我的服务器有 16 GB 内存,系统内存非常不足,总是使用交换,给我的用户带来了很多痛苦。我有我的innodb_pool_buffer_size设置6G

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

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

4

2 回答 2

3

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

在为您的问题应用可能的解决方案之前,您需要采取系统的方法来发现问题。否则,您是在为未知疾病开随机药物。你有可能让问题变得更糟,就像你想让它变得更好一样,或者没有效果。

首先运行EXPLAIN你的慢查询,看看他们在做什么。确保您的表已正确编入索引以改进这些查询(如果还没有的话)。然后,如果您仍然卡住,请在此处发布最慢的查询以及EXPLAIN作为新问题的输出,您将获得更多有用的答案。

于 2012-07-08T19:42:05.703 回答
0

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

不过,我可以回答你提出的两个问题。在 99.9% 的情况下,迁移到基于文件的系统并不比 MySQL 好。MySQL 具有比标准文件系统更好的数据排序、排序和选择方法。基本上,任何操作系统都不擅长在单个目录中维护大量文件,并且 HDD 的 I/O 和延迟时间将简单地超过屋顶。
对于第二个问题:不,数据库/表大小不一定会影响服务器性能。我有一个 145 GiB 的 InnoDB 表(当然,它在 SSD 上)并且它被大量使用,而我的网站没有受到很大的打击。:ole Flimzy 说,您将不得不优化您的 SQL 服务器、表设计和索引,然后查询以获得最佳性能。

于 2012-07-08T19:57:49.707 回答