(oralce)pga_aggregate_target與workarea_size_policy相互關係驗證

来源:https://www.cnblogs.com/simple-oracle/archive/2019/04/09/10677231.html
-Advertisement-
Play Games

pga_aggregate_target與workarea_size_policy相互關係驗證 ...


pga_aggregate_target與workarea_size_policy相互關係驗證

 

先放上結論:

1. 當pga_aggregate_target設置為非0, 手工設置(workarea _size_policy設置為manual),這時使用的 manual管理模式,而不是auto管理模式

2. 當記憶體為自動管理時(2個條件同時滿足,pga_aggregate_target設置為非0,workarea _size_policy設置為auto),sort_area_size不生效;當記憶體為手動管理時(1個條件,workarea _size_policy設置為manual,不管pga_aggregate_target是什麼值),sort_area_size生效。

 

問題:

 

今日,從網上看到一篇總結pga方面參數配置的文章,其中提到<2>點,workarea _size_policy設置為manual,pga_aggregate_target設置為非0,會使用自動記憶體管理。

我對於其中的第二點持懷疑態度,遂做一個測試。

 

單個session的PGA記憶體使用量限制有比較多的概念,現在統一梳理一下:

1、關於PGA記憶體是自動管理還是手工管理,以及*_area_size(例如 sort_area_size)參數是否生效

workarea_size_policy:該參數定義資料庫PGA記憶體是否自動管理,同時涉及到SQL運行中各種記憶體參數設置是否生效;當PGA記憶體為自動記憶體管理(workarea_size_policy =auto),有關SQL運行的各種記憶體參數設置(例如sort_area_size 排序記憶體大小)均不生效,但至於SQL運行的各種記憶體參數設置生否真的生效,還與pga_aggregate_target值有關,具體如下:

(1)workarea _size_policy設置為auto,pga_aggregate_target設置為0 ,不會使用自動記憶體管理,因為當pga_aggregate_target設置為0時,workarea _size_policy自動設置為manual。

(2)workarea _size_policy設置為manual,pga_aggregate_target設置為非0,會使用自動記憶體管理。因為,如果設置pga_aggregate_targe為非0,workarea _size_policy自動設置為auto,因此,使用自動管理。

-- 經過自己的測試,這個說法是不正確的,當pga_aggregate_target設置為非0, 手工設置(workarea _size_policy設置為manual),這時使用的 manual管理模式,而不是auto管理模式

(3)如果不設置pga_aggregate_targe,那麼系統預設也是使用自動管理,並且設置該參數的值為SGA的20%和10M中較大的值。

總之:當記憶體為自動管理時(2個條件同時滿足,pga_aggregate_target設置為非0,workarea _size_policy設置為auto),sort_area_size不生效;當記憶體為手動管理時(1個條件,workarea _size_policy設置為manual,不管pga_aggregate_target是什麼值),sort_area_size生效。

 

測試:

 

主要通過看v$pgastat 的 如下4個指標來觀察到底用了什麼方式的pga管理,到底是 manual還是 auto

total PGA used for auto workareas          
maximum PGA used for auto workareas         
total PGA used for manual workareas         
maximum PGA used for manual workareas       

 

 

1.首先禁用AMM

memory_max_target                    big integer 0
memory_target                        big integer 0

 

2. 系統目前狀態, pga_aggregate_target=224M , workarea_size_policy= AUTO

71VDLD]C(O6)RZX6F31I}05

3. 手動設置 workarea_size_policy= manual

註釋: 在設置為manual之後,測試了一下重新將 pga_aggregate_target設置為另外一個值,這時並不會將workarea_size_policy自動設置為auto,看來官網上說的是從0設置為其他值時,才會將policy自動改為auto

G~]0QG}~)}$AG]CS)0SP259

4. 重啟實例,可以看到這4個相關指標都是0

H[S1UL{SF2$L_6J2F5~848J

5.創建測試表

SQL> create table x as select * from dba_objects;

Table created.

SQL> insert into x select * from x;

86672 rows created.

SQL> insert into x select * from x;

173344 rows created.

SQL> commit;

Commit complete.

 

6. 執行一個較大的排序查詢,select * from x order by OBJECT_ID,LAST_DDL_TIME;

7.再次觀察 v$pgastat , 

可以看出  manual的2個相關指標有變化了,而 auto都是0,這裡說明瞭 真實採用的是 manual方式。

}7N7`Y6L]40P1F_MY4JMD7S

8.改回 auto再試試

PETNM~N1P}7%H$W7_)VW{)2

9.執行sql前

total PGA used for auto workareas                                         0 bytes
maximum PGA used for auto workareas                                       0 bytes
total PGA used for manual workareas                                   67584 bytes
maximum PGA used for manual workareas                                274432 bytes

 

 

10.執行sql  select * from x order by OBJECT_ID,LAST_DDL_TIME;

11. 再次觀察,發現auto指標變化了, 而 manual毫無變化

 

total PGA used for auto workareas                                    429056 bytes
maximum PGA used for auto workareas                                 7204864 bytes
total PGA used for manual workareas                                   67584 bytes
maximum PGA used for manual workareas                                274432 bytes

 

12, 經過幾次反覆的驗證,證明瞭 pga是採用auto模式還是manual模式,是由參數  workarea_size_policy控制的,而跟 pga_aggrate_target沒關係。

 

結論:

 

2)workarea _size_policy設置為manual,pga_aggregate_target設置為非0,會使用自動記憶體管理。
因為,如果設置pga_aggregate_targe為非0,workarea _size_policy自動設置為auto,因此,使用自動管理。
-- 經過自己的測試,這個說法是不正確的,當pga_aggregate_target設置為非0, 手工設置(workarea _size_policy設置為manual),這時使用的 manual管理模式,而不是auto管理模式

 

 

總之:當記憶體為自動管理時(2個條件同時滿足,pga_aggregate_target設置為非0,workarea _size_policy設置為auto),sort_area_size不生效;

         當記憶體為手動管理時(1個條件,workarea _size_policy設置為manual,不管pga_aggregate_target是什麼值),sort_area_size生效。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • (一)neo4j安裝 neo4j有社區版本和企業版,社區版本是免費的,企業版本是收費的。在linux上安裝如下步驟: 1、將下載的neo4j-enterprise-3.4.0-unix.tar.gz包上傳到linux伺服器,並解壓。 2、設置$NEO4J_HOME也就是解壓圖資料庫安裝包所在的目錄到 ...
  • 本系列筆記是在看完《neo4j權威指南》基礎上做的記錄。方便於自己後面查閱!! 1.圖庫介紹 圖資料庫(Graph Database)是基於圖論實現的一種新型NoSQL資料庫。它的數據存儲結構和數據的查詢方式都是以圖論為基礎的。圖論中圖的基本元素為節點和邊,在圖資料庫中對應的就是節點和關係。在圖數據 ...
  • 1.起因: 需要導入一個sql文件,發現死活導不進去.當執行到這一句時,就有問題.經過一番搜索,原來是我的資料庫版本(原先Mysql版本5.5)低了,而支持該語句的版本應該是至少要5.7.那我索性就去Mysql官網去下載了個最新版本的(8.0.15). 2.過程: 那麼問題來了:有兩個解決方案.1. ...
  • 關於視圖的用法以及作用。 作用一: 提高了重用性,就像一個函數。如果要頻繁獲取user的name和goods的name。就應該使用以下sql語言。示例: select a.name as username, b.name as goodsname from user as a, goods as b ...
  • 背景 從mysql.slow_log 獲取慢查詢日誌很慢,該表是csv表,沒有索引。 想添加索引來加速訪問,而csv引擎不能添加索引(csv引擎存儲是以逗號分割的文本來存儲的),只能改存儲引擎來添加索引了 mysql.slow_log表能改成myisam,不能改成innodb mysql.gener ...
  • 元欄位是ES為每個文檔配置的內置欄位, 主要用於ES內部相關操作. ES有多種類型的元欄位, 在使用和提高性能方面有很強大的地方, 這篇文章列舉常用元欄位的功能和使用方法, 包括_index、_type、_source、_routing等, 歡迎交流吖~ ...
  • 本人是一名學生,正在學習過程中,所以筆記涵蓋的還不是很廣,不過也算基本夠用,希望以後能更加完善。 登陸資料庫 mysql -h 主機名 -u 用戶名 -p > mysql -u root -p 列出資料庫 show databases; 選擇資料庫 use 資料庫名; 查看當前資料庫 select ...
  • MySQL基礎 py全棧 [TOC] 一、引言 1、什麼是數據? 描述事物的符號記錄,可以使數字,也可以是文字,圖形、圖像等,數據有多種形式,它們都可以經過數字化存入電腦,數據的含義成為數據的語義 2、什麼是資料庫(DB)? 存儲數據的倉庫,是長期存放電腦內、有組織、可共用的大量數據的集合,數據 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...