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 updateOracle
- Oracle中select ... for update的用法Oracle
- select for update
- select for update nowait 與 select for update 區別AI
- Oracle中select for update ...一些區別Oracle
- SELECT ... FOR UPDATE SKIP LOCKED;
- 關於 select ... for update 和 for update nowaitAI
- select for update nowaitAI
- SQL update select語句SQL
- 從一條select語句看Oracle資料庫查詢工作原理Oracle資料庫
- ORACLE RAC工作原理Oracle
- 從一條select語句看Oracle資料庫查詢工作原理 - 轉Oracle資料庫
- sql查詢更新update selectSQL
- Default Locking for INSERT, UPDATE, DELETE, and SELECT ... FOR UPDATE (351)delete
- 深入理解SELECT ... LOCK IN SHARE MODE和SELECT ... FOR UPDATE
- MysqL_select for update鎖詳解MySql
- select for update與autocommit關係MIT
- 使用select監視update的操作
- mysql update join,insert select 語法MySql
- mysql innodb之select for update nowaitMySqlAI
- UPDATE SET = (SELECT ) 語法的總結
- Oracle資料庫封鎖和select...[for update [of tab.col]]的研究Oracle資料庫
- 如何插入insert_update,delete_select特殊字元&到oracle表中delete字元Oracle
- 轉_楊大師_如何阻止oracle使用者直接select for update某表Oracle
- Oracle 的Lgwr Worker的工作原理Oracle
- SQLite語句(二):INSERT DELETE UPDATE SELECTSQLitedelete
- 【Mysql】兩條select for update引起的死鎖MySql
- 【MySQL】select for update 的Row Lock 與Table LockMySql
- oracle database link (dblink) 工作原理OracleDatabase
- 2016年工作中遇到的問題1-10:select-for-update鎖表
- MySQL中SELECT+UPDATE併發更新問題MySql
- update/select也可能產生buffer busy waits。AI
- DBeaver如何生成select,update,delete,insert語句delete
- golang select底層原理Golang
- Oracle中的for update 和 for update nowaitOracleAI
- 記一次 MySQL select for update 死鎖問題MySql
- 1120 11g select for update skip locked
- MySQL 5.7 SELECT ... LOCK IN SHARE MODE|FOR UPDATE語句說明MySql