資料庫管理-第123期 Oracle相關兩個引數(202301205)

yhw1809發表於2023-12-05

資料庫管理-第123期 Oracle相關兩個引數(202301205)

最近在群聊中看到倆和Oracle資料庫相關的倆引數,一個是Oracle資料庫本身的,一個是來自於Weblogic的,挺有趣的,本期研究一下。(本期涉及引數講解均以Oracle DB 19c或WLS 12.2.1.4.0為準)

1 db_flash_cache_file/db_flash_cache_size

乍眼一看,還以為和閃回有關,但是細看發現是flash cache,檢視Oracle Database 19c-Database Concepts-Memory Architecture部分官方文件,這個一個是否開啟並配置Flash Cache功能的引數。Flash Cache的體系結構大致如下:

cncpt304.gif

啟動Flash Cache(或叫Smart Flash Cache,智慧快閃記憶體快取)的目的與記憶體buffer cache一致,將經常訪問的資料塊放到快取裡,這裡將這部分緩衝區快取可以位於快閃記憶體中。此緩衝區快取擴充套件儲存在一個或多個快閃記憶體磁碟裝置上,這些裝置是使用快閃記憶體的固態儲存裝置。資料庫可以透過在快閃記憶體中快取緩衝區而不是從磁碟讀取來提高效能。(這裡需要注意的是,該功能只能在Solaris或Oracle Linux上開啟)
當Flash cache開啟時,DBW可以將一個clean buffer寫入快閃記憶體快取,從而實現其記憶體buffer的重用。資料庫將buffer頭儲存在主儲存器的LRU列表中,以跟蹤快閃記憶體中buffer的狀態和位置。如果以後需要這個buffer,那麼資料庫可以從快閃記憶體中讀取,而不是從磁碟中讀取。
該功能本質是對記憶體buffer cache的一種容量擴充套件或者磁碟熱資料的升級,使用Flash cache中快取的buffer仍然需要將對應buffer刷入記憶體中使用,但是可以透過Flash Card的高效能實現IO層面的加速。
關於Flash Cache的兩個引數使用方式如下:
DB_FLASH_CACHE_FILE指定用於資料庫智慧快閃記憶體的快閃記憶體記憶體或表示快閃記憶體集合的磁碟組的檔名。最多可以配置16個檔名。
DB_FLASH_CACHE_SIZE指定資料庫智慧快閃記憶體的大小。此引數只能在例項啟動時指定。與上面引數內容一一對應,最多16個。大小限制為0(不啟用),16M至(2048G-塊大小)。

db_flash_cache_file = /dev/raw/sda, /dev/raw/sdb, /dev/raw/sdc
db_flash_cache_size = 32G, 32G, 64G
db_flash_cache_size = 32G, 0, 64G

Flash Cache這個引數我是沒有用過的,感覺在RAC上意義也不是太大,而我這大多數又在Exadata上。

2 Statement Cache

Statement Cache是Weblogic Server(WLS)中用於自帶JDBC連線池的一個配置引數:

To improve performance, WebLogic Server can cache prepared and callable statements used in your applications (enabled by default). When an application or EJB calls any of the statements stored in the cache, WebLogic Server reuses the statement stored in the cache. Each database connection in a data source has it’s own statement cache.
為了提高效能,WebLogic Server可以快取應用程式中使用的準備好的和可呼叫的語句(預設情況下啟用)。當應用程式或EJB呼叫儲存在快取中的任何語句時,WebLogic Server會重用儲存在快取內的語句。資料來源中的每個資料庫連線都有自己的語句快取。

在Configuration: Connect Pool的配置中Statement Cache Type可以指定使用LRU或Fixed方式來選擇快取的語句,而Statement Cache Size則指定每個資料來源例項的每個連線要快取的語句數。

僅僅透過官方文件,我們很容易將Statement Cache理解成WLS中介軟體層快取資料,然而在MOS文件**What does Statement Cache Size mean? (Doc ID 1298036.1)**中,對Statement Cache如何發揮作用有更加全面、深入的解釋:

從MOS文件可以看到Statement Cache本質上還是在資料庫層面透過遊標來維持對應語句處於open狀態,在下一次執行語句時可以直接執行。這個功能並沒有將語句的任何資訊快取在WLS中。同時開啟該功能,配置不合理還可能出現遊標耗盡,OOM等問題。

總結

本期介紹了Oracle DB和WLS中兩個比較有趣的配置引數。
老規矩,知道寫了些啥。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31466763/viewspace-2998816/,如需轉載,請註明出處,否則將追究法律責任。

相關文章