Le processus d'exécution de l'instruction SQL dans Oracle

Plusieurs grands souvenirs de mémoire partagée

1) pool partagé ( pool partagé): La
fonction principale est d'améliorer l'efficacité d'exécution des instructions SQL et des instructions PL / SQL, des instructions SQL exécutées en cache, des plans d'exécution; blocs de code d'instructions PL / SQL, codes d'exécution, etc. (cette partie est appelée cache bibliothèque); et lors de la compilation SQL, les instructions PL / SQL sont référencées par les informations du dictionnaire de données (cette partie est appelée cache de dictionnaire ou cache de lignes). C'est l'une des parties les plus importantes de SGA.
2) cache de la mémoire tampon de la base de données (tampon de la base de données): La
fonction principale est de mettre en cache les blocs de données qui ont été lus.Toutes les modifications apportées aux données de la base de données Oracle sont effectuées dans le cache de la mémoire tampon. Parce que toutes les opérations doivent d'abord lire le bloc de données sur le fichier physique dans le cache de la mémoire tampon, puis effectuer diverses opérations. Le cache tampon est la plus grande zone de mémoire du SGA et l'une des parties les plus importantes du SGA.
3) tampon de journalisation ( tampon de journalisation):
mettez en cache les enregistrements de journalisation générés, et le processus d'écriture en arrière-plan du journal écrira les enregistrements dans le tampon de journalisation sur le disque. C'est également l'une des parties les plus importantes de SGA.
4) Large pool (large pool):
pool de mémoire optionnel, sa fonction principale est de partager la pression du pool partagé. Dans certains cas, tels que la sauvegarde et la restauration, si le grand pool n'est pas alloué, la mémoire sera allouée à partir du pool partagé, ce qui augmentera la charge du pool partagé.
5) Java pool (Java pool):
utilisé pour les programmes Java.
6) piscine de ruisseau:
La zone de mémoire utilisée par la base de données dans le travail de flux.

processus d'exécution SQL

Le processus serveur porte sql ---> allez dans le cache de la libray pour trouver le plan d'exécution précédent

1. Le client entre une instruction SQL.

2. L'instruction sql est transmise à l'instance de base de données oracle via le réseau.

3. Le processus serveur reçoit des instructions SQL.

*oracle实例将sql语句解析成sql执行计划,然后才能执行
*解析的时候会消耗I/O、CPU,查询执行的sql涉及到的视图等系列资源有没有权限,或者是否存在

 

4. Modifiez les données dans le pool partagé (mettez en cache l'instruction sql et analysez le plan d'exécution)

Le plan d'exécution met en cache les données du fichier DBF dans le cache de la mémoire tampon et le processus DBWriter écrit le fichier DBF. Le processus DBWriter possède son propre mécanisme d'écriture.

5. Le processus serveur modifie la table et génère un journal. Le journal est mis en cache dans la mémoire tampon de rétablissement et écrit dans le fichier redo.log par le processus LogWriter. Le processus LogWriter possède son propre mécanisme d'écriture

Autrement dit, le processus serveur est utilisé du côté utilisateur, le processus d'arrière-plan écrit des données et l'utilisateur est préoccupé par la vitesse de traitement du processus serveur.

 

Le rôle du pool partagé dans l'exécution SQL:

Mettez en cache le plan d'exécution SQL couramment utilisé dans le SP pour réduire les étapes d'analyse. Si certaines sont utilisées directement dans le SP, sinon, une nouvelle analyse est générée. Cette série d'actions est exécutée par le processus serveur.

Cache de tampon:

Réduire le taux d'utilisation des E / S implique un concept, le taux de réussite.

Analyse difficile de l'instruction SQL

Le pool de fragments est à peu près divisé en 3 parties

1. Espace libre.

2. Espace cache de la bibliothèque.

3. Cache de dictionnaire (cache de lignes), qui met en cache les propres informations d'Oracle.

--查询shard pool 主要组成的cache size

select * from v$sgastat a where a.NAME = 'library cache';
select * from v$sgastat a where a.pool = 'shared pool' and a.NAME = 'free memory';
select * from v$sgastat a where a.NAME = 'row cache';

Type d'analyse de l'instruction SQL

Analyse douce

Analyse rigoureuse

Le plan d'exécution est introuvable dans le cache de la bibliothèque et une analyse matérielle se produit, qui consomme des ressources.

--查询软解析和硬解析的次数,软硬解析的具体情况
--我们期望软解析多,硬解析多的时候需要引起注意
select name,value from v$sysstat where name like 'parse%'

Je suppose que tu aimes

Origine blog.csdn.net/weixin_41086692/article/details/103006817
conseillé
Classement