ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

将大量相同的MySQL表转换为一个和许多指向它的VIEW?

2019-06-30 14:01:42  阅读:148  来源: 互联网

标签:mysql innodb views myisam


我正在运行一个相当大的WPMU(WordPress多用户,Wordpress多站点)部署,它使用4096个数据库和100k表(显然,在什么模式中有很多重叠).

基本上它是相同的20-some表一遍又一遍地为每个博客复制,其中一些是空的,另一些包含几行到几百行.

我的计划(节省了许多麻烦,但可能效率低下)是将所有相同的模式表合并到一些大的InnoDB表中,并用指向它们的MySQL VIEW替换旧的表,重写查询以便相关的行返回(将旧表名存储在新列中,然后使用视图将列添加到查询WHERE子句中).

问题是:这会在性能方面提供任何改进吗? (密钥缓冲效率,表缓存效率,索引)或者这只是蛇油,我应该采用更加激烈的方法重写应用程序,以便我不需要VIEW但查询直接进入大型InnoDB表?

解决方法:

我建议不要做你正在考虑的表合并.

考虑合并表的一些缺点:

>合并表的索引数据结构将更大更深,因此效率较低.
>累积大量数据但随后闲置的博客仍然会影响表和索引的整体大小,因此会使查询花费更长时间.
>更难以备份和恢复个人博客.
>如果您想扩展,更难将个人博客移动到另一个数据库服务器.
>更难使用SQL权限来限制给定博客的访问权限(尽管您可以将SQL权限应用于视图).
>更难添加包含给定博客的架构更改的自定义功能.

使用视图或不使用视图不会对上述问题产生积极或消极影响.至少在MySQL中,视图基本上只是运行时的查询重写,它不会比直接查询基表更好或更差地使用索引.

我曾经和Wordpress.com的数据库架构师交谈过.他们在数十台物理服务器上托管了数百万个Wordpress博客.在他们早期,他们开始将所有博客的数据合并到相同的表中,但他们发现随着他们的成长,操作困难变得太大了.现在,他们将每个博客托管在一个单独的数

标签:mysql,innodb,views,myisam
来源: https://codeday.me/bug/20190630/1337318.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有