操作者の移行
歴史的に、MediaWiki は利用者 (版や画像の作者など) への参照を [<ID>, <名前>]
の対 (匿名利用者の場合は [0, <IP アドレス>]
) で格納してきました。
これは格納容量の無駄であり、版が大量にあるウィキでパフォーマンスの問題点を生じたため、利用者名の変更や作者の新しい種類 (T133452 など) の導入が非常に困難になりました。
MediaWiki 1.31 では actors (操作者: 編集、記録項目のような操作をする人。現在は登録利用者または匿名利用者) の概念と、新しいデータベース スキーマへの移行過程を導入します。この移行では revision.rev_user
や revision.rev_user_text
のようなフィールドが revision.rev_actor
に差し替えられます。
英語版ウィキペディアの revision
テーブルのサイズが膨大であり、変更を完了させるには移行を完全に終わらせる必要があるため、この移行は MediaWiki の複数回のリリースに渡って徐々に実行されました。
MediaWiki 1.39 で完了しました。
移行では個別の *_user
/ *_user_text
の対ごとに actor テーブル レコードが作成され、それらの対は actor の行 ID への参照に差し替えられました。
以下のカラムが移行されました:
テーブル | 旧カラム | 新カラム |
---|---|---|
revision | rev_user, rev_user_text | rev_actor |
archive | ar_user, ar_user_text | ar_actor |
ipblocks | ipb_by, ipb_by_text | ipb_by_actor |
image | img_user, img_user_text | img_actor |
oldimage | oi_user, oi_user_text | oi_actor |
filearchive | fa_user, fa_user_text | fa_actor |
recentchanges | rc_user, rc_user_text | rc_actor |
logging | log_user, log_user_text | log_actor |
大規模なウィキペディア ウィキ群の非常に巨大な revision
テーブルで、コストが大きい ALTER TABLE を実行するのを回避するため、まず rev_user
および rev_user_text
を revision_actor_temp テーブルにコピーしてから revision
テーブルに書き戻しました。
その後、revision_actor_temp
テーブルは削除されました。
あなたがウィキ所有者である場合は、おそらく何もする必要がありません。update.php
を実行した際に、この移行が自動的に実行されます。
移行がいつ実行されるかを制御したい場合は、$wgActorTableSchemaMigrationStage および migrateActors.php メンテナンス スクリプトを参照してください。
あなたが拡張機能の開発者であり、移行が影響するデータベース フィールドに拡張機能が直接アクセスする場合は、クエリを更新する必要があります (クエリを手動で構築する代わりに、getQueryInfo()
メソッド (例: Revision::getQueryInfo()
) を使用するのが理想的です)。
移行期間中は、あらゆる $wgActorTableSchemaMigrationStage
設定を考慮したスキーマ/フィールド情報を取得できる ActorMigration
を使用することもできます。
あなたが Toolforge を使用している開発者である場合は、移行が影響するフィールドを直接使用しない場合でも、パフォーマンスに影響を及ぼすかもしれません。 追加的な情報は wikitech:News/Actor storage changes on the Wiki Replicas を参照してください。