Shared SQL Areas和Private SQL Areas
Shared SQL Areas和Private SQL Areas
Oracle 用Shared SQL Areas和Private SQL Areas描述每個SQL語句。當兩個使用者使用相同SQL語句時,Oracle可以在Shared SQL Areas中識別出來,並且重複利用。但是每個使用者必須在Private SQL Areas擁有自己的一份SQL語句拷貝。
Shared SQL area包含了用於執行SQL語句的計劃,Shared SQL area為了節省記憶體,儲存一些常用的SQL語句。
當一條SQL語句解析出來時,Oracle從shared area分配記憶體,分配記憶體的大小由解析的語句決定。如果所有的shared area已經用完,Oracle會根據LRU邏輯釋放足夠的記憶體。再次碰到這些SQL語句,就需要重新解析一次。
1)shared sql area:
當一個sql語句第一次被執行的時候,那麼資料庫就會使用shared sql area 去處理折條語句,這個區域是共享的,可以被其他使用者所訪問,其中包含了語句的執行分析樹以及執行計劃。在這個區域中每個shared sql area為一個唯一的語句存在。(詳細內容將在sga和shared pool中進行說明)
2)private sql area
當一個會話執行一個sql語句的時候,這個私有sql area 就會在pga中進行分配了。每個session都會有一個private sql area,如果執行同一個sql那麼會指向同一個shared sql area。
eg:我執行了select * from t在一個session中執行20此和在10個不同的session執行同樣這條語句,那麼會共享同樣的sql語句執行計劃。但是private area 可能是不能夠被共享的,因為其中可能儲存的不同的變數值和資料。
其實我們在進行dml以及ddl操作的時候隱含的都是開啟cursor,每個遊標都作為客戶端一邊指向服務端的一條指標,每個遊標開啟都會分配相應的private sql area。因此在應用開發的過程中應該及時釋放關閉遊標,釋放記憶體佔用,以提高記憶體使用率。
Oracle 用Shared SQL Areas和Private SQL Areas描述每個SQL語句。當兩個使用者使用相同SQL語句時,Oracle可以在Shared SQL Areas中識別出來,並且重複利用。但是每個使用者必須在Private SQL Areas擁有自己的一份SQL語句拷貝。
Shared SQL area包含了用於執行SQL語句的計劃,Shared SQL area為了節省記憶體,儲存一些常用的SQL語句。
當一條SQL語句解析出來時,Oracle從shared area分配記憶體,分配記憶體的大小由解析的語句決定。如果所有的shared area已經用完,Oracle會根據LRU邏輯釋放足夠的記憶體。再次碰到這些SQL語句,就需要重新解析一次。
1)shared sql area:
當一個sql語句第一次被執行的時候,那麼資料庫就會使用shared sql area 去處理折條語句,這個區域是共享的,可以被其他使用者所訪問,其中包含了語句的執行分析樹以及執行計劃。在這個區域中每個shared sql area為一個唯一的語句存在。(詳細內容將在sga和shared pool中進行說明)
2)private sql area
當一個會話執行一個sql語句的時候,這個私有sql area 就會在pga中進行分配了。每個session都會有一個private sql area,如果執行同一個sql那麼會指向同一個shared sql area。
eg:我執行了select * from t在一個session中執行20此和在10個不同的session執行同樣這條語句,那麼會共享同樣的sql語句執行計劃。但是private area 可能是不能夠被共享的,因為其中可能儲存的不同的變數值和資料。
其實我們在進行dml以及ddl操作的時候隱含的都是開啟cursor,每個遊標都作為客戶端一邊指向服務端的一條指標,每個遊標開啟都會分配相應的private sql area。因此在應用開發的過程中應該及時釋放關閉遊標,釋放記憶體佔用,以提高記憶體使用率。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29196873/viewspace-1090133/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Shared SQL Areas and Private SQL Areas (87)SQL
- Shared SQL Areas (88)SQL
- Cursors and SQL Areas (99)SQL
- SQL Work Areas(101)SQL
- Overview of the Program Global Areas (97)View
- Software Code Areas (105)
- Oracle discoverer中exp/imp Business Areas (BAs) 和foldersOracle
- It is worth mentioning it is also one of the main areasAI
- 6.4 滾動區域(Scrolling Areas)
- sql_shared_cursor (轉)SQL
- Shared SQL Dependency Management (249)SQL
- shared_pool_spare_free.sqlSQL
- shared SQL,parent cursor,child cursorSQL
- Ubuntu elasticsearch max virtual memory areas vm.max_map_count [65530] is too low, increase to at leUbuntuElasticsearch
- v$sql v$sqlarea v$sql_shared_cursor及遊標SQL
- sql執行計劃_v$sqlarea_v$sql_v$sql_shared_cursorSQL
- PL/SQL Program Units and the Shared Pool (89)SQL
- Docker安裝 elasticsearch 報錯max virtual memory areas vm.max_map_count [65530] is too lowDockerElasticsearch
- shared_pool的sql命中率SQL
- 【PL/SQL】在PL/SQL中執行重新整理Shared Pool命令SQL
- 【Shared Pool】使用DBMS_SHARED_POOL包將PL/SQL大物件儲存到Shared PoolSQL物件
- cursor_sharing與v$sqlarea_v$sql_v$sql_shared_cursorSQL
- v$sql v$sqlarea v$sql_shared_cursor及父遊標,子游標SQL
- sql%notfound、sql%rowcount和returnSQL
- v$sql_shared_cursor中的BIND_MISMATCHSQL
- 使用DBMS_SHARED_POOL包將PL/SQL大物件儲存到Shared PoolSQL物件
- SQL Server 管理常用的SQL和T-SQLSQLServer
- sql tuning task和sql profileSQL
- V$SQL_SHARED_CURSOR檢視硬解析的原因SQL
- SQL在shared pool中的解析過程問題SQL
- 11G can flush one SQL Cursor out of shared poolSQL
- 檢視v$sql_shared_cursor檢視獲取sql語句為什麼不能共享?SQL
- sql devloper 用法的和SQL 編寫SQLdev
- PL/SQL Profiler 和SQL Developer 報表SQLDeveloper
- SQL Union和SQL Union All用法(轉)SQL
- 清除shared pool中某條sql的執行計劃SQL
- 共享SQL區在shared pool中釋放的條件SQL
- SQL Plan Baseline與Shared Cursor機制研究(一)SQL