系统类型:64位
Windows版: Windows Server 2008 R2企业版
Microsoft Windows Server: 6.1
MySQL工作台版本: 6.3
我管理一个多站点的WordPress,它已经增长到33,000个表,所以它变得非常慢。因此,我正在尝试优化我们的安装。我一直在DEV服务器上工作,最后删除了整个网站。假设复制实时服务器在这一点上不是一个选项(请相信我,它不是),您可以帮助我完成以下操作:
我突出显示并复制了实时服务器中的表,以将它们粘贴到DEV服务器文件夹中。Workbench可以识别Schemas区域中的表,但是当我为Innodb表编写SELECT查询时,它显示这些表不存在。但是,MyISAM表可以成功运行。
我只是感到困惑,因为我知道表在正确的文件夹中,但由于某种原因,它们不查询。我看到了一个解决方案,要求使用常规查询创建表,然后在文件夹中覆盖它们,但这对我来说是不现实的,因为有33,000个表。你们中有谁有关于如何让这些Innodb表再次工作的想法?
发布于 2017-05-09 08:35:15
您不能通过文件系统复制单个InnoDB表。
您可以使用“可传输的表空间”来做到这一点。请参阅您正在使用的MySQL版本的文档。(这与Workbench的版本不同。)
这样做是不明智的,但这是可能的。相反,您应该使用一些转储/加载机制,例如mysqldump或xtrabackup。
WordPress的设计缺陷是允许您访问33,000个表。由于涉及所有文件,这会给操作系统带来性能压力。
在迁移到InnoDB时,我建议您仔细考虑innodb_file_per_table的选择。这些想法涉及到您正在使用的MySQL、表有多大,以及您是否将使用“可传输的表空间”。
对于更改WP中的索引,我有一个强烈的建议:参见http://mysql.rjweb.org/slides/cook.pdf的幻灯片63。它将提高许多查询的性能。
https://stackoverflow.com/questions/43857016
复制相似问题