システムメンテナンスについての雑記
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でやるんだけど
以上なら>=でないか?バグだな。さらに0除算の危険がないか?
返信削除