自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Oracle redo的條目主要包含的內(nèi)容

數(shù)據(jù)庫(kù) Oracle
以下的文章主要描述的是Oracle Redo并行的機(jī)制,如果你對(duì)Oracle Redo并行的機(jī)制的相關(guān)內(nèi)容感興趣的話,你就可以瀏覽以下的文章了。

Redo log 的主要功能是用于恢復(fù)與一個(gè)相關(guān)高級(jí)特性的十分重要的數(shù)據(jù),一個(gè)Oracle redo的條目主要包含了其實(shí)際操作導(dǎo)致的Oracle數(shù)據(jù)庫(kù)變化的全部信息,所有redo條目最終都要被寫入redo文件中去。

Redo log buffer是為了避免Oracle Redo文件IO導(dǎo)致性能瓶頸而在sga中分配出的一塊內(nèi)存。

一個(gè)redo條目首先在用戶內(nèi)存(PGA)中產(chǎn)生,然后由oracle服務(wù)進(jìn)程拷貝到log buffer中,當(dāng)滿足一定條件時(shí),再由LGWR進(jìn)程寫入redo文件。由于log buffer是一塊“共享”內(nèi)存,為了避免沖突,它是受到redo allocation latch保護(hù)的,每個(gè)服務(wù)進(jìn)程需要先獲取到該latch才能分配redo buffer。因此在高并發(fā)且數(shù)據(jù)修改頻繁的oltp系統(tǒng)中,我們通??梢杂^察到redo allocation latch的等待。

Oracle Redo寫入redo buffer的整個(gè)過程如下:

在PGA中生產(chǎn)Redo Enrey -> 服務(wù)進(jìn)程獲取Redo Copy latch(存在多個(gè)---CPU_COUNT*2) -> 服務(wù)進(jìn)程獲取redo allocation latch(僅1個(gè)) -> 分配log buffer -> 釋放redo allocation latch -> 將Redo Entry寫入Log Buffer -> 釋放Redo Copy latch;

shared strand

為了減少redo allocation latch等待,在oracle 9.2中,引入了log buffer的并行機(jī)制。其基本原理就是,將log buffer劃分為多個(gè)小的buffer,這些小的buffer被成為strand(為了和之后出現(xiàn)的private strand區(qū)別,它們被稱之為shared strand)。

每一個(gè)strand受到一個(gè)單獨(dú)redo allocation latch的保護(hù)。多個(gè)shared strand的出現(xiàn),使原來序列化的redo buffer分配變成了并行的過程,從而減少了rOracle edo allocation latch等待。

shared strand的初始數(shù)據(jù)量是由參數(shù)log_parallelism控制的;在10g中,該參數(shù)成為隱含參數(shù),并新增參數(shù)_log_parallelism_max控制shared strand的***數(shù)量;_log_parallelism_dynamic則控制是否允許shared strand數(shù)量在_log_parallelism和_log_parallelism_max之間動(dòng)態(tài)變化。

  1. HELLODBA.COM>select nam.ksppinm, val.KSPPSTVL, nam.ksppdesc   
  2. 2 from sys.x$ksppi nam,   
  3. 3 sys.x$ksppsv val   
  4. 4 where nam.indx = val.indx   
  5. 5 --AND nam.ksppinm LIKE '_%'   
  6. 6 AND upper(nam.ksppinm) LIKE '%LOG_PARALLE%';   
  7. KSPPINM KSPPSTVL KSPPDESC   
  8. _log_parallelism 1 Number of log buffer strands   
  9. _log_parallelism_max 2 Maximum number of log buffer strands   
  10. _log_parallelism_dynamic TRUE Enable dynamic strands   

每一個(gè)shared strand的大小 = log_buffer/(shared strand數(shù)量)。strand信息可以由表x$kcrfstrand查到(包含shared strand和后面介紹的private strand,10g以后存在)?!?/p>

  1. HELLODBA.COM>select indx,strand_size_kcrfa from x$kcrfstrand where last_buf_kcrfa != '00';   
  2. INDX STRAND_SIZE_KCRFA   
  3. 0 3514368   
  4. 1 3514368   
  5. HELLODBA.COM>show parameter log_buffer   
  6. NAME TYPE VALUE   
  7. log_buffer integer 7028736  

關(guān)于shared strand的數(shù)量設(shè)置,16個(gè)cpu之內(nèi)***默認(rèn)為2,當(dāng)系統(tǒng)中存在Oracle redo allocation latch等待時(shí),每增加16個(gè)cpu可以考慮增加1個(gè)strand,***不應(yīng)該超過8。并且_log_parallelism_max不允許大于cpu_count。

注意:在11g中,參數(shù)_log_parallelism被取消,shared strand數(shù)量由_log_parallelism_max、_log_parallelism_dynamic和cpu_count控制。

 

Private strand

為了進(jìn)一步降低Oracle redo buffer沖突,在10g中引入了新的strand機(jī)制——Private strand。Private strand不是從log buffer中劃分的,而是在shared pool中分配的一塊內(nèi)存空間。 

以上的相關(guān)內(nèi)容就是對(duì)Oracle Redo并行機(jī)制的部分內(nèi)容的介紹,望你能有所收獲。

【編輯推薦】

  1. Oracle查詢記錄數(shù)在什么環(huán)境下會(huì)出現(xiàn)問題?
  2. LTO歸檔解決方案容量、性能和功能介紹
  3. Oracle字符集的查看與修改全集
  4. Oracle 分頁(yè)和排序功能在數(shù)據(jù)庫(kù)中如何實(shí)現(xiàn)?
  5. Oracle移植到MySQL會(huì)碰到那些問題?
責(zé)任編輯:佚名 來源: 博客園
相關(guān)推薦

2011-03-24 17:21:42

Oracle數(shù)據(jù)庫(kù)Redo故障

2010-04-12 14:25:04

Oracle備份

2011-08-16 19:27:53

ORACLE GOLD

2010-04-08 15:15:16

Oracle套件

2010-04-30 13:44:36

Oracle Redo

2010-01-06 09:30:51

Oracle Redo

2009-12-03 18:38:57

Visual Stud

2010-04-06 10:11:11

Oracle備份

2011-05-26 09:36:07

Oracle數(shù)據(jù)庫(kù)Redo故障

2010-04-22 10:22:31

Oracle開放Top

2010-04-06 14:58:38

Oracle透明網(wǎng)關(guān)

2019-05-06 15:27:48

Oracle數(shù)據(jù)庫(kù)數(shù)據(jù)

2010-04-26 16:51:11

Oracle Deco

2010-04-20 09:22:27

Oracle 復(fù)合類型

2025-01-20 08:20:00

redo logMySQL數(shù)據(jù)庫(kù)

2010-04-26 09:51:54

Oracle OCP

2009-05-12 10:36:38

OracleREDO恢復(fù)

2011-06-03 16:30:39

2010-04-06 17:36:15

Oracle數(shù)據(jù)字典

2010-04-15 15:59:31

Oracle11g
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)