关于Oracle的高水平线

简介:
关于 Oracle 的高水平线
 
high water mark 故名思义为高水平线 , 一般是相对一个表而言的 , 当一个表有数据不断的插入时 ,high water mark 值不断增高 , 对那些全表扫描的 select 查询是以 high water mark 为终点的 , 虽然表中可能只有一行记录 . 它是表的空间曾经扩充到的值 . 
之所以对hwm产生了兴趣还是缘于下午的那个resize事件,呵呵ITPUB个人空间

 
创建一张 test 表
-- Create table
create table TEST
(
 A CHAR(1024)
);
 
select * from dba_extents where segment_name='TEST'
后见图:表创建的时候会按照初始化参数进行创建,默认是 Initial extent 为 64k ,包含 8 个数据块。
 

 
插入 1000 条原始记录, 1000*1k 约等于 1M
declare
 -- Local variables here
 i integer;
begin
 -- Test statements here
 for i in 1..1000
 loop
   INSERT INTO TEST VALUES(I);
 end loop;
 COMMIT;
end;
 
select SUM(BYTES) from user_extents where segment_name='TEST' 
select * from dba_extents where segment_name='TEST'
后见图:
执行 delete 操作
Delete * from test;
执行后的图与上面一样,没有发生任何变化
 
再执行 truncate 操作,把该表的高水平线恢复到原有的初始化阶段
TRUNCATE TABLE TEST;
后见图:
 
结论:
数据被删除后,高水平线( high-water mark , HWM )并没有复位只是那些空间不再使用而已,再次查询依然会读取 HWH 以前的块查找是否有可用的数据。而截断表将复位 HWH ,告诉这些空间没有保存数据。
 
其他引申出来的问题:
在插入测试 的数据过程中,如果首先插入 100 条、 200 条的时候,数据库 分配区间是以 64k 为单位分配的,当插入到 1000 条时,新分配的区间突然变为 1M 。
我反复查看了该表的 storage 定义
storage
 (
   initial 64K
   minextents 1
   maxextents unlimited
 );
只是没有 next extent 的定义而已,又找了很久 9i 、 10g 的官方文档,发现对 next extent 的解释还是按照早期版本的说法,定义多少分配多少,百思不得其解。
 
还是通过 google 找到的介绍:
先分配 16 个 64K 的 extent ,
0-15 extents 每个大小是 64K 合计大小 1M
16 - 79 extents 每个大小是 1M 合计大小 63M -- 以上两项大小合计 64M
80 - 199 extents 每个大小是 8M 合计大小 960M -- 以上三项大小合计 1024M = 1G
200 -?? extents 每个大小是 64M
 
具体参考文档,详见:
Oracle10g extent autoallocate 分配时,表是如何分配空间
 
Oracle9i tablespace 空间分配中 initial_extent 与 LMT,DMT





本文转自baoqiangwang51CTO博客,原文链接:http://blog.51cto.com/baoqiangwang/312723,如需转载请自行联系原作者
相关文章
|
数据采集 存储 中间件
Python进行网络爬虫:Scrapy框架的实践
【8月更文挑战第17天】网络爬虫是自动化程序,用于从互联网收集信息。Python凭借其丰富的库和框架成为构建爬虫的首选语言。Scrapy作为一款流行的开源框架,简化了爬虫开发过程。本文介绍如何使用Python和Scrapy构建简单爬虫:首先安装Scrapy,接着创建新项目并定义爬虫,指定起始URL和解析逻辑。运行爬虫可将数据保存为JSON文件或存储到数据库。此外,Scrapy支持高级功能如中间件定制、分布式爬取、动态页面渲染等。在实践中需遵循最佳规范,如尊重robots.txt协议、合理设置爬取速度等。通过本文,读者将掌握Scrapy基础并了解如何高效地进行网络数据采集。
|
XML 缓存 前端开发
SpringBoot + MyBatis-Plus构建树形结构的几种方式
SpringBoot + MyBatis-Plus构建树形结构的几种方式
|
机器学习/深度学习 人工智能 算法
面向推理训练一体化的 MNN 工作台
本文聚焦MNN 工作台的两个方面:如何构建强大专业的训练能力、如何解决多任务多模型协作的算法。
1339 0
面向推理训练一体化的 MNN 工作台
|
分布式计算 Spark NoSQL
MongoDB Spark Connector 实战指南
Why Spark with MongoDB? 高性能,官方号称 100x faster,因为可以全内存运行,性能提升肯定是很明显的 简单易用,支持 Java、Python、Scala、SQL 等多种语言,使得构建分析应用非常简单 统一构建 ,支持多种数据源,通过 Spark RDD 屏蔽...
|
14天前
|
存储 关系型数据库 分布式数据库
PostgreSQL 18 发布,快来 PolarDB 尝鲜!
PostgreSQL 18 发布,PolarDB for PostgreSQL 全面兼容。新版本支持异步I/O、UUIDv7、虚拟生成列、逻辑复制增强及OAuth认证,显著提升性能与安全。PolarDB-PG 18 支持存算分离架构,融合海量弹性存储与极致计算性能,搭配丰富插件生态,为企业提供高效、稳定、灵活的云数据库解决方案,助力企业数字化转型如虎添翼!
|
3天前
|
人工智能 移动开发 自然语言处理
阿里云百炼产品月刊【2025年9月】
本月通义千问模型大升级,新增多模态、语音、视频生成等高性能模型,支持图文理解、端到端视频生成。官网改版上线全新体验中心,推出高代码应用与智能体多模态知识融合,RAG能力增强,助力企业高效部署AI应用。
211 0
|
12天前
|
存储 人工智能 搜索推荐
终身学习型智能体
当前人工智能前沿研究的一个重要方向:构建能够自主学习、调用工具、积累经验的小型智能体(Agent)。 我们可以称这种系统为“终身学习型智能体”或“自适应认知代理”。它的设计理念就是: 不靠庞大的内置知识取胜,而是依靠高效的推理能力 + 动态获取知识的能力 + 经验积累机制。
394 135