手册:page表
↑ 手册:索引 | MediaWiki数据库布局 | page表 |
MediaWiki版本: | ≥ 1.5 |
page表可以称为“wiki的核心”。 MediaWiki中的每一个页面都在这张表中有一条使用标题作为标识的记录(entry),包含基本元数据。 这张表第一次被引入是在r6710,MediaWiki1.5的版本中。
页面中的文字存储在text 表中。 查找条目时,MediaWiki首先在page表中的$title字段进行搜寻。 然后,使用$latest在$revision表中搜索$id,并在此过程中获得$text_id。 为$text_id获取的值用于在文本表中搜索$old_id以检索文本。 删除页面后,修订将移动到archive 表。
字段
page_id
唯一标识主键值 这个值会在所有编辑与移动操作中保持。
当页面移动时,页面ID不会更改,但当页面删除然后恢复时,页面ID可能会更改。 从MediaWiki 1.27开始,历史页面ID保留在archive 表中,恢复后的页面尝试回收其旧页面ID。
For further information, see:
- Help:Page ID - aimed at users.
- Manual:Page ID - aimed at developers.
page_namespace
页面名称被分解为命名空间和标题。 The namespace keys are UI-language-independent constants, defined in includes/Defines.php.
此字段包含页面的名称空间的编号。 对于核心名称空间,值的范围为0到99,对于自定义名称空间,值的范围为100到10,000。
page_title
经过清理的页面标题,不带命名空间,最多255个字符(二进制)。 它能存储为文本,並將空格替换为下划线。 文章中显示的真正标题只是将下划线(_)转换为空格( )的标题。 例如,标题为“Talk:Foo Bar”的页面在该字段中将显示“Foo_Bar”。
page_is_redirect
这里的值“1
”表示文章是重定向的;在所有其他情况下为“0
”。
page_is_new
此字段存储页面是否为新页面,这意味着页面可能只有一个修订版本,或者自创建以来未被编辑过,即使有多个修订版本也是如此。
如果该字段包含值“1
”,则表示该页面是新的;否则为“0
”。
如果页面是新的,则不会显示回滚链接,因为没有东西可以回滚。
page_random
随机十进制值,介于0和1之间,用于Special:Random(有关详细信息,请参阅Manual:Random page )。 由wfRandom() 產生
在2005年左右,一个错误导致这些随机值不一致。 由于该字段是在页面创建时设置的,因此长期存在的维基可能仍具有其中的一些错误值。 见Bug #T208909。 See T208909.
page_touched
此时间戳在页面发生更改时更新,需要重新呈现,从而使缓存失效。 除了编辑之外,还包括权限更改、链接页面的创建或删除以及包含模板的更改。 在创建页面时设置$dbw->timestamp()。
page_links_updated
MediaWiki版本: | ≥ 1.23 |
每当重新解析页面时,都会更新此时间戳,并为其更新所有链接跟踪表。 这对于删除昂贵的反向链接更新作业非常有用。 当页面由WikiPage::insertOn() 创建时,设置为缺省值NULL。
page_latest
这是当前修订版本的rev_id的外键。
在页面创建过程中可能为0。
它需要链接到具有有效的Revision.rev_page的修订版本,否则当用户尝试查看该页面时,将会出现“页面“foo”的修订版#0不存在”的错误。
可以通过WikiPage::getLatest()
获得。
page_len
页面当前源文本的未压缩长度(以字节为单位)。
但是,这不适用于在该表中仍有记录的图像。
相反,使用文件的描述
的未压缩长度,因为后者在ext.old_text
字段中。
includes/WikiPage.php
中的Wikipage
类有两个方法,即负责填充这些详细信息的intertOn()
和updateRevisionOn()
。
page_content_model
MediaWiki版本: | ≥ 1.21 |
内容模型,请参阅Content_Model_XXX常量。 相当于revision.rev_content_model。
page_lang
MediaWiki版本: | ≥ 1.24 |
页面的内容语言 设置为创建页面时的默认值NULL。
page_restrictions
MediaWiki版本: | ≤ 1.9 |
一组用逗号分隔的权限键,指示谁可以移动或编辑页面。
编辑节和移动节之间用冒号分隔(例如,EDIT=AUTOMATED,SYSOP:MOVE=SYSOP
,这串代码代表允许“自动确认用户、管理员”编辑,允许“管理员”移动)。
MediaWiki版本: | 1.10 – 1.38 |
page_counter
MediaWiki版本: | ≤ 1.24 |
页面被查看的次数。 经过一个RFC流程,该功能在MediaWiki 1.25中被完全删除。 在此之前,许多网站,包括维基媒体项目禁用它,以提高性能;有关详细信息, 请参阅手册:$wgDisableCounters 。
titlevector
- Only used by PostgreSQL
Used instead of the searchindex table by PostgreSQL to facilitate fulltext search.
架构摘要
MediaWiki版本: | ≥ 1.43 |
DESCRIBE page;
+--------------------+---------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------------------+---------------------+------+-----+---------+----------------+ | page_id | int(10) unsigned | NO | PRI | NULL | auto_increment | | page_namespace | int(11) | NO | MUL | NULL | | | page_title | varbinary(255) | NO | | NULL | | | page_is_redirect | tinyint(3) unsigned | NO | MUL | 0 | | | page_is_new | tinyint(3) unsigned | NO | | 0 | | | page_random | double unsigned | NO | MUL | NULL | | | page_touched | binary(14) | NO | | NULL | | | page_links_updated | binary(14) | YES | | NULL | | | page_latest | int(10) unsigned | NO | | NULL | | | page_len | int(10) unsigned | NO | MUL | NULL | | | page_content_model | varbinary(32) | YES | | NULL | | | page_lang | varbinary(35) | YES | | NULL | | +--------------------+---------------------+------+-----+---------+----------------+
MediaWiki版本: | 1.39 – 1.42 |
DESCRIBE page;
+--------------------+---------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------------------+---------------------+------+-----+---------+----------------+ | page_id | int(10) unsigned | NO | PRI | NULL | auto_increment | | page_namespace | int(11) | NO | MUL | NULL | | | page_title | varbinary(255) | NO | | NULL | | | page_is_redirect | tinyint(3) unsigned | NO | MUL | 0 | | | page_is_new | tinyint(3) unsigned | NO | | 0 | | | page_random | double unsigned | NO | MUL | NULL | | | page_touched | binary(14) | NO | | NULL | | | page_links_updated | varbinary(14) | YES | | NULL | | | page_latest | int(10) unsigned | NO | | NULL | | | page_len | int(10) unsigned | NO | MUL | NULL | | | page_content_model | varbinary(32) | YES | | NULL | | | page_lang | varbinary(35) | YES | | NULL | | +--------------------+---------------------+------+-----+---------+----------------+
MediaWiki版本: | 1.36 – 1.38 Gerrit change 690067 |
DESCRIBE page;
+--------------------+---------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------------------+---------------------+------+-----+---------+----------------+ | page_id | int(10) unsigned | NO | PRI | NULL | auto_increment | | page_namespace | int(11) | NO | MUL | NULL | | | page_title | varbinary(255) | NO | | NULL | | | page_restrictions | tinyblob | YES | | NULL | | | page_is_redirect | tinyint(3) unsigned | NO | MUL | 0 | | | page_is_new | tinyint(3) unsigned | NO | | 0 | | | page_random | double unsigned | NO | MUL | NULL | | | page_touched | binary(14) | NO | | NULL | | | page_links_updated | varbinary(14) | YES | | NULL | | | page_latest | int(10) unsigned | NO | | NULL | | | page_len | int(10) unsigned | NO | MUL | NULL | | | page_content_model | varbinary(32) | YES | | NULL | | | page_lang | varbinary(35) | YES | | NULL | | +--------------------+---------------------+------+-----+---------+----------------+
MediaWiki版本: | 1.35 Gerrit change 581141 |
DESCRIBE page;
+--------------------+---------------------+------+-----+----------------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------------------+---------------------+------+-----+----------------+----------------+ | page_id | int(10) unsigned | NO | PRI | NULL | auto_increment | | page_namespace | int(11) | NO | MUL | NULL | | | page_title | varbinary(255) | NO | | NULL | | | page_restrictions | tinyblob | YES | | NULL | | | page_is_redirect | tinyint(3) unsigned | NO | MUL | 0 | | | page_is_new | tinyint(3) unsigned | NO | | 0 | | | page_random | double unsigned | NO | MUL | NULL | | | page_touched | binary(14) | NO | | | | | page_links_updated | varbinary(14) | YES | | NULL | | | page_latest | int(10) unsigned | NO | | NULL | | | page_len | int(10) unsigned | NO | MUL | NULL | | | page_content_model | varbinary(32) | YES | | NULL | | | page_lang | varbinary(35) | YES | | NULL | | +--------------------+---------------------+------+-----+----------------+----------------+
MediaWiki版本: | 1.25 – 1.34 Gerrit change 167655 |
DESCRIBE page;
+--------------------+---------------------+------+-----+----------------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------------------+---------------------+------+-----+----------------+----------------+ | page_id | int(10) unsigned | NO | PRI | NULL | auto_increment | | page_namespace | int(11) | NO | MUL | NULL | | | page_title | varbinary(255) | NO | | NULL | | | page_restrictions | tinyblob | NO | | NULL | | | page_is_redirect | tinyint(3) unsigned | NO | MUL | 0 | | | page_is_new | tinyint(3) unsigned | NO | | 0 | | | page_random | double unsigned | NO | MUL | NULL | | | page_touched | binary(14) | NO | | | | | page_links_updated | varbinary(14) | YES | | NULL | | | page_latest | int(10) unsigned | NO | | NULL | | | page_len | int(10) unsigned | NO | MUL | NULL | | | page_content_model | varbinary(32) | YES | | NULL | | | page_lang | varbinary(35) | YES | | NULL | | +--------------------+---------------------+------+-----+----------------+----------------+
MediaWiki版本: | 1.24 Gerrit change 135312 |
DESCRIBE page;
+--------------------+---------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------------------+---------------------+------+-----+---------+----------------+ | page_id | int(10) unsigned | NO | PRI | NULL | AUTO_INCREMENT | | page_namespace | int(11) | NO | MUL | NULL | | | page_title | varchar(255) binary | NO | | NULL | | | page_restrictions | tinyblob | NO | | NULL | | | page_counter | bigint(20) unsigned | NO | | 0 | | | page_is_redirect | tinyint(3) unsigned | NO | MUL | 0 | | | page_is_new | tinyint(3) unsigned | NO | | 0 | | | page_random | real unsigned | NO | MUL | NULL | | | page_touched | binary(14) | NO | | NULL | | | page_links_updated | varbinary(14) | YES | | NULL | | | page_latest | int(10) unsigned | NO | | NULL | | | page_len | int(10) unsigned | NO | MUL | NULL | | | page_content_model | varbinary(32) | YES | | NULL | | | page_lang | varbinary(35) | YES | | NULL | | +--------------------+---------------------+------+-----+---------+----------------+
MediaWiki版本: | 1.23 Gerrit change 101170 |
DESCRIBE page;
+--------------------+---------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------------------+---------------------+------+-----+---------+----------------+ | page_id | int(10) unsigned | NO | PRI | NULL | AUTO_INCREMENT | | page_namespace | int(11) | NO | MUL | NULL | | | page_title | varchar(255) binary | NO | | NULL | | | page_restrictions | tinyblob | NO | | NULL | | | page_counter | bigint(20) unsigned | NO | | 0 | | | page_is_redirect | tinyint(3) unsigned | NO | MUL | 0 | | | page_is_new | tinyint(3) unsigned | NO | | 0 | | | page_random | real unsigned | NO | MUL | NULL | | | page_touched | binary(14) | NO | | NULL | | | page_links_updated | varbinary(14) | YES | | NULL | | | page_latest | int(10) unsigned | NO | | NULL | | | page_len | int(10) unsigned | NO | MUL | NULL | | | page_content_model | varbinary(32) | YES | | NULL | | +--------------------+---------------------+------+-----+---------+----------------+
MediaWiki版本: | 1.21 – 1.22 |
DESCRIBE page;
+--------------------+---------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------------------+---------------------+------+-----+---------+----------------+ | page_id | int(10) unsigned | NO | PRI | NULL | AUTO_INCREMENT | | page_namespace | int(11) | NO | MUL | NULL | | | page_title | varchar(255) binary | NO | | NULL | | | page_restrictions | tinyblob | NO | | NULL | | | page_counter | bigint(20) unsigned | NO | | 0 | | | page_is_redirect | tinyint(3) unsigned | NO | MUL | 0 | | | page_is_new | tinyint(3) unsigned | NO | | 0 | | | page_random | real unsigned | NO | MUL | NULL | | | page_touched | binary(14) | NO | | NULL | | | page_latest | int(10) unsigned | NO | | NULL | | | page_len | int(10) unsigned | NO | MUL | NULL | | | page_content_model | varbinary(32) | YES | | NULL | | +--------------------+---------------------+------+-----+---------+----------------+
MediaWiki版本: | 1.19 – 1.20 |
DESCRIBE page;
+-------------------+---------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------------+---------------------+------+-----+---------+----------------+ | page_id | int(10) unsigned | NO | PRI | NULL | AUTO_INCREMENT | | page_namespace | int(11) | NO | MUL | NULL | | | page_title | varchar(255) binary | NO | | NULL | | | page_restrictions | tinyblob | NO | | NULL | | | page_counter | bigint(20) unsigned | NO | | 0 | | | page_is_redirect | tinyint(3) unsigned | NO | MUL | 0 | | | page_is_new | tinyint(3) unsigned | NO | | 0 | | | page_random | real unsigned | NO | MUL | NULL | | | page_touched | binary(14) | NO | | NULL | | | page_latest | int(10) unsigned | NO | | NULL | | | page_len | int(10) unsigned | NO | MUL | NULL | | +-------------------+---------------------+------+-----+---------+----------------+
MediaWiki版本: | 1.10 – 1.18 |
DESCRIBE page;
+-------------------+---------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------------+---------------------+------+-----+---------+----------------+ | page_id | int(10) unsigned | NO | PRI | NULL | AUTO_INCREMENT | | page_namespace | int(11) | NO | MUL | NULL | | | page_title | varchar(255) binary | NO | | NULL | | | page_restrictions | tinyblob | NO | | NULL | | | page_counter | bigint(20) unsigned | NO | | 0 | | | page_is_redirect | tinyint(3) unsigned | NO | | 0 | | | page_is_new | tinyint(3) unsigned | NO | | 0 | | | page_random | real unsigned | NO | MUL | NULL | | | page_touched | binary(14) | NO | | NULL | | | page_latest | int(10) unsigned | NO | | NULL | | | page_len | int(10) unsigned | NO | MUL | NULL | | +-------------------+---------------------+------+-----+---------+----------------+
MediaWiki版本: | 1.5 – 1.9 |
DESCRIBE page;
+-------------------+---------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------------+---------------------+------+-----+---------+----------------+ | page_id | int(8) unsigned | NO | PRI | NULL | AUTO_INCREMENT | | page_namespace | int(11) | NO | MUL | NULL | | | page_title | varchar(255) binary | NO | | NULL | | | page_restrictions | tinyblob | NO | | NULL | | | page_counter | bigint(20) unsigned | NO | | 0 | | | page_is_redirect | tinyint(1) unsigned | NO | | 0 | | | page_is_new | tinyint(1) unsigned | NO | | 0 | | | page_random | real unsigned | NO | MUL | NULL | | | page_touched | char(14) binary | NO | | NULL | | | page_latest | int(8) unsigned | NO | | NULL | | | page_len | int(8) unsigned | NO | MUL | NULL | | +-------------------+---------------------+------+-----+---------+----------------+
索引
MediaWiki版本: | ≥ 1.28 |
SHOW INDEX IN page;
+-------+------------+-----------------------------+--------------+------------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ | Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | +-------+------------+-----------------------------+--------------+------------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ | page | 0 | PRIMARY | 1 | page_id | A | 0 | NULL | NULL | | BTREE | | | | page | 0 | page_name_title | 1 | page_namespace | A | 0 | NULL | NULL | | BTREE | | | | page | 0 | page_name_title | 2 | page_title | A | 0 | NULL | NULL | | BTREE | | | | page | 1 | page_random | 1 | page_random | A | 0 | NULL | NULL | | BTREE | | | | page | 1 | page_len | 1 | page_len | A | 0 | NULL | NULL | | BTREE | | | | page | 1 | page_redirect_namespace_len | 1 | page_is_redirect | A | 0 | NULL | NULL | | BTREE | | | | page | 1 | page_redirect_namespace_len | 2 | page_namespace | A | 0 | NULL | NULL | | BTREE | | | | page | 1 | page_redirect_namespace_len | 3 | page_len | A | 0 | NULL | NULL | | BTREE | | | +-------+------------+-----------------------------+--------------+------------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
示例MySQL代码
列出页面以及与其他基本表格的关系
以下代码将选择所有文章的最新版本,假设压缩或外部存储系统未在使用中:
SELECT page_id, page_namespace, page_title, page_latest "rev_id", old_text "text"
FROM page
INNER JOIN slots on page_latest = slot_revision_id
INNER JOIN slot_roles on slot_role_id = role_id and role_name = 'main'
INNER JOIN content on slot_content_id = content_id inner join text on substring( content_address, 4 ) = old_id and left( content_address, 3 ) = "tt:" and old_flags = "utf-8";
其它重要考虑:
- 要在名字空间中查找页面,请添加
p.page_namespace = 0
- 要查找不是重定向的页面,请添加
p.page_is_redirect = 0
这些附加语句可以作为条件添加到WHERE语句中,也可以作为相应的INNER JOIN
语句上的条件添加。