Oracle 性能优化之—表设计
Oracle表空间设计理念

Oracle表空间设计理念Oracle数据库开创性地提出了表空间的设计理念,这为Oracle数据库的高性能做出了不可磨灭的贡献。
可以这么说,Oracle中很多优化都是基于表空间的设计理念而实现的一:控制用户所占用的表空间配额。
在一些大型的数据库应用中,我们需要控制某个用户或者某一组用户其所占用的磁盘空间。
这就好像在文件服务器中,需要为每个用户设置磁盘配额一样,以防止硬盘空间耗竭。
所以,在数据库中,我们也需要限制用户所可以使用的磁盘空间大小。
为了达到这个目的,我们就可以通过表空间来实现。
我们可以在Oracle数据库中,建立不同的表空间,为其设置最大的存储容量,然后把用户归属于这个表空间。
如此的话,这个用户的存储容量,就受到这个表空间大小的限制。
二:灵活放置表空间,提高数据库的输入输出性能。
数据库管理员还可以将不同类型的数据放置到不同的表空间中,这样可以明显提高数据库输入输出性能,有利于数据的备份与恢复等管理工作。
因为我们数据库管理员在备份或者恢复数据的时候,可以按表空间来备份数据。
如在设计一个大型的分销系统后台数据库的时候,我们可以按省份建立表空间。
与浙江省相关的数据文件放置在浙江省的表空间中,北京发生业务记录,则记录在北京这个表空间中。
如此,当浙江省的业务数据出现错误的时候,则直接还原浙江省的表空间即可。
很明显,这样设计,当某个表空间中的数据出现错误需要恢复的时候,可以避免对其他表空间的影响。
另外,还可以对表空间进行独立备份。
当数据库容量比较大的时候,若一下子对整个数据库进行备份,显然会占用比较多的时间。
虽然说Oracle数据库支持热备份,但是在备份期间,会占用比较多的系统资源,从而造成数据库性能的下降。
为此,当数据库容量比较大的时候,我们就需要进行设置多个表空间,然后规划各个表空间的备份时间,从而可以提高整个数据库的备份效率,降低备份对于数据库正常运行的影响。
三:大表的排序操作。
我们都知道,当表中的记录比较多的时候,对他们进行查询,速度会比较慢。
Oracle数据库性能优化方法

中 图 分 类 号 : P 1 .3 T 3 11
文献标 识码 : A
文 章 编 号 :6 2 7 0 (0 0 0 — 1 2 0 1 7 — 8 0 2 1 )4 0 6 — 2
第9 第4 卷 期
2 1年 4 00 月
软 件 导 刊
Sot r fwae Guie d
Vo. 4 1 No. 9
Ap . r 201 0
Orce数据库性 能优 化方法 al
李晓 丽
( 通 纺 织 职 业 技 术 学 院 信 息 系 , 苏 南通 2 6 0 ) 南 江 2 0 7
是 按照相 反 的顺 序存储 的。通过 将关 键 字反 向 , 以使得 索 引 可
在 B 树 上 更 为 均 匀 的 分 布 , 对 于 O S O al 行 服 务 器 ) 这 P ( rce并 环 境 非 常 有 用 。在 这 种 情 况 下 , 相 同 叶 节 点 块 的 竞 争 将 会 导 对
( ) 不平 衡 的 B 2为 树索 弓 创 建 反 转 关 键 字 索引 : 向 键 l 反
索引是 一 种 B %树 索 引 。 在 这 种 索 引 方 式 中 , 键 字 值 的 字 节 关
索引 之 后 , 系统会 自动地 利 用索 引 进 行快 速检 索 , 户 不需 知 用
道表 上是 否有 索引 以及 表有 什么类 型 的索 引等细节 。
些 小 的 S L语 句 每 天 可 能 被 访 问 成 千 上 万 次 。 Q
要建 立合 适 的索 引 , 必须 考 察 slc 和 w ee子 句 , 为 还 eet hr 因
oracle优化方法总结

千里之行,始于足下。
oracle优化方法总结Oracle优化是提高数据库性能和响应能力的重要步骤。
本文总结了一些常见的Oracle优化方法。
1. 使用索引:索引是提高查询性能的主要方法。
通过在表中创建适当的索引,可以加快查询速度,并减少数据访问的开销。
但是要注意不要过度使用索引,因为过多的索引会增加写操作的开销。
2. 优化查询语句:查询语句的效率直接影响数据库的性能。
可以通过合理地编写查询语句来提高性能。
例如,使用JOIN来替代子查询,尽量避免使用通配符查询,使用LIMIT来限制结果集的大小等。
3. 优化表结构:表的设计和结构对数据库的性能也有很大的影响。
合理的表设计可以减少数据冗余和不必要的数据存储,提高查询速度。
例如,适当地使用主键、外键和约束,避免过多的数据类型和字段等。
4. 优化数据库参数设置:Oracle有很多参数可以用来调整数据库的性能。
根据具体的应用场景和需求,可以根据情况调整参数的值。
例如,调整SGA和PGA的大小,设置合适的缓冲区大小,调整日志写入方式等。
5. 使用分区表:当表的数据量很大时,可以考虑将表分成多个分区。
分区表可以加速查询和维护操作,提高数据库的性能。
可以按照时间、地域、业务等来进行分区。
6. 优化存储管理:Oracle提供了多种存储管理选项,如表空间和数据文件管理。
合理地分配存储空间和管理数据文件可以提高数据库的性能。
例如,定期清理无用的数据文件,使用自动扩展表空间等。
第1页/共2页锲而不舍,金石可镂。
7. 数据压缩:对于大量重复数据或者冷数据,可以考虑使用Oracle的数据压缩功能。
数据压缩可以减少磁盘空间的使用,提高IO性能。
8. 使用并行处理:对于大型计算或者批处理任务,可以考虑使用Oracle的并行处理功能。
并行处理可以将任务分成多个子任务,并行执行,提高处理能力和效率。
9. 数据库分区:对于大型数据库,可以考虑将数据库分成多个独立的分区。
数据库分区可以提高数据的并行处理能力,减少锁竞争和冲突,提高数据库的性能。
oracle数据库应用系统的性能优化

户 进 程 所 需 的 所 有数 据 都 是 经 过 缓 冲 区高 速 缓 存
独立 。Orce al具有 良好 的硬 件环 境独 立性 ,支持 各
( 山职业技术学院,唐山 0 3 0 ) 唐 6 0 0 摘 要 :o a l数据库性能优化对于保证 系统安全 ,信息安全 ,业务正常运作具有重要影 响。全文首先 r ce 简要介绍了o a l r ce 数据库及特点 ,然后对数据库性 能的评价指标做出一般性概述。随后从C U P 利用和内存分 配这 两方面阐述了数据库性能优化 的主要方向 。最后介绍了o a l r ce 数据库应用系 统性能优 化技 术 ,Is l  ̄ a语句优化 ,o a l内存调整 ,o a l 空间调整 。 D r ce r ce 表
行 ,保 险 ,烟 草 ,石 油 等 大数 据 量 ,对 安 全 性 要
求较 高 的企 业 。其 特 点主 要体 现在 :1 )支持 大数
据库 、 多用 户的 高性 能事 务处理 O al支持最 大数 rce
据库 ( 百T 几 B),可充 分 利 用硬 件 设 备 。支 持 大 量 用 户 同 时在 同一 数 据 上 执 行各 种 应 用 ,并 使数 据争 用 最 小 ,保 证 数 据 的一 致 性”。2 )硬 件 环境
关键 词 :o a l数据库 ;性能优化 ;内存分 配 r ce 中图分类号 :T 9 P3 2 文献标识码 :A 文章编号 :1 0 - 1 4 2 1 )8 0 0 — 3 9 0 ( 0 0 — 24 0 0 3 0
Doi 1 . 9 9 J is 1 0 -0 4. 0 . 8 6 : 3 6 / . n. 9 1 0 s 0 3 2 1 0 .4 0
、 1
勺 化
论Oracle数据库的性能优化问题

马 红 云
( 中国民用航 空大连 空中交通管理站 辽宁大连 1 1 6 0 3 3 )
摘要 : Or a c l e 数 据库作 为 目前适 用性 最好 的关 系数据库 引擎之 一, 能够 支持 各种业 务形式 、 处理各 种复 杂事务 , 得 到极 为广泛 的应 用。
1对数据库服务器 内存分配的调整
由于对服务器 内存参数 的调整对o r a c l e 的性能影响显著 , 它成 为O r a c l e  ̄据库性能调 优的首选对象。 服务器 内存参数 的调整主要 是对数据库系统全局 区的调整 , 系统全局 区包括共享池、 数据缓冲 区、 日志缓冲区 。 其 中最主要的是对数据缓冲区和共享池 的参数调
3 . 2表 的分 区和 并行 技 术
如果必须要在数据库运行特别耗时的操作。 应尽量地把这样的 操作分解 , 严格 限制操作所涉及的记录数 , 并设法使操作并行 , 充分 地提高 执行效率 。 ( 1 ) 使用分区 分区技术有两个潜在的好处: 提高查询性能和提 高数据 库可用性 。 数据库查询 时, 优化器知道那些分区包含查询所 要的数据 。 而其它分 区数据将不会被读取 , 从而查询 任务将更快完 成。 许 多 管 理 工 作 可 在 只 一个 分 区上 进 行 , 而 不 影 响 其它 分 区 的数 据。 例 如 可 以选 择 只 删 除一 个 表 分 区 中 的数 据 。 可对 表 分 区进 行 再 分割 , 把一个表分区迁移到不同的表 空间上 。 可只对 一个表分 区进 行分析 统计 。 表分区的这 些特性 。 ( 2 ) 使用并行 。 Or a c l e 数据库 中几乎 所有的操作都 支持 并行 特 性, 包括查询、 插入 、 和数据加载。 并行选项可 以使多个处理器 同时 处理一条命令 , 在创建库数据库对象 时可以设定 并行参数 , 也可在 查询语句 中重新设 。
浅谈ORACLE数据库的性能优化

内存是 O A L R C E数据库体系结构中最为重要 的部分之一 , 也是影 响 数据库性能 的第一个 因素 。在 O A L 数据 库中 , R C E 服务器 内存直接影响 数据库 的运行 速度 ,按照系统对 内存 的使用方法 , R C 数据库 的内 O AL E 存 可 以分 为 系统 全局 区 ( G ) S A ,程序全 局 区 ( G ) P A 、排序 区 (O T SR
12 利用初始化 参数调整 内存 .
A mn t t , d i s a r 以下简称 D A 来 讲 , ir o B ) 如何监 控 、 调整 服务 器 和数据库 性 能, 防止出现数据瓶颈 , 使数据库保持最佳性能 , 限的计算 机系统资 让有 源为更多 的用户服务 ,就显得尤 为重 要 ,也是 D A 日 B 常维护 的基本内 容。 数据库性能调整设计数据库软 、 件的方方 面面 , 硬 笔者根据工作实践 仅对其 中一些方法进行探讨 。
在 O C E的初始化文件 I ISDO A中有些初始 化参 数可 以调 A R L NT I .R 整 O C E的 内存使 用情况 。参 数 D — L C _ I E与数据块 大小有 A R L BBO KS Z 关 , S A大小和数据库性 能的决定 因素 , 是 G 每个缓 冲区的大小等于该参 数 的大小 。通过调整该参数可以提高系统的命 中率 , 有效减少 I / O冲突 。 在 数据库安装过程 中就要对该参数进行设 置 , 一般大型的企业级应用 系
地对 数据 库进 行性 能优 化 ] 。因此 ,对 于数据 库 管理 员 ( aaB s D t ae
及用户全局区( S RG O A R A 3 U E L B LA E ) 个部分 , 其中库缓 冲区含有 S L Q 语句的分析码 、 执行计划 ; 数据 字典缓 冲区含有从数据字典 中得到 的表 、 列定义、 权限; 用户全局 区包含用户的 M S T 会话信息 。
Oracle数据库性能优化分析

中图分 类 号 : P T
文献 标 识码 : A
文 章编 号 : 0 8 9 5 2 1 ) 3 0 2 — 3 1 0 - 2 X( 0 1 0 — 1 1 0
摘要: 随着网络的普及, 电子商务技术得到了迅速 发展 各个站点的访问量随之增大 , ・ 数据库规 模也不断扩大, 数据库系统的性能
2 系统 调整 、
4 通 过 添 加 显示 图来测 试 系统 的响应 时 间 、
31 案一 : .方 不采 用任 何 优化 技 术来 测试 系 统 的性 能 1创 建 用户 : 认存 储 在 ues 空间 内; . 默 sr 表
一
2 数据准备: 建数据表, . 创 包括 三 张数 据 字典 , 张业 务 表 , 两 个 用 户表 , 张 表存 在 六个 关 联 。 中主 业 务 表 ( rgn表 ) 六 其 D al
问题就越来越被广泛关注。 因此, 如何对数据库进行优化至关重 本 文 对这一问 要口 针 题使用0al ̄ rce
酶啦豫I 鸯募
l f l 研究对象进行研究。 通
过索引 划分表空间、 优化 回滚段、 等技术, 分区 对数据库的存储 结构 和存储路 径进行优化 , 对数据库性能进行测试, 寻找一套最佳 关键词: 数据库优化 分莲 索引 回滚段
很 多因素都 会影 响服务 :J Oal  ̄ L re 的性 能: r l e Oae c 实例的调整 、 操 字 段 , 后确 定 预 索 引字 段 的 选 择 性 并 对选 择 性 高 的 字段 设 置 索 最
作系统 、 件 以及 由用户所产生 的数 据库 负载等 等 。 多 因素 都可 能 引 。 硬 很 确定 索 引的选 择 性 , 以有两 种 方 法 : 可 手工 测量 和 自动测 量 。
Oracle数据库性能优化方案

关
键
词: 数据库 优 化; rc ;G IO O al S A; e / 文献 标识 码 : A
中 图分 类 号 : P3 1 1 T 1, 3
O p i i a in o r ce da a s r o m a e tm z to fO a l t ba e pe f r nc
Abs r c : e o tmiai n o aa a e p roma c r c l n u n e h f ce to e a in o h n t a t Th p i z to fd t b s ef r n e die t i f e c st e ef i n p r to ft e e — y l i tr aa a e a p ia in s se ie d t b s p lc to y t m,S me o he Or ce d t b s p r to s a d o tmii d l r i— o ft a l a a a e o e ai n n p i zng mo e s ae d s c s e fc sn n t e me r lo ai n a d d s /O p i z t n. t z d p o r ms o TP a d u s d,o u i g o h mo y alc to n ik I o tmia i Op i e r g a fOL n o mi daa wa e o s e o a c r r p s d frdi e e td t r c s i g me h d . t r h u e p r r n e a e p o o e o f r n a a p o e sn t o s fm f K e r : aa a e o i z t n; a l S y wo ds d tb s pt miai o Or c e; GA ;/O I
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
聚簇表
ORD_NO ----101 102 102 102 101 101
PROD -----A4102 A2091 G7830 N9587 A5675 W0824
QTY -----20 11 20 26 19 10
...
Cluster Key (ORD_NO) 101 ORD_DT CUST_CD 05-JAN-97 R01 PROD QTY A4102 20 A5675 19 W0824 10 102 ORD_DT CUST_CD 07-JAN-97 N45 PROD QTY A2091 11 G7830 20 N9587 26
3
•
索引组织表的适用情况: 1、 代码查找表。 2、 经常通过主码访问的表。 3、 构建自己的索引结构。 4、 加强数据的共同定位,要数据按特定顺序物理存储。 5、 经常用between…and…对主码或唯一码进行查询。数据物理上分类查 询。如一张订单表,按日期装载数据,想查单个客户不同时期的订货和统计 情况。
•
OVERFLOW子句(行溢出) 因为所有数据都放入索引,所以当表的数据量很大时,会降低索引组织表的查 询性能。此时设置溢出段将主键和溢出数据分开来存储以提高效率。溢出段 的设置有两种格式: PCTTHRESHOLD n :制定一个数据块的百分比,当行数据占用大小超出时 ,该行的其他列数据放入溢出段 INCLUDING column_name :指定列之前的列都放入索引块,之后的列都放 到溢出段 ● 当行中某字段的数据量无法确定时使用PCTTHRESHOLD。 ● 若所有行均超出PCTTHRESHOLD规定大小,则考虑使用INCLUDING。
目 录
1 2 3 4 5
表简介
聚簇因子) 集群因子 (聚簇因子)
表分区(主要是纵向分区) 表分区(主要是纵向分区)
表重构 索引重构
1
堆表 • 堆表
以一种随机的方式管理。数据会放在最合适的地方,而不是以某种特定 顺序来放置.存储快,读取慢。 一般需要增加索引来提高数据检索效率.
2
索引组织表
把索引和一般数据列全部存储在相同位置上的表结构.存储慢,通过主键读取快.
120 330 220 580 DDD DDD EEE
索引2
11
集群因子越低通过索引读取的块越少,速度越快! 我们建表时需要考虑表的特性,对不同的表制定不同的建表策略来达到数据存取的最优。
12
分区表(主要是纵向分区)
分区有横向和纵向分区,一般所说的分区都是指横向分区,而忽略纵向分。 横向分区有:区间分区、散列分区、列表分区、组合分区,这些内容很多此 次不打算讲。主要讲纵向分区。 纵向分区非常简单就是把表里的不常用的字段移到另一个表,这样可减少检 索数据读取的数据块,达到优化目的。
10
集群因子 (聚簇因子)
• 集群因子: 集群因子:指按照索引列值进行了索引排序和对应表中数据行序的相似程度 。 0001 0001 0001 0001 0001 0002 0002 0003 0004 0005
索引1
0001 0001 00 100 300
使用哈希聚簇指南 • 当经常使用有相同列的包含相等条件的查询子句访问表时,考虑使用哈希聚 簇来存储表。使用这些列作为聚簇键。 • 如果可以确定存放具有给定聚簇键值的所有记录所需的空间(包括现在的和 将来的),则将此表以哈希聚簇存储。 • 如果空间不够,并且不能为将要插入的新记录分配额外的空间,那么不要使 用哈希聚簇。 • 如果偶尔创建一个新的、很大的哈希聚簇来保存这样的表是不切实际的,那 么不要用哈希聚簇存储经常增长的表。 • 如果经常需要进行全表搜索,并且必须要为表的预期增长中的哈希聚簇分配 足够的空间,则不要将此表以哈希聚簇存储。(这样的完全检索必须要读分 配给哈希聚簇的全部块,即使有些块可能只包含很少的记录。单独地存储表 将减少由完全的表检索读取的块的数量。) • 如果你的应用程序经常修改聚簇键的值,则不要将表以哈希聚簇方式存储。 • 不管这个表是否经常与其他表连接,只要进行哈希对于基于以前的指南的表 是合适的,那么在哈希聚簇中存储一个表可能是有用的。
ORD_NO -----101 102
ORD_DT CUST_CD ----------05-JAN-97 R01 07-JAN-97 N45
Unclustered orders and order_item tables
Clustered orders and order_item tables
表对比
6
使用索引聚簇指南 • 考虑对经常在连接语句中访问的表建立聚簇 • 如果表只是偶尔被连接或者它们的公共列经常被修改,则不要聚簇表。(修 改记录的聚簇键值比在非聚簇的表中修改此值要花费更多的时间,因为 Oracle必须将修改的记录移植到其他的块中以维护聚簇)。 • 如果经常需要在一个表上进行完全搜索,则不要聚簇这个表(对一个聚簇表 进行完全搜索比在非聚簇表上进行完全搜索的时间长,Oracle可能要读更多 的块,因为表是被一起存储的。) • 如果经常从一个父表和相应的子表中查询记录,则考虑给1对多(1:*)关系 创建聚簇表。(子表记录存储在与父表记录相同的数据块中,因此当检索它 们时可以同时在内存中,因此需要Oracle完成较少的I/O)。 • 如果经常查询同一个父表中的多个子记录,则考虑单独将子表聚簇。(这样 提高了从相同的父表查询子表记录的性能,而且也没有降低对父表进行完全 搜索的性能)。 • 如果从所有有相同聚簇键值的表查询的数据超过一个或两个Oracle块,则不 要聚簇表。(要访问在一个聚簇表中的记录,Oracle读取所有包含那个记录 值的全部数据块,如果记录占据了多个数据块,则访问一个记录需要读的次 数比一个非聚簇的表中访问相同的记录读的次数要多)。 7
3
3
4
4
8
75
95
14
索引重构
• 和表重构是一样的道理,经过长时间的修改、删除会造成很多没有用的空块. 通过使用nologging 和parallel degree 8 ,创建索引大多情况下不需要记录log。
• •
Alter index index_name rebuild nologging; Alter index index_name rebuild partition partition_name nologging;
4
堆表与索引组织表
堆表 索引组织表
Table access by ROWID
Non-key columns Key column Row header
聚簇表
聚簇表是指:如果一组表有一些共同的列,则将这样一组表存储在相同的数据库 块中。把相关数据存储在同一个块上。 可以通过设置Size值来限制一个块上最多只能存储多少个不同的聚簇。
0005 0008 0009 0010
AAA TTT RRR HHH
980 320 330 560
AAA AAA AAA BBB CCC
0001 0003 0001 0002
EEE DDD AAA FFF
300 400 600 550
数据块
0120 0340 0900 0190
NNN OOO SDF DSS
13
表重构
• 表重构就是把表里的数据重新插入一遍,这样做的好处有回收垃圾空间、使 用表里的数据存储便有连续性、减少行迁移,方便I/O的读取。
刚初始化后数据存储情况
1
2
3
3
3
3
4
4
4
4
使用一段时间后,因为删除了数据和添加了数据的存储情况
95
3
75
3
4
8
9
4
表重构后,表空间收缩后
95
3
75
3
4
8
4
能否把存储情况改成和索引顺序一至,提高集群因子,减少读取的数据块
15
从理论上来看, 从理论上来看,根本就不存在一种能够满足 所有读取要求的数据存储方式
16
比较项 存储 行的唯一识别 主健是否必须指定 行的读取 全表扫描 能否使用聚簇 分区的应用 并行处理
堆表 随机存储(快) ROWID 可以不指定 使用ROWID进行读取 按任意顺序返回行(慢) 可以 允许 允许
索引组织表 按索引排序存储(慢) 主键 必须指定 使用主键读取 按主键顺序返回行(快) 不能 版本不同有所差别 版本不同有所差别