Oracle中HWM浅谈
来源:互联网 发布:电脑加速软件 编辑:程序博客网 时间:2024/05/16 08:59
HWM, 全称是 High Water Mark(高水位线)。
在了解高水位线之前先了解一下,Oracle数据库的逻辑结构:Tablespace-->segments(段)-->extens(区)-->block(块)
1).Tablespace:包含段、区、块,表空间是实际存在在存储上的一个文件,一个数据库至少要有一个表空间。
2).segments:是由一系列的区所组成的,当创建对象时(table,index)就会分配一个段给这个对象,所以会有数据段,和索引段
查询段的信息可从USER_SEGMENTS来获得。
3).extents:是由一系列的块组成的,区也是Oracle最小的分配单位,当我们创建一个表的时候首先会分配一个区的空间给这
个表,随着表的增长Oracle在会以区进行扩展。而不是以块扩展。
4).block:块是Oracle中最小的粒度单位,每次I/O的最小单位也是块,而不是行。块的默认大小是8K。
在Oracle中的每一个段都会有一个段内所容纳数据的上限,我们把这个上限称为HWM。这个HWM用来标记有段内存放数据所使用的块的最高历史记录。每次HWM的增长幅度是5个块,原则上HWM只会上升,而不会下降,所以HWM就像一个水库的历史的最高水位,即使段内的数据被delete,HWM也不会下降。如果使用truncate命令之后HWM则会置0.
一. HWM对数据库操作的影响如下:
1).在全表扫描的时候Oracle会读出HWM一下的所有数据块,即使数据块上没有数据,这样会增大全表扫描的时间。
2).在向表中插入数据的时候,使用append关键字之后便会在HWM之上插入数据,即使HWM之下有空闲块,此时HWM也会增加。
二.如何查看HWM:
首先对表进行统计信息:
ANALYZE TABLE <tablename> STATISTICS COMPUTE;
从user_tables中获得信息:
SELECT blocks,empty_blocks FROM user_tables
WHERE TABLE_NAME=<tablename>
这里的blocks是段内数据所到的最大上限即HWM,empty_blocks则是HWM上所空闲的块的数量。
三.HWM的信息存储在段头当中。
HWM的本身的信息是存放在段头中的,如果段空间是手工管理方式时,Oracle是通过FREELIST(单项链表)来管理段内的空间
分配的,在段空间是自动管理方式(ASSM)时,Oracle是通过BITMAP来管理段内的空间分配的。
- Oracle中HWM浅谈
- oracle的中HWM
- 浅谈Oracle的高水位线--HWM
- ORACLE HWM 和 low HWM
- Oracle中 HWM与数据库性能的探讨
- Oracle中HWM与数据库性能的探讨
- Oracle中 HWM与数据库性能的探讨
- Oracle 高水位(HWM)
- Oracle 高水位(HWM)
- Oracle 高水位(HWM)
- ORACLE FREELIST HWM(转)
- ORACLE水位线HWM
- Oracle 高水位(HWM)【转】
- oracle 高水位线(hwm)
- oracle中的高水位(HWM)
- HWM
- 深入了解oracle的高水位(HWM)
- ORACLE 降低 HWM 的集中方法
- armeabi和armeabi-v7a
- 强烈推荐口才与幽默全集,看完了,受益匪浅
- Nginx有什么优点?为什么选择Nginx做web服务器软件?
- 程序员怎么写情书
- extjs load data from mysql with php example
- Oracle中HWM浅谈
- Android.mk文件详解介绍
- ant编译带library的工程
- this with
- 递归实现之无限分类
- 史上最烂的代码
- JFreechart生成带热点的饼图
- 动态规划-各种整数划分
- 互联网系统架构的演进[转]