システムメンテナンスについての雑記

 Copilotで”oracleでインデックスの再構築が必要な判定をするSQL”を入力したらそれっぽいSQLが出てきた

SELECT 
    i.owner,
    i.index_name,
    i.table_name,
    i.status,
    i.blevel,
    i.leaf_blocks,
    i.distinct_keys,
    i.clustering_factor,
    i.last_analyzed
FROM 
    dba_indexes i
WHERE 
    i.status = 'VALID'
    AND i.leaf_blocks > 0
    AND (
        (i.leaf_blocks / NULLIF(i.distinct_keys, 0)) > 4   -- 目安値: 4 以上
        OR i.blevel > 3                                    -- 目安値: 3 より大きい
    )
ORDER BY 
    i.owner, i.index_name;
インデックスが断片化するとパフォーマンスが落ちるのでインデックスの再構築が必須
昔は雑誌の付録とかドキュメントを見て書いたりしないとならなかったけど、今はAIが指針を示してくれる
プログラマーをやっているころに引用のSQLみたいのを流してインデックスの検索数が多かったけど、放置していたら別の人がインデックスの再構築をやって、2日後ぐらいに同じSQLを流したら1インデクスも引っかからなかった
プログラムはバインド変数を使うのでプログラム以外のSQLは履歴で目立つのかな
バインド変数を使えばSQLの構文解釈とかもキャッシュで処理されるのでコンピュータ資源の節約になる
あと、私はデータベースサーバーとwebサーバーのosのroot権限を持っていなかったのでソフトウェアのアップデートは出来なかった
oracleは開発者権限を持っていたので全SQLを実行できた
sqlを書くのはプログラマーの仕事だと思うけどインデックスの再構築はプログラマーの仕事か?
インデックスの再構築もSQLでやるんだけど

コメント

  1. 以上なら>=でないか?バグだな。さらに0除算の危険がないか?

    返信削除

コメントを投稿

このブログの人気の投稿

dlsiteでダウンロードしたzipファイルが解凍時に文字化けする件について

2024年12月29日、あすけんダイアリー、体重、食事、運動