[英]Convert LOTS of identical MySQL tables into ONE and lots of VIEWs that point to it?
我正在运行一个相当大的WPMU(Wordpress多用户,Wordpress多站点)部署,它使用4096个数据库和100k +表(显然,在什么模式中有很多重叠)。
基本上它是相同的20-some表一遍又一遍地为每个博客复制,其中一些是空的,另一些包含几行到几百行。
我的计划(节省了许多麻烦,但可能效率低下)是将所有相同的模式表合并到一些大的InnoDB表中,并用指向它们的MySQL VIEW替换旧的表,重写查询以便相关的行返回(将旧表名存储在新列中,然后使用视图将列添加到查询WHERE子句中)。
问题是:这会在性能方面提供任何改进吗? (密钥缓冲效率,表缓存效率,索引)或者这只是蛇油,我应该采用更加激烈的方法重写应用程序,以便我不需要VIEW但查询直接进入大型InnoDB表?
我建议不要做你正在考虑的表合并。
考虑合并表的一些缺点:
使用视图或不使用视图不会对上述问题产生积极或消极影响。 至少在MySQL中,视图基本上只是运行时的查询重写,它不会比直接查询基表更好或更差地使用索引。
我曾经和Wordpress.com的数据库架构师交谈过。 他们在
数十台
物理服务器上托管了数百万个Wordpress博客。 在他们早期,他们开始将所有博客的数据合并到相同的表中,但他们发现随着他们的成长,操作困难变得太大了。 现在,他们将每个博客托管在一个单独的数
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.