Perf top sql by disk reads

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Type Script SQL*Plus de diagnostic
Vue source v$sqlarea
Voir aussi Perf top sql by buffer gets · Profil de performance

Perf top sql by disk reads liste les instructions SQL en mémoire (v$sqlarea) triées par nombre de lectures physiques (disk reads), c'est-à-dire les blocs lus depuis le disque faute de les trouver dans le buffer cache. Complémentaire de Perf top sql by buffer gets (lectures logiques).

Script

SET LINESIZE 145
SET PAGESIZE 9999
SET VERIFY   OFF

COLUMN username        FORMAT a18                  HEADING 'Username'
COLUMN disk_reads      FORMAT 999,999,999,999,999  HEADING 'Disk Reads'
COLUMN executions      FORMAT 999,999,999,999,999  HEADING 'Executions'
COLUMN reads_per_exec  FORMAT 999,999,999,999,999  HEADING 'Reads / Executions'
COLUMN sql                                         HEADING 'SQL Statement'

BREAK ON report
COMPUTE sum OF disk_reads     ON report
COMPUTE sum OF executions     ON report
COMPUTE sum OF reads_per_exec ON report

PROMPT
PROMPT =============================================
PROMPT SQL avec plus de 1000 disk reads
PROMPT =============================================

SELECT
    UPPER(b.username)                                       username
  , a.disk_reads                                             disk_reads
  , a.executions                                             executions
  , a.disk_reads / DECODE(a.executions, 0, 1, a.executions)  reads_per_exec
  , sql_text || CHR(10) || CHR(10)                           sql
FROM
    sys.v_$sqlarea a
  , dba_users      b
WHERE
      a.parsing_user_id = b.user_id
  AND a.disk_reads > 1000
  AND b.username NOT IN ('SYS', 'SYSTEM')
ORDER BY
    disk_reads DESC;

Un volume élevé de disk reads rapporté à peu d'executions oriente souvent vers un plan d'exécution sous-optimal (full scan sur une grosse table, index manquant ou statistiques obsolètes) plutôt que vers un simple manque de cache — à confirmer avec Requete plan execution sur la requête en cause.

Voir aussi