表空间算法

原创 2007年09月23日 19:35:00
很多人用数据库,都不知对表空间大小的计算方法,有效的计算表空间的大小可以有效的提高效率和了解表的存储,达到更好的控制表。以下列出表空间的计算方法,以供大家参考。
数据类型          大小
char/binary         在定义中指定的大小
varchar/varbinary    实际的数据大小,使用一个平均估计值
int                4字节
smallint            2字节
tinyint             1字节
float              8字节
float(b)         4字节(精确到一至七位小数的数字)
float(c)         8字节(精确到八至十五位小数的数字)
double precision     8字节
real               4字节
money             8字节
small money        4字节
datetime           8字节
smalldatetime       4字节
bit                1字节
decimal/numeric     根据精度,2-17字节
text/image          每个表行16字节,每个not null列至少加上2KB的页
timestamp          8字节
允许NULL的列定义为var数据类型
数值精度          大小
0-9              5字节
10-19            9字节
20-28            13字节
29-38            17字节
1.带簇索引表的计算方法
数据长度计算方法:
.不含可变长度字段的行大小=2+(以字节计算的列的大小的合计值)
.含可变长度字段的行大小=2+(以字节计算的固定长度列的大小的合计值)+(可变长度列的平均大小的合计值)+(可变长度列的个数+1)+2
.一页中的行数=8060/(行的大小)(只舍不入)
.8KB数据页的数目=(需要的行数)/(每页的行数)(只入不舍)
簇索引长度方法:
.不含可变长度字段的行大小=5+(以字节计算的列的大小的合计值)
.含可变长度字段的行大小=5+(以字节计算的固定长度列的大小的合计值)+(可变长度列的平均大小的合计值)+(可变长度列的个数+1)+2
.一页中的行数=8060/(行的大小)-2
.在N级上的索引页数=(数据页数)/(一页中簇索引行数)(只入不舍)
例:有一个表,有一个int型簇索引,估计5,000,000行所需的空间,假定还有四个23字节长的var类型列,且列的平均长度为定义长度的60%。
2+4+(92*60%)+(4+1)+2=63
8060/63=127
5000000/127=39371
5+4=9
8060/9-2=894
39371/894=45
45/894=1
数据库表所需的8KB页的总数:
data page:39371
index page(level 1):1
index page(level 0):45
total number of 8KB pages:39417(or about 308MB)
2.带非簇索引表的计算方法
.索引行大小=7+(固定长度关键字的长度的合计值)
.叶子索引行大小=9+(固定长度关键字的长度的合计值)+(可变长度关键字的长度的合计值)+(可变长度关键字的个数)+1
.每页的叶子行数=8060/(叶子索引行大小)(只舍不入)
.叶子页数=(表中的行数)/(每页的叶子行数)(只入不舍)
.非叶子行大小=叶子索引行大小+4
.每页的非叶子索引行数=8060/(非叶子行大小)-2
.在N级上的索引页数=(叶子页数)/(每页的非叶子索引行数)(只入不舍)
例:有一个表,有一个六字节长的非簇索引,估计5,000,000行所需的空间。
7+6=13
8060/13=620
5000000/620=8065
13+4=17
8060/17-2=473
8065/473=18
18/473=1
数据表所需的8KB页的总数:
leaf page:8065
leaf index page(level 1):1
leaf index page(level 0):18
total number of 8KB pages:8084 or about 64MB
 

相关文章推荐

oracle数据库建表空间、分配权限

  • 2015年11月25日 16:35
  • 912B
  • 下载

检查表空间剩余用量sql语句

  • 2015年06月04日 18:03
  • 90B
  • 下载

本地分区索引如何确定表空间

表和索引建立的时候假如不指定表空间,会建立在用户的默认表空间中。对于分区表和分区索引,则确定建立的表空间的规则要复杂一些,本文进行简单的总结   分区表的分区增加分区假如不指定表空间,会根据分区...
  • li19236
  • li19236
  • 2016年03月03日 15:02
  • 563

4.oracle_管理表空间

  • 2015年01月23日 22:46
  • 363KB
  • 下载

Oracle 表空间时点恢复(TSPITR)

表空间时点恢复,是Oracle在基于冷备,热备恢复以外的一种以表空间为粒度的,不完全恢复的形式来将表空间恢复到过去某个特定的时间点的一种恢复方式。它整合了RMAN以及DataPump这2个备份恢复工具...

oracle创建表空间文档

  • 2014年10月22日 13:43
  • 944B
  • 下载

表、用户、表空间关系

  • 2016年02月16日 17:32
  • 236B
  • 下载

windows系统下使用SQLPLUS命令创建表空间和用户

前提:假设oracle数据库安装在windows系统上。 1.命令行运行:sqlplus /nolog2.在SQL>提示符后面运行:conn /as sysdba命令横提示Connected说明连接...

oracle创建表空间用户等

  • 2015年12月19日 12:48
  • 2KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:表空间算法
举报原因:
原因补充:

(最多只允许输入30个字)