操作系统页大小和数据库页大小

我们先弄清楚操作系统的页大小概念。

 

操作系统的页大小:

 

对于操作系统来说, 存放文件不是以文件的大小来存放的,而是首先将内存按照一定的大小,给拆分开来,比如4K大小作为一个单元。这样做有什么好处呢?

 

使用了分页的机制后, 就可以使用虚拟存储的概念了。对于32位操作系统来说,每个程序来都有4G的逻辑访问空间,这4G逻辑访问空间是虚拟出来的,实际没有这么多。操作系统负 责虚拟4g的逻辑访问空间,可能和外存来不断交换协调。比如windows操作系统,在C盘下有一个叫 pagefile.sys 的文件,这个就是虚拟内存所存放在硬盘的地址。

 

逻辑4G分成了很多页,而实际的物理内存也分成了很多页, 它们大小是相等的。进程只管向操作要页,你给我多少页来,运行一个程序。不管物理内存够不够用, 操作系统总会想办法来协调。

 

 

数据库的页大小:

 

数据库的页大小和操作系统类似,是指存放数据时,每一块的大小。比如一个1M的数据存放在数据库中时, 需要大概12块页来存放。如果是在操作系统上安装的数据库,最好将数据库页大小设置为操作系统页大小的倍数,才是最佳设置。

 

DB2中sqlstate=42727问题解决:

 

在创建表的时候,有时候DB2会报出sqlstate=42727,页大小空间不足的错误,导致无法建表。这个是DB2特有的数据存储实现细节导致的问题。对于DB2来说,表的每一行的所有字段的总字节数,不能超过设置的页大小,因此无法创建表解 决该问题,只要更改页大小的设置即可。在DB2的控制中心,在缓存区建立一个大一点,然后再根据它建立一个表空间,最后将此表空间加到原来的数据库上就 OK了。DB2在建表的时候,会扫描到有符合条件的表空间,就允许建立表。这一切对用户来说都是透明的,不需要手工指定。

你可能感兴趣的:(操作系统页大小和数据库页大小)