一些簡單的歸納,個人當做筆記記錄下
作為oracle開發,需要了解到oracle的體系結構,表關聯,索引等知識,這裡做個大致的記錄
1、oracle物理體系結構
oracle由例項和資料庫組成,例項包含了乙個公共的記憶體區域和幾個不同功能的程序,資料庫則是由資料檔案,引數檔案,控制檔案以及日誌檔案組成。還有乙個個人私有的記憶體空間,叫做pga,是開闢給每個人的,主要儲存一些連線資訊,許可權校驗資訊等等。
1.1、例項
例項包含了共享池,資料快取區,日誌快取區以及dbwr、lgwr等程序
其中共享池存放了sql的sql_id資訊,如果已經解析過的sql,可以在根據自己唯一的sql_id在共享池找到對應的執行計畫,執行速度更高效快速。
資料快取區則是之前執行過的sql,把資料從資料庫的資料檔案拉到了資料快取區,方便多次檢視。
日誌快取區:快取了最近資料庫執行的一些sql,如果遇到commit,會提交到redo檔案裡儲存起來這些操作記錄。
1.2、程序
主要是記錄下比較常用的程序,有個概念即可。
dbwr:使用者把資料緩衝區的資料寫入到資料庫的資料檔案中,一般是批量寫入,寫入的時間由ckpt控制。
lgwr:oracle的資料不是實時寫入資料檔案的,為了防止斷電等原因導致資料丟失,所以由lgwr程序把資料人員的操作sql記錄寫入資料庫的redo檔案中。一般來說一次commit,lgwr寫入日誌檔案一次,一段時間寫入一次,滿三分之一的日誌緩衝區寫入一次。
ckpt:主要為了控制dbwr寫入,操作人員可以限定資料庫重啟的恢復時間。如果需要短時間內恢復,則dbwr寫入頻率高。可以接受恢復時間長,dbwr寫入頻率低。
pmon:用於控制會話進行ddl操作斷鏈的資料回滾
arch:用於把日誌檔案進行歸檔,把日誌檔案儲存到其他的儲存介質,以便資料出問題時的資料恢復。
1.3、資料庫
資料庫存放了四類檔案,引數檔案、控制檔案、資料檔案以及日誌檔案
引數檔案:記錄了記憶體分配規則,以及需要啟動的程序,也就是說oracle可以通過引數檔案來生成例項
控制檔案:通過引數檔案找到控制檔案,控制檔案中有資料檔案以及日誌檔案的資訊,也就是說控制檔案相當於例項和資料庫的橋梁
資料檔案:資料真實存放在磁碟的地方,沒有資料檔案,則資料庫的安全性無法保障
日誌檔案:記錄了資料庫的操作記錄,用於保障資料庫出問題時可以完全恢復
2、oracle邏輯體系
2.1、block
塊,是oracle最小的邏輯單位
2.2、區
使用者可操作的最小儲存區間
2.3、段
乙個普通表,乙個索引都屬於乙個段。而分割槽表示乙個分割槽乙個段
2.4、表空間
oracle有系統表空間,臨時表空間,使用者表空間以及回滾表空間
系統表空間:存放一些系統引數的表空間
臨時表空間:當sql需要進行排序,而pga大小不夠的時候,就會用上臨時表空間進行相應的排序動作
使用者表空間:這是比較多的表空間,用於存放使用者規劃的資料
回滾表空間:當使用者需要進行ddl操作時,會在回滾表空間存放表的前映象資料,以便使用者可以進行rollback操作。
3、索引
3.1、b樹索引
索引是oracle優化的神器。而b樹索引則是我們日常使用的常客。
一般來說,我們在oracle建立的索引都是b樹索引,通過記錄資料的唯一標識row_id來找到對應的資料。
b樹索引的內容是row_id加改索引列,且該索引列是有序的。
備註:1、對索引列進行計算不走索引
2、b數索引為空不走
3.2、位圖索引
介紹另一種索引,位圖索引
位圖索引的內容其實是01編碼,常用於對重複度高且更新不頻繁的列建索引。
如性別。
比如有幾個人,有男有女,對於男男女
可能該索引對應的內容就是110
備註:位圖索引常用於多個and或者or查詢,效率較高
4、表關聯
表關聯有三種連線方式
4.1、巢狀迴圈
4.2、hash連線
4.3、合併排序
5、隨便說說
5.1、一致讀
oracle一致讀邏輯是看scn,可以理解為最近修改時間。
比如讀取乙個資料,由於效能問題,八點開始讀,九點才結束。但是八點半,中間有資料改變了。
這時oracle會去讀取八點半資料的前映象資料,也是就undo空間的資料。
而判斷的依據就是scn,這時乙個只會增大的資料。比如八點開始讀資料,這時的獲取的scn是當前最大。所以一直讀下去,知道八點半,這時的scn比八點的scn大了,所以oracle會看八點半的資料有沒有提交,如果提交了,讀取undo裡的資料。如果沒有提交,還是讀取undo的資料。
個人常用linux命令歸納 1
其實一直想堅持每天出一篇技術部落格分享自己當天的收穫,但是總是沒堅持下來。希望這次能有所不同,而且質量也能上乙個層次。linux,相信對於搞程式設計的朋友們,都是不陌生的,本文不會將所有命令全部集中於此,只是列出部分自己常用命令,簡單的,複雜的都有些。記得曾經乙個同事告訴我用linux命令的鐵令,不...
個人常用linux命令歸納 3
繼續linux命令解析,其中 1 還沒有完善,應人之邀,先詳細寫文字編輯命令vi vim。4.文字編輯之vi vim 首先,說明一下,vim是vi的公升級版,vim相容了所有vi的指令。最後,我們開始來講解vim命令,由於上述原因就不再敘述vi了。vim test.txt,通過vim開啟或者新建乙個...
個人常用linux命令歸納 5
今天,咱來說說awk的用法,前面加幾句,一般寫shell指令碼會幹的事。bin sh 指令碼一般得加這句 path bin sbin usr bin usr sbin usr local bin usr local sbin sh存放路徑 export path awk用法 取日期中的年,通過 aw...