sql語句執行過程小結
sql語句執行過程
客戶端程式連線到db
我的測試是:當伺服器監聽是啟動狀態的時候,遠端客戶端可以連到mount狀態和open狀態的db,當db在nomount狀態時候檢視監聽的狀
態會發現已經有服務註冊了,但是遠端客戶端連線會報錯為:ora-12528:TNS:監聽程式:所有的例程都無法建立連線
db分配一個伺服器程式service process來和user process通訊。
對於專用伺服器方式下的每一個user process伺服器端都會產生一個server process負責進行通訊,至於共享伺服器模式,db會維護少量的伺服器程式以排程程式呼叫伺服器程式來處理客戶端請求。
對於server process來執行客戶端發出的sql語句而不是由instance的後臺程式來執行sql語句,原因應該是對於少量使用者和小併發的環境來說也許 oracle可以維護相關的後臺程式來處理sql語句,但是使用者量和併發性的問題會導致這種由後臺程式處理sql語句的方式面對一個瓶頸,而由 server process來處理的話會很好的避免這個瓶頸(dba的思想天空)。(對於dml,ddl,dcl等語句也是由server process產生redo日誌寫到redo log buffer中,而後快取中的日誌是由lgwr程式寫到聯機重做日誌檔案中的)。
如果沒有在shared pool的library cache中找到相同的執行計劃則會進行硬解析。找到相同的執行計劃則為軟解析,相對於硬解析來說軟解析也需要進行語法,語義和物件許可權等進行檢視,只是不需要再生成執行計劃。
如果在db buffer cache中找不到相關資料,則由server process負責從磁碟上的dbf檔案(想起我大學的dnf練到剛剛覺醒的狂戰了)中讀資料--物理讀(會發生物理i/o),而dbwn程式則是負責從 db buffer cache中向dbf檔案上寫資料。如果在db buffer cache中找到資料則屬於邏輯讀(進行邏輯i/o)。
關於邏輯i/o(記憶體讀l) 和 物理i/o(物理讀p),sql的命中率是l/l+p(邏輯讀比邏輯讀+物理讀)。命中率低是一定有問題,但是命中率高不一定沒有問題,要關心的是每秒的物理讀和邏輯讀。(vmstat和iostat是檢視狀態的兩個命令)。(簡略,待續...)
客戶端程式連線到db
我的測試是:當伺服器監聽是啟動狀態的時候,遠端客戶端可以連到mount狀態和open狀態的db,當db在nomount狀態時候檢視監聽的狀
態會發現已經有服務註冊了,但是遠端客戶端連線會報錯為:ora-12528:TNS:監聽程式:所有的例程都無法建立連線
db分配一個伺服器程式service process來和user process通訊。
對於專用伺服器方式下的每一個user process伺服器端都會產生一個server process負責進行通訊,至於共享伺服器模式,db會維護少量的伺服器程式以排程程式呼叫伺服器程式來處理客戶端請求。
對於server process來執行客戶端發出的sql語句而不是由instance的後臺程式來執行sql語句,原因應該是對於少量使用者和小併發的環境來說也許 oracle可以維護相關的後臺程式來處理sql語句,但是使用者量和併發性的問題會導致這種由後臺程式處理sql語句的方式面對一個瓶頸,而由 server process來處理的話會很好的避免這個瓶頸(dba的思想天空)。(對於dml,ddl,dcl等語句也是由server process產生redo日誌寫到redo log buffer中,而後快取中的日誌是由lgwr程式寫到聯機重做日誌檔案中的)。
如果沒有在shared pool的library cache中找到相同的執行計劃則會進行硬解析。找到相同的執行計劃則為軟解析,相對於硬解析來說軟解析也需要進行語法,語義和物件許可權等進行檢視,只是不需要再生成執行計劃。
如果在db buffer cache中找不到相關資料,則由server process負責從磁碟上的dbf檔案(想起我大學的dnf練到剛剛覺醒的狂戰了)中讀資料--物理讀(會發生物理i/o),而dbwn程式則是負責從 db buffer cache中向dbf檔案上寫資料。如果在db buffer cache中找到資料則屬於邏輯讀(進行邏輯i/o)。
關於邏輯i/o(記憶體讀l) 和 物理i/o(物理讀p),sql的命中率是l/l+p(邏輯讀比邏輯讀+物理讀)。命中率低是一定有問題,但是命中率高不一定沒有問題,要關心的是每秒的物理讀和邏輯讀。(vmstat和iostat是檢視狀態的兩個命令)。(簡略,待續...)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29117696/viewspace-1075585/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- mysql執行sql語句過程MySql
- SQL語句執行過程詳解SQL
- CoreData執行過程的sql語句SQL
- 剖析SQL語句的執行過程SQL
- Oracle SQL 語句的執行過程OracleSQL
- 一條sql語句的執行過程SQL
- 淺談SQL語句的執行過程SQL
- 10_SQL語句執行過程剖析SQL
- 理解oracle執行sql語句的過程OracleSQL
- Oracle資料庫SQL語句執行過程Oracle資料庫SQL
- GaussDB SQL查詢語句執行過程解析SQL
- ORACLE sql 語句的執行過程(SQL效能調整)OracleSQL
- 在.NET中用儲存過程執行SQL語句儲存過程SQL
- MySQL探祕(二):SQL語句執行過程詳解MySql
- [20170703]SQL語句分析執行過程.txtSQL
- Mybatis原始碼分析(五)探究SQL語句的執行過程MyBatis原始碼SQL
- 小覷資料庫(SqlServer)查詢語句執行過程資料庫SQLServer
- 由SQL語句執行過程觸發對Oracle體系結構的思考SQLOracle
- 通過分析SQL語句的執行計劃優化SQL語句SQL優化
- MySQL系列之一條SQL查詢語句的執行過程MySql
- 通過分析SQL語句的執行計劃優化SQL(總結)SQL優化
- Entity Framework Code First執行SQL語句、檢視及儲存過程FrameworkSQL儲存過程
- sql語句批量執行SQL
- 透過分析SQL語句的執行計劃最佳化SQL(總結)SQL
- 查詢Oracle正在執行和執行過的SQL語句OracleSQL
- MySQL 查詢語句執行過程淺析MySql
- [zebra原始碼]分片語句ShardPreparedStatement執行過程原始碼
- PostgreSQL的insert語句執行過程分析SQL
- 【體系結構】sql語句解析過程小實驗 軟解析、硬解析SQL
- MYSQL 常用sql語句小結MySql
- sql 執行過程SQL
- SQL語句的處理過程SQL
- 15個常用sql語句 分支 迴圈 子查詢 儲存過程 事務 常用函式 sql語句執行過程(轉載備用)SQL儲存過程函式
- MySQL SQL語句查詢執行過程的四個階段介紹MySql
- [轉]透過分析SQL語句的執行計劃最佳化SQL(總結)SQL
- 使用SQL TRACE和TKPROF觀察SQL語句執行結果SQL
- sql語句如何執行的SQL
- SQL語句執行順序SQL