日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

oracle 体系结构认识,Oracle数据库体系结构简单认识一

發布時間:2025/3/20 数据库 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle 体系结构认识,Oracle数据库体系结构简单认识一 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、為什么使用數據庫軟件

為什么我們不直接使用硬盤管理數據而要使用數據庫,最主要的原因還是效率問題,直接采取硬盤管理數據的效率遠遠低于數據庫軟件,因為數據庫軟件是把數據加載至內存中進行修改,而硬盤則是需要直接進行大量的IO,非常耗時耗資源,大大拖累系統性能;并且,硬盤的安全系數較之數據庫軟件較低,相比數據庫的備份還原、日志記錄、日志挖掘等等防衛手段,硬盤還是存在短缺。

總而言之,使用數據庫軟件,是由于它的便捷、高效、安全,這也適用于其他優秀的軟件產品。

2、Oracle數據庫對ACID特性的實現

一個優良的數據庫必須能夠保證事務的ACID特性,而Oracle則是完美的實現了事務的ACID,簡單介紹如下:

(1)原子性(Atomicity):所有操作要么全部成功、要么全部失敗,所有操作是一個整體,為此Oracle數據庫引入了commit和rollback機制;

(2)一致性(Consistency):查詢結果是查詢開始時的結果集,與查詢耗時及查詢結束時刻無關,為此Oracle數據庫引入了UNDO機制;

(3)隔離性(Isolation):一個session上做的未提交操作,其他session無法查看,為此Oracle數據庫引入了鎖機制;

(4)持久性(Durability):在數據庫上做的任何有效修改(commit),都會持久保存,不會因為其他因素導致丟失,為此Oracle數據庫引入了REDO機制。

3、Oracle數據庫高效的體現

在實際生產中,對于數據庫最多的操作則是DQL和DML,以DQL語句和DML語句為例,簡單描述Oracle數據庫的高效體現:

select id ,name from test where id=123;

如上為一條DQL語句,我們知道SELECT語句的工作過程主要分為三個階段:

(1)?分析階段

解析階段主要包含語法分析、語義分析、生成執行計劃、權限檢查等階段性?任務。

(2)?執行階段

執行階段主要根據執行計劃從數據庫中獲取?所需的結果集,主要是從磁盤上的數據文件中加載數據至內存中,這個過程由Server Process完成。

(3)?Fetch

Fetch階段則是把獲取的結果集返回給用戶。

在實際的生產中,如上的SELECT語句執行頻率大、并發性高?,如每次都要進行分析、執行、Fetch,那么會導致非常低下的工作效率。所以,Oracle數據庫針對此類型的查詢語句做了很多優化。

首先,關于分析階段的優化如下:

每次進行語義分析,都需要從數據字典中獲取數據庫對象的定義,而數據字典又存放在操作系統上的磁盤文件中,即SYSTEM表空間下的數據文件中,每次進行語義分析都要將對象定義從磁盤文件加載至內存,高并發場景下拖累性能,而Oracle數據庫對此提供了Data Dictionary Cache組件,會把第一次語義分析的數據庫對象的字典信息緩存在其中,再次對相同的數據對象進行?語義分析時可以直接從Data Dictionary Cache組件中獲取到相關字典信息,大大提升語法分析的效率。

而生成執行計劃同樣如此,如果可以生成的執行計劃緩存在內存中進行保存,則下次執行相同語句時可以直接復用執行計劃可以大大提升效率。所以,Oracle數據庫提供了Library Cache組件,用于緩存執行計劃。同理,權限等信息同樣緩存在Data Dictionary Cache組件中。

其次,對于執行階段的優化如下:

根據生成的執行計劃,從磁盤文件中獲取結果集,需要進行大量的物理IO,需要耗費大量的系統資源,拖慢性能;并且,每次執行都要重復這樣的動作,所以,Oracle數據庫提供了Database Buffer Cache組件提前緩存磁盤中的數據鏡像,后續對目的數據的讀寫可以直接在內存中進行,大大降低了物理IO,提升了系統性能。

最后,對于Fetch階段,則是:

每個進程都有自己的PGA,即進程全局區,可以在PGA中緩存會話數據,以及輔助排序等,便于結果集的快速返回。

update test set id1=1 and id2=2 and id3=1;

如上為一條DML語句,同DQL語句相似,DML語句的執行流程僅包括兩個階段:分析階段和執行階段。

和DQL語句的流程相似,但是在執行階段則是存在差異,為了保證數據的持久性和安全性,數據庫數據的修改需要記錄日志,對每個數據塊的修改動作都會被記錄到日志文件中,這個過程由Server Process進程完成。為了防止大量DML產生的海量日志信息造成的巨大的物理IO,Oracle數據庫提供了Redo Log Buffer組件用于緩存數據塊修改產生的日志信息,Redo Log Buffer組件中的日志信息會在特定時機下分批次寫入到聯機REDO日志文件中,這個過程由LGWR進程完成,大大降低了物理IO。

而?Database Buffer Cache組件中的數據變更完成后,會在下一次刷檢查點時由DBWR進程寫入到磁盤文件中,DBWR會觸發LGWR先寫REDO日志,REDO日志寫完后才會進行灰數據的刷盤。

CKPT進程觸發DBWR進行灰數據刷盤后,還會更新數據文件頭和控制文件中的SCN信息,保持數據的一致性,并且??在控制文件中記錄數據刷盤的位置信息,為故障恢復降低工作量。

?

?

?

?

總結

以上是生活随笔為你收集整理的oracle 体系结构认识,Oracle数据库体系结构简单认识一的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。