什麼是高速緩存技術:
高速緩存英文是cache。一種特殊的存儲器子系統,其中復制了頻繁使用的數據,以利於CPU快速訪問。存儲器的高速緩沖存儲器存儲了頻繁訪問的 RAM 位置的內容及這些數據項的存儲地址。當處理器引用存儲器中的某地址時,高速緩沖存儲器便檢查是否存有該地址。如果存有該地址,則將數據返回處理器;如果沒有保存該地址,則進行常規的存儲器訪問。因為高速緩沖存儲器總是比主RAM 存儲器速度快,所以當 RAM 的訪問速度低於微處理器的速度時,常使用高速緩沖存儲器。
高速緩存的作用:
在CPU開始執行任何指令之前,都會首先從內存中取得該條指令以及其它一些相關數據和信息。為了加快CPU的運行速度,幾乎所有的晶元都採用兩種不同類型的內部存儲器,即高速緩存。緩存被用來臨時存放一些經常被使用的程序片段或數據。
一級高速緩存是性能最好緩存類型,與解釋指令和執行算術運算的處理單元一到構成CPU的核心。CPU可以在全速運行的狀態下讀取存放在一級高速緩存中的指令或數據。Intel的處理器產品一般都會具有32K的一級緩存,而象AMD或Via這種競爭對手的產品則會使用更多的一級緩存。
如果在一級緩存中沒有找到所需要的指令或數據,處理器會查看容量更大的二級緩存。二級緩存既可以被集成到CPU晶元內部,也可以作為外部緩存。Pentium II處理器具有512K的二級緩存,工作速度相當於CPU速度的一半。Celeron以及更新的Pentium III晶元則分別具有128K和256K的在片二級緩存,能夠在處理器全速下運行。
對於存放在速度較慢的二級緩存中的指令或數據,處理器往往需要等待2到4個時鍾周期。為了充分利用計算資源,CPU可以在這段時間內查看和執行其它正在等候處理,但不需要使用額外數據的指令,從而提高整個系統的速度,把空閑時間降低到最低程度。
❷ ORACLE性能調優遵循的基本原則
任何事情都有它的源頭 要解決問題 也得從源頭開始 影響ORACLE性能的源頭非常多 主要包括如下方面 資料庫的硬體配置 CPU 內存 網路條件 CPU 在任何機器中CPU的數據處理能力往往是衡量計算機性能的一個標志 並且ORACLE是一個提供並行能力的資料庫系統 在CPU方面的要求就更高了 如果運行隊列數目超過了CPU處理的數目 性能就會下降 我們要解決的問題就是要適當增加CPU的數量了 當然我們還可以將需要許多資源的進程KILL掉 內存 衡量機器性能的另外一個指標就是內存的多少了 在ORACLE中內存和我們在建資料庫中的交換區進行數據的交換 讀數據時 磁碟I/O必須等待物理I/O操作完成 在出現ORACLE的內存瓶頸時 我們第一個要考慮的是增加內存 由於I/O的響應時間是影響ORACLE性能的主要參數 我將在這方面進行詳細的講解 網路條件 NET*sql負責數據在網路上的來往 大量的SQL會令網路速度變慢 比如 M的網卡和 的網卡就對NET*SQL有非常明顯的影響 還有交換機 集線器等等網路設備的性能對網路的影響很明顯 建議在任何網路中不要試圖用 個集線器來將網段互聯 OS參數的設置 下表給出了OS的參數設置及說明 DBA可以根據實際需要對這些參數進行設置 用戶SQL質量 以上講的都是硬體方面的東西 在條件有限的條件下 我們可以調整應用程序的SQL質量 不要進行全表掃描(Full Table Scan) 全表掃描導致大量的I/O 盡量建好和使用好索引 建索引也是有講究的 在建索引時 也不是索引越多越好 當一個表的索引達到 個以上時 ORACLE的性能可能還是改善不了 因為OLTP系統每表超過 個索引即會降低性能 而且在一個sql 中 Oracle 從不能使用超過 個索引 當我們用到GROUP BY和ORDER BY時 ORACLE就會自動對數據進行排序 而ORACLE在INIT ORA中決定了sort_area_size區的大小 當排序不能在我們給定的排序區完成時 ORACLE就會在磁碟中進行排序 也就是我們講的臨時表空間中排序 過多的磁碟排序將會令 free buffer waits 的值變高 而這個區間並不只是用於排序的 對於開發人員我提出如下忠告: ) select update delete 語句中的子查詢應當有規律地查找少於 %的錶行 如果一個語句查找的行數超過總行數的 % 它將不能通過使用索引獲得性能上的提高 ) 索引可能產生碎片 因為記錄從表中刪除時 相應也從表的索引中刪除 表釋放的空間可以再用 而索引釋放的空間卻不能再用 頻繁進行刪除操作的被索引的表 應當階段性地重建索引 以避免在索引中造成空間碎片 影響性能 在許可的條件下 也可以階段性地truncate表 truncate命令刪除表中所有記錄 也刪除索引碎片 ) 在使用索引時一定要按索引對應欄位的順序進行引用 ) 用(+)比用NOT IN更有效率 降低ORACLE的競爭 先講幾個ORACLE的幾個參數 這幾個參數關繫到ORACLE的競爭 ) freelists 和 freelist 組 他們負責ORACLE的處理表和索引的空間管理 ) pctfree 及 pctused 該參數決定了freelists 和 freelist 組的行為 pctfree 和pctused 參數的唯一目的就是為了控制塊如何在 freelists 中進出設置好pctfree 及 pctused對塊在freelists的移走和讀取很重要 其他參數的設置 ) 包括SGA區(系統全局區) 系統全局區(SGA)是一個分配給Oracle 的包含一個 Oracle 實例的資料庫的控制信息內存段 主要包括資料庫高速緩存(the database buffer cache) 重演日誌緩存(the redo log buffer) 共享池(the shared pool) 數據字典緩存(the data dictionary cache)以及其它各方面的信息 ) db_block_buffers(數據高速緩沖區)訪問過的數據都放在這一片內存區域 該參數越大 Oracle在內存中找到相同數據的可能性就越大 也即加快了查詢速度 ) share_pool_size (SQL共享緩沖池) 該參數是庫高速緩存和數據字典的高速緩存 ) Log_buffer (重演日誌緩沖區) ) sort_area_size(排序區) ) processes (同時連接的進程數) ) db_block_size (資料庫塊大小) Oracle默認塊為 KB 太小了 因為如果我們有一個 KB的數據 則 KB塊的資料庫要讀 次盤 才能讀完 而 KB塊的資料庫只要 次就讀完了 大大減少了I/O操作 資料庫安裝完成後 就不能再改變db_block_size的值了 只能重新建立資料庫並且建庫時 要選擇手工安裝資料庫 ) open_links (同時打開的鏈接數) ) dml_locks ) open_cursors (打開游標數) ) dbwr_io_slaves (後台寫進程數) lishixin/Article/program/Oracle/201311/17955
❸ 資料庫緩存機制是什麼緩存是如何作用資料庫
緩存的介質一般是內存,所以讀寫速度很快。但如果緩存中存放的數據量非常大時,也會用硬碟作為緩存介質。緩存的實現不僅僅要考慮存儲的介質,還要考慮到管理緩存的並發訪問和緩存數據的生命周期。
❹ 根據計算機存儲器記錄信息原理的不同可分為哪三類
存儲器不僅可以分為三類。因為按照不同的劃分方法,存儲器可分為不同種類。常見的分類方法如下。
一、按存儲介質劃分
1、半導體存儲器:用半導體器件組成的存儲器。
2、磁表面存儲器:用磁性材料做成的存儲器。
二、按存儲方式劃分
1、隨機存儲器:任何存儲單元的內容都能被隨機存取,且存取時間和存儲單元的物理位置無關。
2、順序存儲器:只能按某種順序來存取,存取時間和存儲單元的物理位置有關。
三、按讀寫功能劃分
1、只讀存儲器(ROM):存儲的內容是固定不變的,只能讀出而不能寫入的半導體存儲器。
2、隨機讀寫存儲器(RAM):既能讀出又能寫入的存儲器。
四、按資料保存師
1、非永久存儲器:斷電時信息消失的存儲器。
2、永久存儲器:斷電後仍能保存信息的存儲器。
五、按用途分類
1、主存:主存用於存儲計算機運行過程中大量的程序和數據,存取速度快,存儲容量小。
2、外部存儲:外部存儲系統程序和大數據文件及資料庫存儲容量,單位成本低。
3、高速緩存存儲器:高速緩存存儲器訪問指令和數據速度快,但存儲容量小。
(4)資料庫高速緩存和庫緩存擴展閱讀:
1、內部存儲和外部存儲
一般來說,內部存儲是最經濟但最不靈活的,因此用戶必須確定未來對存儲的需求是否會增長,以及是否有某種方法可以升級到具有更多代碼空間的微控制器。用戶通常根據成本選擇能滿足應用要求的內存容量最小的單片機。
2、啟動存儲
在較大的微控制器或基於處理器的系統中,用戶可以用引導代碼進行初始化。應用程序本身通常決定是否需要引導代碼,以及是否需要專用的引導存儲。
3、配置存儲
對於現場可編程門陣列(fpga)或片上系統(SoC),存儲器可以用來存儲配置信息。這種存儲器必須是非易失的EPROM、EEPROM或快閃記憶體。在大多數情況下,FPGA使用SPI介面,但一些較老的設備仍然使用FPGA串列介面。
4、程序存儲
所有有處理器的系統都使用程序內存,但是用戶必須決定內存是在處理器內部還是外部。做出此決定後,用戶可以進一步確定存儲的容量和類型。
5、數據存儲
類似於程序存儲器,數據存儲器可以位於一個微控制器或一個外部設備,但有一些不同的兩種情況。有時微控制器內部包含SRAM(易失性)和EEPROM(非易失性)數據存儲器,但有時它不包含內部EEPROM,在這種情況下,當需要存儲大量數據時,用戶可以選擇外部串列EEPROM或串列快閃記憶體設備。
6、易失性和非易失性存儲器
內存可以分為易失性內存(在斷電後丟失數據)和非易失性內存(在斷電後保留數據)。用戶有時會將易失性內存與備用電池一起使用,以實現類似於非易失性設備的功能,但這可能比簡單地使用非易失性內存更昂貴。
7、串列存儲器和並行存儲器
對於較大的應用程序,微控制器通常沒有足夠大的內存。必須使用外部存儲器,因為外部定址匯流排通常是並行的,外部程序存儲器和數據存儲器也將是並行的。
8、EEPROM和快閃記憶體
內存技術的成熟已經模糊了RAM和ROM之間的區別,現在有一些類型的內存(如EEPROM和快閃記憶體)結合了兩者的特點。這些設備像RAM一樣讀寫,在斷電時像ROM一樣保存數據。它們都是電可擦可編程的,但各有優缺點。
❺ 高速緩存,快緩存,智能緩存跟一二三級緩存有什麼區別或者類似嗎
一般來說,一二三級緩存常用於CPU的規格參數中,它們的作用是用於高速CPU與相對低速的內存之間的數據緩存,三者相比較,一級緩存速度最快,容量最少,三級緩存最慢,容量最大,二級緩存速度和容量均介於一、三級之間。高速緩存和快緩存是同一概念的不同表述,智能緩存表述在進行數據緩存時使用了智能技術,其實所有的緩存都是經過精心設計的,都是智能緩存。
❻ 請問Oracle的庫高速緩存、數據字典高速緩存的作用分別是什麼請給予詳細點的解答,謝謝
庫高速緩存
是用來存放你實際表的數據塊的,如表TAB_A里實際存放的若干條數據記錄,一般都存放在用戶的表空間里。
數據字典高速緩存
用來存放表的定義,如表TAB_A,有幾個欄位,每個欄位的類型、長度,表空間等,這類信息在你建表後會存放在系統表裡,都是在SYSTEM表空間下,ORACLE運行時,這些信息被裝入
數據字典高速緩存里。
❼ oracle 庫高速緩存和緩沖區緩存 區別
數據高速緩存跟操作系統的緩存類似,其存儲最近從數據文件中讀取的數據塊,其中的數據可以被所有的用戶所訪問。如當我們利用Select語句從資料庫中查詢員工信息的時候,其首先不是從數據文件中去查詢這個數據,而是從數據高速緩存中去查找,而沒有這個必要再去查詢磁碟中的數據文件了。只有在數據緩存中沒有這個數據的時候,資料庫才會從數據文件中去查詢。Oracle資料庫為什麼要如此設計呢?這是由於資料庫在讀取數據的時候,讀取內存的速度比讀取磁碟的速度要快很多倍,所以這種機制可以提高數據的整體訪問效率。
緩沖區緩存
重新啟動資料庫後,系統就會為資料庫分配一些空閑的緩存塊。空閑緩存塊中是沒有任何數據的,他在那邊默默的等著別寫入記錄。當Oracle 資料庫從數據文件中讀取數據後,資料庫就會尋找是否有空閑的緩存塊,以便將數據寫入其中。
一般來說,資料庫在啟動的時候,就會在內存中預先分配這些緩存塊。所以,Oracle資料庫在啟動的時候,會佔用比較多的內存。但是,這可以免去在實際需要時向內存申請的時間。所以,有時候Oracle資料庫雖然已啟動,內存的佔用率就很高,但是,其後續仍然可以正常運行的原因。而其他資料庫雖然剛啟動的時候內存佔用率不是很高,但是,但系統內存到達80%以上時,在進行數據處理就會受到明顯的影響。
❽ 如何調整Oracle資料庫伺服器的性能
Oracle資料庫伺服器是整個系統的核心 它的性能高低直接影響整個系統的性能 為了調整Oracle資料庫伺服器的性能 主要從以下幾個方面考慮
◆ 調整操作系統以適合Oracle資料庫伺服器運行 Oracle資料庫伺服器很大程度上依賴於運行伺服器的操作系統 如果操作系統不能提供最好性能 那麼無論如何調整 Oracle資料庫伺服器也無法發揮其應有的性能
為Oracle資料庫伺服器規劃系統資源
據已有計算機可用資源 規劃分配給Oracle伺服器資源原則是 盡可能使Oracle伺服器使用資源最大化 特別在Client/Server中盡量讓伺服器上所有資源都來運行Oracle服務
調整計算機系統中的內存配置
多數操作系統都用虛存來模擬計算機上更大的內存 它實際上是硬碟上的一定的磁碟空間 當實際的內存空間不能滿足應用軟體的要求時 操作系統就將用這部分的磁碟空間對內存中的信息進行頁面替換 這將引起大量的磁碟I/O操作 使整個伺服器的性能下降 為了避免過多地使用虛存 應加大計算機的內存
為Oracle資料庫伺服器設置操作系統進程優先順序
不要在操作系統中調整Oracle進程的優先順序 因為在Oracle資料庫系統中 所有的後台和前台資料庫伺服器進程執行的是同等重要的工作 需要同等的優先順序 所以在安裝時 讓所有的資料庫伺服器進程都使用預設的優先順序運行
◆ 調整內存分配
Oracle資料庫伺服器保留 個基本的內存高速緩存 分別對應 種不同類型的數據 庫高速緩存 字典高速緩存和緩沖區高速緩存 庫高速緩存和字典高速緩存一起構成共享池 共享池再加上緩沖區高速緩存便構成了系統全程區(SGA) SGA是對資料庫數據進行快速訪問的一個系統全程區 若SGA本身需要頻繁地進行釋放 分配 則不能達到快速訪問數據的目的 因此應把SGA放在主存中 不要放在虛擬內存中 內存的調整主要是指調整組成SGA的內存結構的大小來提高系統性能 由於Oracle資料庫伺服器的內存結構需求與應用密切相關 所以內存結構的調整應在磁碟I/O調整之前進行
庫緩沖區的調整
庫緩沖區中包含私用和共享SQL和PL/SQL區 通過比較庫緩沖區的命中率決定它的大小 要調整庫緩沖區 必須首先了解該庫緩沖區的活動情況 庫緩沖區的活動統計信息保留在動態性能表v$librarycache數據字典中 可通過查詢該表來了解其活動情況 以決定如何調整 Select sum(pins) sum(reloads) from v$librarycache; Pins列給出SQL語句 PL/SQL塊及被訪問對象定義的總次數 Reloads列給出SQL 和PL/SQL塊的隱式分析或對象定義重裝載時在庫程序緩沖區中發生的錯誤 如果sum(pins)/sum(reloads) ≈ 則庫緩沖區的命中率合適 若sum(pins)/sum(reloads)> 則需調整初始化參數 shared_pool_size來重新調整分配給共享池的內存量
數據字典緩沖區的調整
數據字典緩沖區包含了有關資料庫的結構 用戶 實體信息 數據字典的命中率 對系統性能影響極大 數據字典緩沖區的使用情況記錄在動態性能表v$librarycache中 可通過查詢該表來了解其活動情況 以決定如何調整 Select sum(gets) sum(getmisses) from v$rowcache; Gets列是對相應項請求次數的統計 Getmisses 列是引起緩沖區出錯的數據的請求次數 對於頻繁訪問的數據字典緩沖區 sum(getmisses)/sum(gets)< %~ % 若大於此百分數 則應考慮增加數據字典緩沖區的容量 即需調整初始化參數shared_pool_size來重新調整分配給共享池的內存量
緩沖區高速緩存的調整
用戶進程所存取的所有數據都是經過緩沖區高速緩存來存取 所以該部分的命中率 對性能至關重要 緩沖區高速緩存的使用情況記錄在動態性能表v$sysstat中 可通過查詢該表來了解其活動情況 以決定如何調整
Select name value from v$sysstat
where name in ( dbblock gets consistent gets physical reads );
dbblock gets和consistent gets的值是請求數據緩沖區中讀的總次數 physical reads的值是請求數據時引起從盤中讀文件的次數 從緩沖區高速緩存中讀的可能性的高低稱為緩沖區的命中率 計算公式
Hit Ratio= (physical reds/(dbblock gets+consistent gets))如果Hit Ratio< %~ % 則應增大db_block_buffers的參數值 db_block_buffers可以調整分配給緩沖區高速緩存的內存量 即db_block_buffers可設置分配緩沖區高速緩存的數據塊的個數 緩沖區高速緩存的總位元組數=db_block_buffers的值*db_block_size的值 db_block_size 的值表示數據塊大小的位元組數 可查詢 v$parameter 表 select name value from v$parameter where name= db_block_size ; 在修改了上述資料庫的初始化參數以後 必須先關閉資料庫 在重新啟動資料庫後才能使新的設置起作用
◆ 調整磁碟 I/O
磁碟的I/O速度對整個系統性能有重要影響 解決好磁碟I/O問題 可顯著提高性能 影響磁碟I/O的性能的主要原因有磁碟競爭 I/O次數過多和數據塊空間的分配管理
為Oracle資料庫伺服器創建新文件時 不論是表空間所用的數據文件還是數據事務登錄所用的日誌文件 都應仔細考慮資料庫伺服器上的可用磁碟資源 如果伺服器上有多個磁碟 則可將文件分散存儲到各個可用磁碟上 減少對資料庫的數據文件及事務日誌文件的競爭 從而有效地改善伺服器的性能 對於不同的應用系統都有各自的數據集 應當創見不同的表空間分別存儲各自應用系統的數據 並且盡可能的把表空間對應的數據文件存放在不同的磁碟上 這種從物理上把每個應用系統的表空間分散存放的方法 可以排除兩個應用系統競爭磁碟的可能性 數據文件 事務日誌文件分別存放在不同的磁碟上 這樣事務處理執行的磁碟訪問不妨礙對相應的事物日誌登記的磁碟訪問 如果有多個磁碟可用 將兩個事物日誌成員放在不同的磁碟驅動器上 就可以消除日誌文件可能產生的磁碟競爭 應把一個應用的表數據和索引數據分散存放不同表空間上 並且盡量把不同類型的表空間存放在不同磁碟上 這樣就消除了表數據和索引數據的磁碟競爭
◆ 調整資料庫伺服器的回滾段
回滾段是一個存儲區域 資料庫使用該存儲區域存放曾經由一個事務更新或刪除的行的原始數據值 如果用戶要回滾一個事務所做的改變 那麼資料庫就從回滾段中讀回改變前的數據並使該事務影響的行改變為它們的原狀態 回滾段控制著資料庫處理事務的能力 因而在資料庫成功中起著關鍵性的作用 不管資料庫的其它部分設計得多好 如果它設計得不合理 將會嚴重影響系統的性能 建立和調整回滾段的原則如下
分離回滾段
分離回滾段是指單獨為回滾段創建一個以上的表空間 使回滾段與數據字典 用戶數據 索引等分離開來 由於回滾段的寫入與數據和索引的寫入是並行進行的 因此將它分離出來可以減少I/O爭用 如果回滾段與數據不分離 倘若要某個表空間離線或撤消 那麼在該表空間中的各個回滾段沒有全部離線之前 不能將這個表空間離線或撤消 而一旦該表空間不可用 則該表空間中的所有回滾段也不能使用 這將浪費所有分配的磁碟空間 所以 獨立回滾段可使資料庫管理變得容易 回滾段的經常性收縮 使得表空間的自由塊更容易形成碎片 分離回滾段可以減少資料庫表空間的碎片產生
創建不同大小的回滾段群
lishixin/Article/program/Oracle/201311/18922
❾ 緩存是什麼意思
緩存是指可以進行高速數據交換的存儲器,它先於內存與CPU交換數據,因此速率很快。
緩存的工作原理是當CPU要讀取一個數據時,首先從CPU緩存中查找,找到就立即讀取並送給CPU處理;沒有找到,就從速率相對較慢的內存中讀取並送給CPU處理,同時把這個數據所在的數據塊調入緩存中,可以使得以後對整塊數據的讀取都從緩存中進行,不必再調用內存。
正是這樣的讀取機制使CPU讀取緩存的命中率非常高(大多數CPU可達90%左右),也就是說CPU下一次要讀取的數據90%都在CPU緩存中,只有大約10%需要從內存讀取。這大大節省了CPU直接讀取內存的時間,也使CPU讀取數據時基本無需等待。
(9)資料庫高速緩存和庫緩存擴展閱讀
緩存的狀態數據只是主數據的快照,由於數據源可能被修改,所以狀態數據就有會陳舊的特性。合理利用此特性和將數據陳舊的負面影響最小化是緩存狀態數據的一個重要任務。
緩存介質從技術上劃分,可以分成內存、硬碟文件、資料庫三種。將緩存存儲於內存中是最快的選擇,無需額外的I/O開銷,但是內存的缺點是沒有持久化落地物理磁碟,一旦應用異常,重新啟動數據很難或者無法復原。
緩存中可以存放的最大元素的數量,一旦緩存中元素數量超過這個值(或者緩存數據所佔空間超過其最大支持空間),那麼將會觸發緩存啟動清空策略根據不同的場景合理的設置最大元素值往往可以一定程度上提高緩存的命中率,從而更有效的時候緩存。