此郵件儲存區已達到它的最大大小 資料庫的儲存結構

2021-10-11 23:44:08 字數 1309 閱讀 3265

記錄是按照行儲存的,但是資料庫的讀取不是以行為單位,否則一次讀取只能處理一行,效率很低。因此資料庫,無論是讀一行,還是讀取多行,都是將這些行所在的頁進行載入。資料管理儲存空間的基本單位是頁(page)

快速回顧一遍資料庫儲存結構:一頁可以儲存多個行記錄(row) ,先是表空間(tablespace),表空間包含段(segement),還存在區(extent),其關係如下圖所示:

oracle 中使用代表

資料庫 io 最小單位是頁,與資料庫相關的內容會存在頁結構中,資料頁包括7個部分,分別是檔案頭(file header),頁頭(page header),最大最小記錄(inflimum+siprenum)、使用者記錄(user records)、空閒空間(free space),頁目錄(page directory)和檔案尾(file tailer)。

頁的儲存結構如下:

頁中各項內容:

頁主要分成3部分: 頭尾節點部分。資料記錄部分,索引部分。

第二部分是記錄部分,最大最小記錄和使用者記錄部分佔了頁結構的主要空間。當新記錄插入的時候,會從空想空間分配用於儲存新記錄。

第三部分是索引部分, 這部分是頁目錄,起到了記錄索引的作用。

如何建立乙個頁記錄?

將索引的記錄分成幾組,這些記錄包括最小記錄和最大記錄,但是不包括已刪除記錄。

第1組,也就是最小記錄所在的分組只有乙個記錄; 最後一組,就是最大記錄所在的分組,會有1-8個記錄,其餘的組資料在4-8條。

在每個組最後一條記錄的頭資訊中會儲存該組一共有多少條,作為 n_owned 字段。

頁目錄用來儲存每組最後一條記錄的位址偏移量,這些位址偏移量會按照先後順序儲存起來,每組的位址偏移量稱為 slot ,每個槽相當於指標指向了不同組的最後乙個記錄。

堆 棧 自由儲存區 全域性 靜態儲存區和常量儲存區

在c 中,記憶體分成5個區,他們分別是堆 棧 自由儲存區 全域性 靜態儲存區和常量儲存區 1.棧由編譯器在需要的時候分配,在不需要的時候自動清楚的變數的儲存區。裡面的變數通常是區域性變數 函式引數等。棧空間初始化的時候,空間大小就確定了,棧指標指向棧頂 高位址 壓入棧時 棧指標減減,想低位址移動。棧...

堆 棧 自由儲存區 全域性 靜態儲存區和常量儲存區

堆 棧 自由儲存區 全域性 靜態儲存區和常量儲存區 在c 中,記憶體分成5個區,他們分別是堆 棧 自由儲存區 全域性 靜態儲存區和常量儲存區。棧,就是那些由編譯器在需要的時候分配,在不需要的時候自動清楚的變數的儲存區。裡面的變數通常是區域性變數 函式引數等。堆,就是那些由new分配的記憶體塊,他們的...

記憶體儲存 全域性 靜態儲存區 常量儲存區

全域性 靜態儲存區 全域性變數和靜態變數被分配到同一塊記憶體中 常量儲存區 存放的是常量,是不允許修改的。靜態儲存是main函式執行前分配記憶體並初始化 常量儲存是固化在執行檔案上的資料。棧的方向和平台有關,一般來說,windows由高位址向低位址增長,linux相反,但基於linux的第三方系統得...