我在MySQL中有大量未使用的数据库。它们是否会影响我的MySQL引擎性能,即使它们未使用?他们自己消耗记忆吗?
谢谢
发布于 2014-04-19 13:00:21
我唯一能看到的性能问题是在INFORMATION_SCHEMA数据库上(请参阅我的post 信息是怎样的_用MySQL实现的模式?)。
如果您有关于表是否存在的查询,获取表大小(例如:请参阅我的post MySQL工作台数据库大小),以及类似的内容,MySQL将花费时间在操作系统中筛选此类元数据。获取InnoDB表和分区MyISAM表上的元数据将使INFORMATION_SCHEMA受到最严重的打击,因为它必须打开许多文件句柄。
除此之外,您对工作数据集的常规查询应该是可以的。
发布于 2014-04-21 10:36:44
有一些方面您必须考虑磁盘空间和碎片。
MySQL的两个主要存储引擎是MyISAM和InnoDB。
访问MyISAM表时,数据总是从MyISAM表的.MYD文件中读取。在访问索引时,索引页存储在MyISAM密钥缓存中(按key_buffer_size大小)。在这种情况下,如果您从未访问过MyISAM表,则索引页永远不会加载到内存中。
访问InnoDB表时,将读取的数据和索引页加载到InnoDB缓冲池(按innodb_buffer_pool_size大小)。在这种情况下,如果您从未访问InnoDB表,则数据页和索引页永远不会加载到内存中。
如果禁用了innodb_file_per_table,那么所有数据和索引页都将驻留在系统表空间文件ibdata1中。然后,拥有一个包含大量未使用表的大型ibdata1可能会引入碎片,这可能会降低对InnoDB表的访问速度。如果您使用的是MySQL 5.5/5.6,这不应该是一个值得担心的问题。
有一些选项和结构可用于预加载索引页(以及InnoDB的数据页)。尽管如此,只要您不访问这些存档表,您在所有其他方面都应该是安全的。
https://dba.stackexchange.com/questions/63512
复制相似问题