如何拆分数据库中的a表?

时间:2012-08-06 作者:user564285

有没有选择split 这个tables 在更多中tables 在不同的databases? 问题是我的wp_posts 表太大了,需要很多时间才能在仪表板上显示。。。(超过20秒)。我试过了HyperDB 但是这个插件可以将数据库拆分为不同的databases 但是tables 保持不变。。。示例:wp_posts 从…起database1wp_postmeta 从…起database2, 但我需要阅读和书写其他方式。。。

如下所示

database1 --> wp_posts [from row 0--10000]

database2 --> wp_posts [from row 10001 to 20000]
等等。。。

我认为searching 单人间post 在许多databases 不是什么大问题。。。当searching 通过十万个posts 特定查询。。。因为我的项目想法是WordPress 处理很多products (posts), 因此,分析单个表(wp_posts) 要花很多时间,但要分开这个table 至更多tables 在不同的databases (数据库将有自己的服务器)将显示非常令人印象深刻的结果。

这可能吗?

1 个回复
SO网友:chrisguitarguy

Sharding 可能不是您想要的,尤其是如果管理区域是唯一的问题。如果前端工作正常,您可能会没事。

我们谈论的帖子总数是多少?

一些值得尝试的事情(请先备份数据库!):

1. Remove all old post revisions

快速统计一下我网站上的帖子修订,就会发现其中有5080篇——总共只有700篇帖子。

运行这样的删除查询应该可以做到这一点<请先测试不要只在生产数据库上运行它。

DELETE FROM {yourprefix}_posts WHERE post_type = \'revision\';

2. Run an Optimize Table Command

OPTIMIZE TABLE 用于清理经常更改的表。因为您刚刚删除了可能有大量行的内容,所以这不会有什么坏处。

OPTIMIZE TABLE {yourprefix}_posts;

3. Stop WP from Saving So Many Post Revisions

a constant you can define 在里面wp-config.php 这样做。

您可以禁用它们:

<?php
define(\'WP_POST_REVISIONS\', false);
或者限制它们的最大数量。

<?php
define(\'WP_POST_REVISIONS\', 3);

4. Remove Old/Spam Comments

您还可以尝试从comments表中删除旧的垃圾邮件注释:

DELETE FROM {yourprefix}_comments WHERE comment_approved != \'1\';

结束