HandleidingːTabel Page
↑ Handleiding:Inhoud | MediaWiki database lay-out | page tabel |
MediaWiki-versie: | ≥ 1.5 |
De tabel page kan gezien worden als behorend tot de "kern van de wiki". Elke pagina in een MediaWiki installatie heeft hier een record die bepaald wordt op de de titel en die wat essentiële metadata bevat. Het is toegevoegd in r6710, in MediaWiki 1.5.
De tekst van de pagina zelf wordt opgeslagen in de tabel text .
Om de tekst van een artikel op te halen, zoekt MediaWiki eerst op page_title in de tabel page
.
Daarna wordt page_latest gebruikt om in de tabel revision te zoeken naar rev_id , het rev_text_id wordt in dit proces verkregen.
De opgehaalde waarde van rev_text_id wordt gebruikt om old_id in de tabel text
op te zoeken, dan wordt de tekst opgehaald.
Bij het verwijderen van een pagina worden de revisies verplaatst naar de tabel archive .
page
, alle revisies van die pagina in de tabel revision
en alle tekstrijen die alleen overeenkomen met de pagina in de tabel text
. Dit kan worden gedaan door het verwijderen van de pagina-rij en het daarna uitvoeren van maintenance/deleteOrphanedRevisions.php.
Velden
page_id
Unieke identificatie primaire sleutel. Deze waarde wordt bewaard in bewerkingen en hernoemingen.
Een ID van een pagina verandert niet wanneer de pagina verplaatst wordt, maar het ID kan veranderen wanneer een pagina wordt verwijderd en vervolgens wordt hersteld. Vanaf MediaWiki 1.27, blijft het historische ID in de tabel archive staan en proberen de herstelde pagina's hun oude ID weer te krijgen.
Zie voor meer informatie:
- Help:Page ID - gericht op gebruikers.
- Manual:Page ID - gericht op ontwikkelaars.
page_namespace
Een pagina-naam wordt in een namespace en een titel opgedeeld. De namespace keys zijn UI-taal-onafhankelijke constanten, gedefinieerd in includes/Defines.php.
Dit veld bevat het nummer van de namespace van de pagina. De waarden variëren van 0 tot 99 voor de core namespaces en van 100 tot 10.000 voor aangepaste namespaces.
page_title
De opgeschoonde paginatitel, zonder de namespace, met een maximum van 255 tekens (binair). Het wordt als tekst opgeslagen, waarbij spaties door underscores worden vervangen. De echte titel wordt in de artikelen getoond, waarbij de underscores (_) in de titel worden omgezet in spaties ( ). Bijvoorbeeld, een pagina met de titel "Talk:Foo Bar" zou "Foo_Bar" in dit veld hebben.
page_is_redirect
De waarde 1
geeft hier aan dat het artikel een doorverwijzing (redirect) is; het is 0
als het geen doorverwijzing is.
page_is_new
Dit veld slaat op of de pagina nieuw is, wat betekent dat deze slechts één revisie heeft of niet is bewerkt sinds die pagina hersteld is, zelfs als er meer dan één revisie is.
Als het veld de waarde 1
bevat, geeft dit aan dat de pagina nieuw is; anders is het 0
.
Terugdraai koppelingen worden niet weergegeven als de pagina nieuw is, omdat er niets terug te draaien is.
page_random
Willekeurige decimale waarde, tussen 0 en 1, gebruikt voor Special:Random (zie Manual:Random page voor meer details). Gegenereerd door wfRandom() .
Rond 2005 zorgde een bug ervoor dat deze willekeurige waarden niet-uniform waren. Aangezien het veld is ingesteld bij het maken van pagina's, kunnen wiki's die al lange tijd bestaan nog steeds enkele van deze foutieve waarden hebben. Zie T208909.
page_touched
Deze timestamp wordt bijgewerkt wanneer de pagina zodanig verandert dat deze opnieuw moet worden opgebouw, waardoor caches ongeldig worden. Afgezien van het bewerken, omvat dit wijzigingen van rechten, het maken of verwijderen van gekoppelde pagina's en het veranderen van de in de inhoud opgenomen sjablonen. Doe $dbw->timestamp() bij het maken van de pagina.
page_links_updated
MediaWiki-versie: | ≥ 1.23 |
Deze timestamp wordt bijgewerkt wanneer een pagina opnieuw wordt geparseerd en de link volgende tabellen worden bijgewerkt. Dit is handig voor het voorkomen van dubbele dure backlink updates. Stel de standaardwaarde in op NULL wanneer de pagina wordt gemaakt door WikiPage::insertOn() .
page_latest
Dit is een foreign key naar rev_id voor de huidige revisie.
Het kan 0 zijn tijdens het maken van pagina's.
Het moet linken naar een revisie met een geldige revision.rev_page, anders zal er de foutmelding "De revisie #0 van de pagina met de naam 'Foo' bestaat niet" zijn wanneer men de pagina probeert te bekijken.
Kan worden verkregen met WikiPage::getLatest()
.
page_len
Oncomprimeerde lengte in bytes van de huidige bronstekst van de pagina.
Dit geldt echter niet voor afbeeldingen die nog in deze tabel zijn opgenomen.
In plaats daarvan wordt de ongecomprimeerde lengte in bytes van de description
voor het bestand gebruikt omdat het laatste in het veld text.old_text
staat.
De class Wikipage
in includes/WikiPage.php
heeft twee methoden, namelijk insertOn()
en updateRevisionOn()
die verantwoordelijk zijn voor het invullen van deze details.
page_content_model
MediaWiki-versie: | ≥ 1.21 |
Inhoudsmodel, zie CONTENT_MODEL_XXX constanten. Vergelijkbaar met revision.rev_content_model.
page_lang
MediaWiki-versie: | ≥ 1.24 |
Pagina-inhoud taal. Stel de standaardwaarde van NULL in op het moment van het maken van de pagina.
page_restrictions
MediaWiki-versie: | ≤ 1.9 |
Kommagescheiden lijst van rechten-keys die aangeven wie de pagina kan verplaatsen of bewerken. De secties 'edit' en 'move' worden gescheiden door een dubbele punt (bijv. "edit=autoconfirmed,sysop:move=sysop").
MediaWiki-versies: | 1.10 – 1.38 |
page_counter
MediaWiki-versie: | ≤ 1.24 |
Het aantal keren dat de pagina is bekeken. Deze functie is volledig verwijderd in MediaWiki 1.25, na een verzoek om commentaar. Zelfs daarvoor hebben veel sites, waaronder Wikimedia-projecten, het uitgeschakeld om de prestaties te verhogen; zie Manual:$wgDisableCounters voor details.
titlevector
- Alleen gebruikt door PostgreSQL
Gebruikt in plaats van de tabel searchindex door PostgreSQL om het zoeken in fulltext te vergemakkelijken.
Schema samenvatting
MediaWiki-versie: | ≥ 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-versies: | 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-versies: | 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-versie: | 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-versies: | 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-versie: | 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-versie: | 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-versies: | 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-versies: | 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-versies: | 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-versies: | 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 | | +-------------------+---------------------+------+-----+---------+----------------+
Indexes
MediaWiki-versie: | ≥ 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 | | | +-------+------------+-----------------------------+--------------+------------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
Voorbeeld MySQL code
Lijstpagina's en relaties met andere essentiële tabellen
Met de volgende code worden de meest recente versies van alle artikelen geselecteerd, ervan uitgaande er geen compressie of externe opslag gebruikt wordt:
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";
Andere belangrijke overwegingen:
- om pagina's te vinden in namespace 0 voeg
p.page_namespace = 0
toe - om pagina's te vinden die geen doorverwijzing zijn, voeg
p.page_is_redirect = 0
toe
Deze aanvullende statements kunnen worden toegevoegd als voorwaarden aan een Where-uitdrukking of als voorwaarden aan het passende INNER JOIN
statement .