說到
hwm,
我們首先要簡要的談談
oracle
的邏輯儲存管理
.我們知道
,oracle
在邏輯儲存上分
4個粒度
:表空間,段
,區和塊
.(1)塊:
是粒度最小的儲存單位
,現在標準的塊大小是
8k,oracle
每一次i/o
操作也是按塊來操作的
,也就是說當
oracle
從資料檔案讀資料時
,是讀取多少個塊
,而不是多少行.
(2)區:
由一系列相鄰的塊而組成
,這也是
oracle
空間分配的基本單位
,舉個例子來說
,當我們建立乙個表
pm_user時,
首先oracle
會分配一區的空間給這個表
,隨著不斷的
insert
資料到pm_user,
原來的這個區容不下插入的資料時
,oracle
是以區為單位進行擴充套件的
,也就是說再分配多少個區給
pm_user,
而不是多少個塊.
(3)段
:是由一系列的區所組成
,一般來說
,當建立乙個物件時(表
,索引),就會分配乙個段給這個物件
.所以從某種意義上來說
,段就是某種特定的資料.如
create table pm_user,
這個段就是資料段,而
create index on pm_user(name),oracle
同樣會分配乙個段給這個索引
,但這是乙個索引段了
.查詢段的資訊可以通過資料字典
:select
*from
user_segments
來獲得,
(4)表空間
:包含段
,區及塊
.表空間的資料物理上儲存在其所在的資料檔案中
.乙個資料庫至少要有乙個表空間
.ok,
我們現在回到
hwm上來,那麼
,什麼是高水位標記呢
?這就跟
oracle
的段空間管理相關了.(
一)oracle
用hwm
來界定乙個段中使用的塊和未使用的塊
.舉個例子來說
,當我們建立乙個表
:pt_sche_detail
時,oracle
就會為這個物件分配乙個段
.在這個段中
,即使我們未插入任何記錄
,也至少有乙個區被分配
,第乙個區的第乙個塊就稱為段頭
(segment heade),
段頭中就儲存了一些資訊,基中
hwm的資訊就儲存在此.此時
,因為第乙個區的第一塊用於儲存段頭的一些資訊
,雖然沒有儲存任何實際的記錄
,但也算是被使用,此時
hwm是位於第2個塊
.當我們不斷插入資料到
pm_user後,
第1個塊已經放不下後面新插入的資料,此時
,oracle
將高水位之上的塊用於
儲存新增資料,同時
,hwm
本身也向上移
.也就是說
,當我們不斷插入資料時
,hwm
會往不斷上移,這樣
,在hwm之下的
,就表示使用過的塊
,hwm
之上的就表示已分配但從未使用過的塊
.
深入了解css的行高Line Height屬性
什麼是行間距?古時候我們使用印刷機來出來文字。印刷出來的每個字,都位於獨立的乙個塊中。行間距,即傳說中控制兩行文字垂直距離的東東。在css中,line height被用來控制行與行之間垂直距離。不過,行間距與半行間距,還是取決於css中的line height。那麼,如何來使用line height...
js typeof 的深入了解
我們都知道,typeof的作用是辨別傳入值的型別 我們需要注意的是 typeof的返回值統一都是全小寫的字串 下面列舉了typeof函式可以識別的型別以及場景 話不多說,直接進入 undefined 1 未定義物件將會被識別為underfined 2 乙個函式沒有返回值 boolean false ...
ORACLE的高水位線
這幾天一直在看乙個問題,乙個統計程式突然統計的資料量不正常了,從頭查到尾,覺得程式和配置都沒有問題,但就是統計出的結果不對,但發現有乙個程式的入庫檔案還存留很多,推斷可能是資料還沒入庫完全,但是什麼導致的呢,以為是那部分檔案太大,入庫太慢,但後來發現還是資料庫的問題,乙個temp表查詢空表都花費很長...