Answers:
通常,拥有的任何东西越多,性能就会下降。但是,200似乎是一个很小的数字。2,000可能是真正的性能影响,肯定是20,000。不过,一般而言,您应该使表的数量保持较小,因为MySQL可以处理表中的大量行。
通常,200个表应该不是问题,但这取决于许多因素。
与其他软件共享的专用MySQL服务器vs服务器,128Mb vs 128Gb RAM等,记录很少的小表与具有斑点和数百万行的表。
MySQL具有可能的设置和多个引擎,它们分别以不同的方式影响表的性能。
MyISAM通常每个表具有三个文件.frm,.MYD,.MYI
正常模式下的INNODB带有.frm,所有数据都存储在中央文件中
每个表模式一个文件中的INNODB具有.frm,.idb
table_open_cache是可以一次打开的表的数量(默认为64)。这可能需要大于架构中的表数,因为它与查询数据库的连接数有关。100个连接联接3个表可能意味着您已缓存300个表以及任何临时表。通常,模式或连接越复杂,数量越大。
open-files-limit我倾向于将其设置为4x table_open_cache,它应该是慷慨的,而不是费力算出一个确切的值。
mysql用户的操作系统文件句柄限制也可能是个问题(在linux上,默认值通常可以是1024,ulimit -n以显示用户限制)这可能会导致表数量少于此数量时出现问题mysql要求。这至少应与open-files-limit相同。
与任何数据库一样,您可以调整数百个调整参数以针对特定架构优化数据库。MySQL比大多数情况更糟糕,因为如果您想要NDB集群引擎,则可以插入额外的引擎。
http://dev.mysql.com/doc/refman/5.1/zh-CN/table-cache.html
希望能帮助到你
它可以?当然。但是,这在很大程度上取决于您的应用程序及其访问模式,以及您使用的是myisam还是innodb,innodb是否处于每表文件模式,以及innodb日志的大小。您需要给我们提供更多细节。
否-我认为表的数量不会成为您系统中的性能瓶颈。毕竟,它们只是您文件系统上的文件。在数据库中拥有数百个表并没有什么不寻常的。
您的查询未正确优化的可能性更大。我建议打开log-slow-queries
和log-queries-not-using-indexes
。当您确定慢速查询时,请使用该explain
选项查看这些查询的查询计划,以识别缺少索引的位置。
有关更多详细信息,请参见http://dev.mysql.com/doc/refman/5.0/en/slow-query-log.html。