全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货

表空间是什么

发布时间:2023-12-04 20:04:07
发布人:xqq

表空间是什么?表空间是数据库的一种逻辑结构,它在物理上对应着一个或多个数据文件。平常所讲的表空间管理实际上指的是对表空间所对应的数据文件的空间管理。

Oracle支持两种管理方式,一种是字典管理(简称DMT),一种是本地管理(简称LMT)。这里所说的管理方式是指针对extent的管理方式。

extent也是数据库的一种逻辑结构,它包含一定数量的、连续的Oracle块。它是Oracle的空间分配的最小单位。针对它的管理方式就是指表空间中的extent是如何被管理的(记录extent的free、used使用情况)。

在这两种管理方式中,字典管理方式是Oracle遗留的一种空间管理方式,它采用数据字典表UET$、FET$来记录表空间中extent的使用情况。

每次进行涉及空间管理的操作时,都必须对这两个表进行维护,其影响是显而易见的。当并发提高时,该表上的争用将无法避免被提高,同时将产生大量的undo占用大量系统回滚段,而且在字典管理方式下将产生令人头痛的碎片问题。

本地管理方式是从Oracle 8i开始支持的一种管理方式,也是目前Oracle强烈建议采用的一种方式。它不再利用数据字典表来记录空间使用情况,取而代之的是在数据文件头部增加一个位图区,用位图来记录空间的使用情况,每一个bit都代表着一个extent的使用情况。

数据库中如果不存在dmt类型的表空间,则UET$和FET$中不再有信息。

表空间本身是和SQL语句运行效率相关的,主要包括以下几个方面:

对于DML语句来说,如果涉及空间的扩展,需要有个分配的过程此时,给用户的体验就是SQL执行速度很慢。

从Oracle 10g开始,引入了一个等待事件“data fileinit write”来表示表空间扩展时发生的等待。为Oracle需要将系统块格式化为Oracle数据块,然后才能提供数据库使用。常见的优化策略是在大规模的DML操作之前提前预分配空间的,这样可避免临时的空间扩展导致的效率低下。

对于排序等操作,如果空间消耗较大,需要用到TEMP表空间。如果TEMP空间不足,会导致SQL语句执行失败。因此,对于TEMP表空间的使用要进行监控,对于耗费TEMP较大的SQL需要重点关注,并进行重点优化。

IT培训

相关文章

嵌入式培训课程:探索技术的无限可能

嵌入式培训课程:探索技术的无限可能

2023-12-12
web前端培训:vue实现双向数据绑定原理

web前端培训:vue实现双向数据绑定原理

2023-12-12
嵌入式开发:Linux系统编程的探索与实践

嵌入式开发:Linux系统编程的探索与实践

2023-12-12
Web前端:探索Web前端开发技术的新领域

Web前端:探索Web前端开发技术的新领域

2023-12-12

最新文章

python培训学校靠谱吗?为什么一定要选择千锋教育

python培训学校靠谱吗?为什么一定要选择千锋教育

2023-12-13
培训学校学java靠谱吗?为什么一定要选择千锋教育

培训学校学java靠谱吗?为什么一定要选择千锋教育

2023-12-13
网络安全哪个培训机构靠谱

网络安全哪个培训机构靠谱

2023-12-13
python培训机构可靠吗?为什么一定要选择千锋教育

python培训机构可靠吗?为什么一定要选择千锋教育

2023-12-13
在线咨询 免费试学 教程领取