主题分表功能可将 forum_thread 表 (包含主题标题、创建时间等信息,但不包含主题及回复内容) 分在多个数据表中,减轻单表的访问压力,提高网站运行效率,适合主题数很多并且运行效率受到影响的站点使用。

主题分表有两种类型:主表和存档表。

1 、主题分表功能可将 forum_thread 表 (包含主题标题、创建时间等信息,但不包含主题及回复内容) 分在多个数据表中;

2 、创建新的主题存档表后,可使用主题移动功能将特定主题移动到存档表中;

3 、移动到存档表中的主题,会在主题所在的版块下建立一个存档区 (名称可自定义),通过存档区可浏览存档表中的主题;

4 、存档表中的主题,只供浏览,不可回复、评分,不能进行管理操作,但可以删除和移动到非存档区。

首先,根据主题表大小,建立存档表,存档表以 pre_forum_thread_数字 自动命名,如下图所示,建立了一个存档表:

../../_images/threadfen_1.gif

一、分表管理

主题分表中其中主表有且只有一个,用于存放新主题;存档表可有任意多个,其中的主题,只供浏览,不可回复、评分,不能进行管理操作,但可以删除和移动到非存档区。

../../_images/threadfen_2.gif

第一次访问主题分表功能,会看到默认拥有一个主表,名称为 pre_forum_thread,此表为安装 Discuz! 后的标准主题表。此主表信息不可删除,不可更改。

新添加的存档表会自动以 「pre_forum_thread_数字」 的方式进行命名,无需人工干预。

点击列表下方的 「添加存档表」,便可以添加一个新的存档表。

创建新的主题存档表后,可使用主题移动功能将特定主题移动到存档表中。移动到存档表中的主题,会在主题所在的版块下建立一个存档区 (名称可自定义),通过存档区可浏览存档表中的主题。修改该存档表在板块的显示名称后,点击列表下方的 「更新表信息」 来保存修改。

「更新版块存档」 用于更新在主题存档表中的主题所在的所有版块的主题存档信息。例如有两个主题存档表,这两个表中的主题属于 A 、 B 、 C 三个版块,「更新版块存档」 后,便会在这些版块出现存档区的显示提示;反之,如果某一个版块中没有主题存在于主题存档表中,则会通过 「更新版块存档」 来删除此板块出现的存档区。如下图所示:

../../_images/threadfen_3.gif

点击每个主题分表后面的 「删除」 可以删除该分表,只有空表可以被删除。

二、主题移动

主题移动功能可将特定的主题在原始表 (forum_thread) 和新建的主题存档表之间移动。移动主题之前,请确定存在至少一个主题存档表 (表名为 forum_thread_1 、 forum_thread_2……) 。

主题移动涉及大量的数据转移,需要关闭论坛后使用。为防止数据库在移动过程中出现问题,请先进行数据备份。

移动主题需要两步:

1 、根据提供的条件搜索出要移动的主题

../../_images/threadfen_4.gif

「搜索 thread 分表」 会列出主题表存在的所有分表,指定其中一个主题分表,在其中进行搜索。

点击 「更多选项」 会出现更多搜索条件。

../../_images/threadfen_5.gif

2 、选择搜索出的主题,然后选择目标分表,进行主题移动。

../../_images/threadfen_6.gif

移动操作可能需要一段时间,请耐心等待。

移动之后,可以从分表管理的分表列表中查看到每个分表的主题数。

最后,需要给大家说明的是分表功能可以将主题、帖子分在不同的数据表中,适合帖子量很大并且运行效率受到影响的站点,我们建议您考虑对帖子和主题进行分表,把主题和帖子表这个存放大量主题帖子的表分成若干个表,大大减少数据库查询的时间,降低数据库 「无谓」 的消耗。