oracle connection,select,update 工作原理
1.理解connection ..session..transaction.知道何時開始與結束
2.connection的工作原理
connection是如何驗證的
SQL> conn sys/a123@demo as sysdba當輸入此條語句結束後.
第一步:伺服器程式會透過sqlnet.ora驗證
我的sqlnet.ora是這樣的:
SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
那麼,客戶端就會首先在tnsnames.ora檔案中找demo的記錄.當發現是本地解析時(TNSNAMES)就會進行
第二步: 讀取tnsnames.ora檔案:
DEMO =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = xiaoke)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = demo)
)
)
連線的是xiaoke這臺機器的1521埠的database_sid=demo(用tcp協議).
3.select的工作原理
以 "select column from table"為例
分為三個階段:parse(解析)
execute執行)
fetch(取回)
看起來,是很簡單的事情,其實Oracle做了很複雜的事情.
一)parse(解析)
當客服端發出select命令後,伺服器程式會搜尋共享池中的庫快取記憶體,看有沒有相同的執行語句,如果有的話,就會直接執行.如果沒有的話,伺服器程式就會進行以下的步驟:
1)語法分析
2)分析表,列(驗證存在與否)
3)獲得物件的解析鎖(不能改變表的結構,但可以改變表的內容)
4)驗證對物件操縱的許可權
5)把執行計劃寫入到庫快取記憶體
二)execute(執行)
此階段比較簡單,伺服器程式會在資料庫緩衝區中尋找table,如果沒找到table就會在資料檔案中讀出table到資料庫緩衝區,此階段結束,如果找到了,此階段結束.
三)
fetch(提取)
伺服器程式提取資料給使用者
4.update的工作原理
update的工作分為兩個階段:
parse(解析) execute(執行)
1)parse(解析)
parser階段和select語句的parser階段原理差不多.其中當用到表,列及使用者的許可權的時候,伺服器程式會在資料字典快取記憶體區中去找,看是否存在,當不存在時,就會到硬碟上去取資料到資料字典快取記憶體中.
2)execute
當解析階段把執行計劃寫入到庫快取記憶體中後,就會開始了執行階段.首先伺服器程式會檢查資料庫快取記憶體區中尋找表,列名,當找到後,對列加鎖.然後執行更新,舊的資料就會寫到undo buffer中去,同時undo_buffer與資料庫緩衝區的變化寫到redo log buffer中.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/21340813/viewspace-615428/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle中select for update ...一些區別Oracle
- select for update
- 深入理解SELECT ... LOCK IN SHARE MODE和SELECT ... FOR UPDATE
- sql查詢更新update selectSQL
- mysql update join,insert select 語法MySql
- Oracle中的for update 和 for update nowaitOracleAI
- SQLite語句(二):INSERT DELETE UPDATE SELECTSQLitedelete
- Oracle 的Lgwr Worker的工作原理Oracle
- Oracle table selectOracle
- DBeaver如何生成select,update,delete,insert語句delete
- MySQL中SELECT+UPDATE併發更新問題MySql
- 記一次 MySQL select for update 死鎖問題MySql
- oracle update left join查詢Oracle
- Oracle Critical Patch Update for October 2022Oracle
- golang select底層原理Golang
- Oracle DUL的工作原理和技術實現Oracle
- 由select for update鎖等待問題引發的深入思考
- java-Mybatis XML 對映器(select,insert, update 和 delete)JavaMyBatisXMLdelete
- ORACLE多表關聯UPDATE語句Oracle
- ORACLE SELECT INTO NO_DATA_FOUND問題Oracle
- 圖解Go select語句原理圖解Go
- mysql 高併發 select update 併發更新問題解決方案MySql
- Laravel5.6 如何列印 SQL?insert/update/select 列印方法總結LaravelSQL
- Oracle\MS SQL Server Update多表關聯更新OracleSQLServer
- Oracle中 Update和insert結合語法Oracle
- Sqoop從Oracle抽數錯:IO Error: Connection resetOOPOracleError
- 如何讓oracle的select強制走索引Oracle索引
- QZ面試被問select......for update會鎖表還是鎖行lor面試
- KubernetesAPIserver工作原理APIServer
- Mybatis工作原理MyBatis
- require工作原理UI
- HTTPS工作原理HTTP
- Nginx工作原理Nginx
- pr工作原理
- SpringMVC工作原理SpringMVC
- 筆記:Oracle - sys_guid()直接select亂碼筆記OracleGUI
- ORACLE sql merge into update where條件位置與效能消耗OracleSQL
- Django筆記十三之select_for_update等選擇和更新等相關操作Django筆記
- nacos Connection refused (Connection refused)