構造の実行-SQLプロセス
SQLプリプロセッシング最適化プロセス
1)SQL分類:分類ツリーの生成、構文エラー/syntaxチェック(キーワードが使用できない、キーワードの順序が正しくない、または欠落している)、意味エラー/Semanticチェック(存在しないテーブル列、オブジェクト権限)
2)SQLの最適化:ディスクマネージャは、事前に収集したシステム/オブジェクト統計に基づいて、複数の実行パスを作成/比較し、最も効率的な方法を選択します.
3)低ソースの生成:SQL Optimizerが選択した実行パスを、低ソースジェネレータが担当する実際の実行可能コードまたはプロセスにマッピングします.
SELECT
クライアントSELECTリクエスト>サーバプロセスはShared Poolのライブラリキャッシュをチェックし、実行する予定がある場合はSoft Parting>がない場合は、ファイバマネージャが実行計画を作成します.Hard Parting>
ServerProcessはDB Buffer Cacheを読み込み、Selectセクションに該当するデータがある場合は、直ちにDB Buffer Cacheからデータを読み込み、結果をクライアントに表示します>
そうでない場合、Server Processはデータファイルからデータを読み込み、DB Buffer Cacheにアップロードしてクライアントに表示します.
INSERT
クライアントからINSERTリクエストが送信されました.>サーバ・プロセスは、データベース・バッファにデータを書き込みます.>データの読み込み時に、LGWRはその変更をRedo Log Bufferに書き込む
(システムがハングアップしている場合、DWBnがデータファイルのダウングレード前にコミットされている場合は、アクティブなログファイルを使用してリカバリできます/コミットされていない場合は、Redo Log BufferのUndoを使用してリカバリできます)>
その後、DBWnは、Redo Log Bufferに含まれるコンテンツをコミットするか、特定の期間にLGWRがRedo Log File>に到達すると、すぐにデータファイルに到達するのではなく、チェックポイントが発生したときにすべてのDirtyバッファをデータベースBuffer Cacheに格納します.
バッファキャッシュ
LGWRはRedoログファイルとして記録される。
擎天柱提示:擎天柱提示は命令であり、特殊な原因がなければ、そのまま実行し、提示を無視する場合は以下の通りである。
1. 문법적으로 맞지 않는 힌트
2. 잘못된 참조사용 : 없는 테이블이나 별칭(Alias)사용, 없는 인덱스명을 지정한경우
3. 논리적으로 불가능한 액세스경로
조인절에 등치(=) 조건이 하나도없는데 해시조건유도
테이블전체건수 count하는 쿼리에 null을 허용하는 단일컬럼으로 생성한 인덱스를 사용하도록 힌트지정
4. 의미적으로 맞지 않게 힌트 기술 : 서브쿼리에 unnest와 push_subq를 같이 기술하는등
5. 옵티마이저에 의해 내부적으로 쿼리가 변환된경우
6. 버그
オプティカル(光学式)ドライブのヒント
1. 힌트안에 인자나열시 콤마를 사용할 수 있지만, 힌트와 힌트 사이에 사용하면안된다.
2. 테이블을 지정할 때 스키마명까지 명시하면 안된다.
3. From절 테이블명 옆에 ALIAS를 지정했다면, 힌트에도 반드시 ALIAS를 사용해야 한다.
Reference
この問題について(構造の実行-SQLプロセス), 我々は、より多くの情報をここで見つけました https://velog.io/@tothek/SQL-수행구조-SQL처리과정テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol