sql >> データベース >  >> RDS >> PostgreSQL

断片化されたインデックスを見つけてPostgreSQLで最適化するにはどうすればよいですか?

    通常、それについてはまったく心配する必要はありません。

    ただし、大量の削除または更新が行われた場合、または持続的な変更率が高すぎて自動バキュームが追いつかない場合は、インデックスがひどく肥大化する可能性があります。

    そのIDをpgstattupleで判別するためのツール 拡張子:

    CREATE EXTENSION pgstattuple;
    

    次に、次のようにインデックスの肥大化を調べることができます:

    SELECT * FROM pgstatindex('spatial_ref_sys_pkey');
    
    -[ RECORD 1 ]------+-------
    version            | 2
    tree_level         | 1
    index_size         | 196608
    root_block_no      | 3
    internal_pages     | 1
    leaf_pages         | 22
    empty_pages        | 0
    deleted_pages      | 0
    avg_leaf_density   | 64.48
    leaf_fragmentation | 13.64
    

    このインデックスは優れた形です(使用されていません):膨満感はわずか14%です。

    インデックスはデフォルトでfillfactorで作成されることに注意してください 90の場合、つまり、インデックスブロックはINSERTによって90%を超えて埋められません。 。

    インデックスが肥大化した時期を判断するのは難しいですが、leaf_fragmentation 50〜60を超えると、それほどきれいではありません。

    インデックスを再編成するには、REINDEXを使用します 。



    1. mysql-apt-configで「OK」を選択できませんでした[Ubuntu14.04]

    2. 日付を事前定義された形式と比較するplsql

    3. MySQLがテキストファイルに書き込む

    4. 日付でグループ化されたMySQL累積合計