數據庫頁大小的概念剖析

 

 

 

我們先弄清楚操作系統的頁大小概念。

 

操作系統的頁大小:

 

對於操作系統來說, 存放文件不是以文件的大小來存放的,而是首先將內存按照一定的大小,給拆分開來,比如4K大小作爲一個單元。這樣做有什麼好處呢?

 

使用了分頁的機制後, 就可以使用虛擬存儲的概念了。對於32位操作系統來說,每個程序來都有4G的邏輯訪問空間,這4G邏輯訪問空間是虛擬出來的,實際沒有這麼多。操作系統負責虛擬4g的邏輯訪問空間,可能和外存來不斷交換協調。比如windows操作系統,在C盤下有一個叫 pagefile.sys 的文件,這個就是虛擬內存所存放在硬盤的地址。

 

邏輯4G分成了很多頁,而實際的物理內存也分成了很多頁, 它們大小是相等的。進程只管向操作要頁,你給我多少頁來,運行一個程序。不管物理內存夠不夠用, 操作系統總會想辦法來協調。

 

 

數據庫的頁大小:

 

數據庫的頁大小和操作系統類似,是指存放數據時,每一塊的大小。比如一個1M的數據存放在數據庫中時, 需要大概12塊頁來存放。如果是在操作系統上安裝的數據庫,最好將數據庫頁大小設置爲操作系統頁大小的倍數,纔是最佳設置。

 

DB2中sqlstate=42727問題解決:

 

在創建表的時候,有時候DB2會報出sqlstate=42727,頁大小空間不足的錯誤,導致無法建表。這個是DB2特有的數據存儲實現細節導致的問題。對於DB2來說,表的每一行的所有字段的總字節數,不能超過設置的頁大小,因此無法創建表解決該問題,只要更改頁大小的設置即可。在DB2的控制中心,在緩存區建立一個大一點,然後再根據它建立一個表空間,最後將此表空間加到原來的數據庫上就OK了。DB2在建表的時候,會掃描到有符合條件的表空間,就允許建立表。這一切對用戶來說都是透明的,不需要手工指定。

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章