WordPressデータベーステーブルの孤立キーを削除するにはどうすればよいですか?


10

特に表でwp_options。ほぼ2年間のブログ制作の後で、それは大幅に増加したように思われ、そこにどれほどのがらくたがあるか私にはわかりません。

孤立したキー/行を検索するために実行するWordPress 3.0または安全なクエリで動作するプラグインを知っていますか?

回答:


7

テーマやプラグインがwp_optionsテーブルにオプションを追加できるため、未使用のものをすべて削除し、それらを削除しないことを100%確実にするクエリはありません。それでも、少しの労力で、使用されていないものについてかなり良いアイデアを得て、削除するものと削除しないものを手動で決定できます。

次のコードを一時的にテーマのfunctions.phpファイルに挿入してから、公開サイトのすべての(種類の)ページにアクセスし、さらに重要なのは管理コンソールのすべての管理ページにアクセスします。それが終わったら、wp_optionsテーブルを開いてフィールドuse_count(以下のコードで追加)を見て、どのオプションがuse_countゼロに等しいかを確認します(使用カウントは、1より大きいもの以外はほとんど意味がないか、読み取られたり更新されたりします)このコードを追加してから少なくとも1回は)。

global $wpdb;
header('Content-Type:text/plain');
$results = $wpdb->get_results("SHOW COLUMNS FROM wp_options WHERE Field='use_count'");
if (count($results)==0) {
    $wpdb->query("ALTER TABLE {$wpdb->options} ADD COLUMN use_count int UNSIGNED NOT NULL DEFAULT '0' AFTER autoload");
}

add_action('all','monitor_get_option_usage');
function monitor_get_option_usage($filter){
    if (preg_match('#^option_(.*)$#',$filter)) {
        increment_option_use_count(substr($filter,7));
    }
}
add_action('updated_option','monitor_update_option_usage');
function monitor_update_option_usage($option){
    increment_option_use_count($option);
}
function increment_option_use_count($option) {
    global $wpdb;
    $wpdb->query("UPDATE {$wpdb->options} SET use_count = use_count + 1 WHERE option_name = '$option'");
}

これにより、おそらく、なくなってしまったプラグインに関連付けられているオプション、以前のテーマ、および初期に追加したが使用しなくなった独自のオプションを識別することができるでしょう。それらをすべてバックアップとしてエクスポートし(念のため)、削除しても問題のないものを削除します。完了したら、use_countフィールドを削除し(必要に応じて、フィールドが存在しても問題はありません)、functions.phpファイルから上記のコードも削除します。

これはまだ完璧ではありませんが、何もないよりはましです。それが役に立てば幸い?


私は思い強く、このためにmemcachedを/ INCR()の代わりに、DBへの書き込みの潜在的に膨大な量をお勧めします。
Denis de Bernardy、

3
@Denis -memcachedは高度なサーバー設定を必要とするため、ほとんどのWordPressサイトがホストされている共有サーバーでは不可能であり、これは1回限りまたは時折の診断ルーチンであるため、必要性を強調する理由がわかりませんこのユースケースの memcachedの場合?たぶん私は何かが足りないのですが、VPSまたは専用サーバーに移動してmemcachedを構成する方法または構成を取得する必要がある人が、まれに大量のデータベースヒットを回避するためにそうすべきである理由を詳しく教えてください。使用したメンテナンスルーチン?
MikeSchinkel

4

プラグインのClean Optionsは私にとってはうまく機能しました。作成者によるプラグインの説明は、必要なものに適合しているようです。「孤立したオプションを見つけて、wp_optionsテーブルから削除できるようにします。」

私はまだ個人的にWP-Optimizeを試していませんが、有望に見えます。そして、それはWP 2.7をサポートしていると述べています(一方、Clean OptionsはWP 2.3の明確なサポートについてのみ言及しています)。


2

これで必ずしも問題がなくなるわけではありませんwp_optionsが、私はWP-Optimizeを使用して、3.0サイトのデータベースサイズ設定に関する多くの問題を修正しました。不要な投稿の修正、スパムコメントを取り除き、多くの問題を自動的に修正できます。私のメインブログでは、DBは30MBから6MB未満に減り、現在はよりスムーズに実行されています。


1

私は自分のサイトでClean OptionsとWP_Optimizeの両方を実行しており、コンボはデータベースを適切な状態に保つという素晴らしい仕事をしています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.