我有一个30 GB的大mysql
数据库,其中所有表都使用innodb
引擎。
几乎所有这些空间都由一个大表(大约25 GB)占用,我以二进制格式存储大型文本,但99%的查询使用其他较小的表。
我的服务器有16 GB ram,系统内存很短,总是使用swap并给我的用户带来很多痛苦。我将innodb_pool_buffer_size
设置为6G
。
我正在考虑通过将这些文本从数据库移动到文件系统来解决这个性能问题。
如果大多数查询都不使用这个大表,那么将25 GB的文本移动到文件系统会解决这个问题吗?即使最大的innodb表没有用于查询太多,数据库大小是否会影响服务器性能?
答案 0 :(得分:3)
您的问题中没有足够的信息来提供答案。
在为您的问题应用可能的解决方案之前,您需要采用系统的方法来找到问题。否则,你就是为了一种未知的疾病而开具随机药物。你可能会让问题变得更糟,因为你要让它变得更好,或者没有效果。
首先在慢速查询上运行EXPLAIN
,看看他们在做什么。确保您的表格已正确编入索引以改进这些查询(如果它们尚未完成)。然后,如果您仍然卡住,请将最慢的查询和EXPLAIN
的输出作为新问题发布在此处,您将获得更多有用的答案。
答案 1 :(得分:0)
我完全同意Flimzy的说法,你需要仔细检查数据库的使用方式,如果需要帮助进行优化,则需要更多信息。
但是,我可以回答你提出的两个问题。在99.9%的情况下,迁移到基于文件的系统并不比MySQL好。 MySQL有一种更好的方法来排序,排序和选择标准文件系统的数据。基本上,任何操作系统都非常难以在单个目录中维护大量文件,并且硬盘驱动器的I / O和延迟时间将完全通过。 对于第二个问题:不,数据库/表大小不必影响服务器性能。我有一个145 GiB InnoDB表(授予它,它在SSD上)并且它被严重使用,没有我的网站受到重创。 :ole Flimzy说,你必须优化你的SQL服务器,表格设计和索引,然后查询以获得最佳性能。