Manual:page テーブル
↑ Manual:コンテンツ | MediaWiki のデータベース レイアウト | page テーブル |
MediaWiki バージョン: | ≧ 1.5 |
page テーブルは「ウィキの中核」とみなすことができます。 このテーブルには、ある一つのMediaWiki内にある各ページに対応したエントリーがあります。エントリーはタイトルによって識別され、そのほかにもいくつかの不可欠なメタデータも含まれています。 それは MediaWiki 1.5 のリビジョン r6710 で初めて導入されました。
ページの内容そのものは text テーブルに保存されます。
記事の内容を取り出す際、MediaWiki は page
テーブルの page_title をまず検索します。
そして revision テーブルの rev_id から page_latest と一致する値を検索し、rev_text_id を得ます。
得られた rev_text_id を text
テーブルの old_id から検索し、ページ内容を取り出します。
ページが削除されると、各リビジョンは archive テーブルに移動されます。
page
テーブル内にある削除対象ページのエントリーを削除し、かつ revision
テーブルにあるそのページの版もすべて削除してください。また、text
テーブルからそのページに関する行だけをすべて削除してください。 この操作を行うには、まず削除対象ページに関する行を削除し、それから maintenance/deleteOrphanedRevisions.php を実行します。
フィールド
page_id
一意に識別される主キーです。 この値はページの編集や移動を行っても保持されます。
ページIDはページを移動しても変わりませんが、ページを削除しその後復元したときは変わるかもしれません。 MediaWiki 1.27以降、削除前のページIDは archive テーブルに保持され、復元されたページは以前のページIDを再利用しようとします。
For further information, see:
- Help:ページ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つしかないか、または複数の版があっても復元されてからまだ編集されていないことを意味します。
このフィールドに 1
の値が設定されていたら、そのページは新しいことを意味します。そうでなければこの値は 0
になります。
そのページが新しかった場合、巻き戻しリンクは表示されません。 なぜなら巻き戻す先がないからです。
page_random
0と1の間にあるランダムな十進数値。Special:Random に使われます (詳細は Manual:おまかせ表示 を参照してください)。 wfRandom() によって生成されます。
2005年頃、バグによりこのランダム値が不均一になりました。このフィールドはページ作成時に設定されるため、長期間運営されてきたウィキではまだこの誤った値が一部残っているかもしれません。 See T208909.
page_touched
このタイムスタンプの更新は、ページの変更がレンダーの実行を必要するとき、キャッシュを無効化して実行されます。 編集以外にも、対象は許可の変更、リンク元ページの作成や削除、また含まれるテンプレートに変更があった場合を含みます。 ページ作成時に $dbw->timestamp() に設定されます。
page_links_updated
MediaWiki バージョン: | ≧ 1.23 |
このタイムスタンプの更新は、特定のページが再パーシングされ、結果としてトラックテーブルが更新された時に実施されます。 これは高価なバックリンク更新ジョブの複製を停止させるのに役立ちます。 WikiPage::insertOn() 経由でページが作成された時、既定値 NULL に設定されます。
page_latest
This is a foreign key to rev_id for the current revision.
ページ作成中は 0 のことがあります。
It needs to link to a revision with a valid revision.rev_page, or there will be the "The revision #0 of the page named 'Foo' does not exist" error when one tries to view the page.
WikiPage::getLatest()
から取得可能。
page_len
当該ページの現状のソースページを参照、圧縮していない幅をバイトで指定。
This however, does not apply to images which still have records in this table.
Instead, the uncompressed length in bytes of the description
for the file is used as the latter is in the text.old_text
field.
The Wikipage
class in includes/WikiPage.php
has two methods, viz. insertOn()
and updateRevisionOn()
that are responsible for populating these details.
page_content_model
MediaWiki バージョン: | ≧ 1.21 |
Content model, see CONTENT_MODEL_XXX constants. Comparable to revision.rev_content_model.
page_lang
MediaWiki バージョン: | ≧ 1.24 |
ページ本文の言語です。 ページ作成時の既定値 NULL に設定されます。
page_restrictions
MediaWiki バージョン: | ≦ 1.9 |
誰がページの移動や編集をできるのかを示す許可値のリストをコンマ区切りで記したもの。 edit 部分と move 部分はコロンで区切ります (例: "edit=autoconfirmed,sysop:move=sysop")
MediaWiki バージョン: | 1.10 – 1.38 |
page_counter
MediaWiki バージョン: | ≦ 1.24 |
ページが閲覧された回数。 この機能はコメント募集 (RFC) に従い、MediaWiki 1.25で完全に除去されました。 その前から、ウィキメディアのプロジェクト群を含む多くのサイトでパフォーマンス向上のためこの機能は無効化されていました。詳細は Manual:$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";
Other important considerations:
- to find pages in namespace 0 add
p.page_namespace = 0
- to find pages that are not redirects add
p.page_is_redirect = 0
These additional statements can be added either as conditions to a Where statement or as conditions on the appropriate INNER JOIN
statement.