1数据的存储结构和特征

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
行的读取 全表扫描 能否使用聚簇 LONG,LONG RAW,LOB Distributed SQL Data Replication 分区的应用
并行处理
堆表
索引组织表
ROWID 可以不指定 使用ROWID 使用ROWID进行读取 按照任意顺序返回
可以 LONG类型的列只能有一个
允许
主键 指定(主键必须存在) 逻辑ROWID或者Bitmap索引
英语 63 78
新华字典 通过发音,部首,笔画等多个维度的索引查询汉字。
结论:索引和数据分开存放的策略会导致两次查找操作;但确使
得数据的存储不受索引的影响
表和索引相互分离:各自作为不同的对象存储是关系型数据库中最常见
的数据存储方式。在海量数据管理方面是最佳方式。
7
2. 堆表—— 堆表的结构
•数据的存储方式与数据值没有 明显关联,只是按照先后顺序 无条件的插入到数据块中。
在利用索引从堆表中读取数据时,读取代价会随着处理范围的变大 而增加。这并不是因为索引扫描的原因,而是因为查找表时可能发 生的大量随机读。最坏情况不过是为了读取一行记录而需要从磁盘 上把一个新的数据块读入到内存中。
15
3.索引组织表—— 堆表和索引组织表的比较
堆表和索引组织表的比较
比较项 行的唯一标识 主键是否必须指定 Secondary索引的创建
2
1. 概述
随机存储方式在写入数据时可以轻而易举的进行存储,在查询时
候则要付出更高的代价;
固定存储方式在写入数据时花费了时间和精力,则在查询上获得
性能的提升。

永远是数 据库设计 的矛盾

3
1. 概述
选择哪一种存储策略? 取决于业务需求【希望更快的写入还是更快的查询】; 取决于数据量的大小【和内排序算法类似,对于只有极少数的数据量可
•PCTFREE:用来为一个块保留 的空间百分比,以防止在今后 的更新操作中增加一列或者多 列值的长度。
• PCTUSED:一个块的使用水位的百分比,这个水位将使该块返回 到可用列表中去等待更多的插入操作。
• 预留空间是为UPDATE使用,以尽量减小行连接和行迁移所带 来的性能损失。
8
2. 堆表—— 堆表的查询
索引组织表的最大优点并不是不经过索引而减少了一次逻辑读所形成的数字上 的差异。在小量随机读中,索引组织表读取效率并不高;但在大范围的数据扫 描中却可以获得非常高的读取效率。【顺序读的效率由于随机读】
5
数据的存储结构和特征
1. 概述 2. 堆表 3. 索引组织表 4. 聚簇表
6
2. 堆表
堆表采用索引和表数据分开存储的策略。 键和数据是否应该存放在一起?
学生成绩单 以学号为键,查找学生的成绩信息
学号 2010210888 2010210889
姓名 孟显耀
张三
语文 61 96
数学 62 45
9
2. 堆表—— 堆表的查询
ROWID:
对象号 + 数据文件号+ 数据块号 + Slot号
10
2. 堆表—— 堆表的查询
行迁移
举个例子,当我们要搬家的时候,为了能够让人依然能够找到我们,我们会把新地 址告诉给以前的物业人员。Oracle 采用同样的原理,将新行的地址存储在移动之前 的旧地址中。带来的性能损失:需要读取两个数据块!
数据的存储结构和特征
1. 概述 2. 堆表 3. 索引组织表 4. 聚簇表
1
1. 源自文库述
在关系数据库中有很多种数据存储方式,有些DBMS全部支持,有 些则只支持其中的一部分。数据库的存储方式至关重要,它对数据 的修改和查询都有直接的影响。
存储方式可分为两种:随机存储方式和固定存储方式。前者
存储效率必然要高于后者。但如我们的人生一样,得到多少就意味 着要失去多少。
负担; 对表的重构操作影响因素最大的是并行处理.
13
数据的存储结构和特征
1. 概述 2. 堆表 3. 索引组织表 4. 聚簇表
14
3.索引组织表
索引组织表是把索引和一般数据列全部存在相同位置上的表结构。 如果读取了索引,则就没有必要读取表了。【二者是一次性读取】
如果大部分查询语句都要求对主键进行扫描,且主键的长度在整个 行中所占的比例并不大,则就没有必要将索引和表分开存放。
2. 磁盘的顺序读和随机读相比节省了寻道时间和旋转延时.
数据的存储方式直接影响数据的读取效率,不可等闲视之
4
1. 概述
关键点 存储方式只能选择一种; 存储方式不可轻易改变。
我们能做的 具体情况具体分析,选择一种最理想的存储方式以提高数据的
存储效率。 三种数据的存储方式 堆表 索引组织表 簇表
能不需要快速查找,使用冒泡法或者简单查找更为有效】;
取决于读写比例.
建议:将经常需要一起读取的数据集中存储在一起,则不论处理范围【不
论是全表数据和某个特定范围数据】有多大都能获得更好的读取效率。
原因:
1. 数据库读取的单位是Block,不是Row,如果一起读取的数据集中存放, 则需要读取的Block数目将减少【数据库查询性能直接有IO次数决定】;
联地被存储在磁盘的任意位置上。
聚簇因子是指按照索引值进行了排序的索引行序和对应表中数据行序的相似
程度。
12
2. 堆表—— 聚簇因子
如何提高聚簇因子?
提高聚簇因子最无力的措施就是采用堆表:采用随机存储方式; 定期对表执行重构可以达到提高聚簇因子的效果; 表重构代价较大,但是可以放在空闲时间进行,因此不会给系统造成很大
行连接
当某个行所需要的存储空间大小超过一个数据块的空间大小,则无论如何也无法将 其一个整行存储在一个块中。此时必须把所需要的数据块连接在一起来存储这个较 大的行。
行的大小是可变的
数据块的大小在建立 DB之后是不可变的
建库之前一定要 考虑到行的最大长度
11
2. 堆表—— 聚簇因子
堆表的最大特征是数据的存储独立性,即数据的存储与数据值没有任何关
使用主键进行读取 按照主键的顺序返回行
不能 不能有LONG类型 因版本不同而有所差别
允许
因版本不同而有所差别
允许
因版本不同而有所差别
P19 表1-1• 因版本不同而有所差别
允许
• 通过CTAS加载数据 • 分区和一般IOT并行高速全表扫描
• 分区IOT的并行扫描索引
16
3.索引组织表—— 堆表和索引组织表的比较
相关文档
最新文档