PowerPoint Presentation



Similar documents
ebook 96-16

Oracle高级复制冲突解决机制的研究

ebook10-5

Oracle 4

Oracle数据库应用技术4 [兼容模式]

数 据 库 系 统 基 础 2/54 第 6 章 数 据 库 管 理 与 维 护

學 科 100% ( 為 單 複 選 題, 每 題 2.5 分, 共 100 分 ) 1. 請 參 閱 附 圖 作 答 : (A) 選 項 A (B) 選 項 B (C) 選 項 C (D) 選 項 D Ans:D 2. 下 列 對 於 資 料 庫 正 規 化 (Normalization) 的 敘

习题1



untitled

6-1 Table Column Data Type Row Record 1. DBMS 2. DBMS MySQL Microsoft Access SQL Server Oracle 3. ODBC SQL 1. Structured Query Language 2. IBM

使用SQL Developer

untitled

01

PowerPoint Presentation

未命名

Oracle Database 10g: SQL (OCE) 的第一堂課

目錄... ivv...vii Chapter DETECT

DB2 (join) SQL DB2 11 SQL DB2 SQL 9.1 DB2 DB2 ( ) SQL ( ) DB2 SQL DB2 DB2 SQL DB2 DB2 SQL DB2 ( DB2 ) DB2 DB2 DB2 SQL DB2 (1) SQL (2) S

2016 年 地 质 工 程 系 教 学 工 作 安 排 2016 学 年 我 系 将 在 总 结 过 去 工 作 的 基 础 上, 结 合 今 年 学 院 以 抓 质 量 强 内 涵 促 改 革 调 结 构 建 品 牌 细 管 理 重 过 程 为 宗 旨, 以 规 范 管 理 深 化 内 涵 为

<4D F736F F D203136BCADBBD8D2E4D3EBD1D0BEBF2E646F63>


Microsoft Word - 9pinggb_A4.doc

Microsoft Word - 9pinggb_A4-f4.doc

理 论 探 索 事 业 单 位 改 革 的 五 点 思 考 余 路 [ 摘 要 ] 事 业 单 位 改 革 是 中 国 改 革 的 重 要 环 节, 其 影 响 力 和 难 度 不 亚 于 国 有 企 业 改 革 本 文 着 重 围 绕 推 进 事 业 单 位 改 革 应 考 虑 的 五 个 方 面

2深化教育教学改革、创新人才培养模式

Microsoft Word - 9pinggb_let.doc

实 习 上 下 点 表 格 解 释 和 相 关 纪 律 要 求 : 1 表 格 中 所 有 名 词 都 为 简 称, 包 括 医 院 名 称 四 年 级 五 年 级 各 专 业 名 称 等 所 有 时 间 都 为 学 生 装 好 行 李 出 发 时 间, 请 提 前 0 分 钟 将 行 李 运 到

简报158期.doc

Microsoft Word - 9pingb5_let.doc

退休權益.ppt [相容模式]

Microsoft Word - 1.《國文》試題評析.doc

$%%& ()*+, %&, %-&&%%,. $ %,, $,, & /$- 0(1 $%%& %& 234 %-%, 5&%6&633 & 3%%, 3-%, %643 -%%% :::; 7<9; %-%, 3$%$ :::;

# $# #!# # # # # # # %# # # &# # # # #! "

第 一 节 认 识 自 我 的 意 义 一 个 人 只 有 认 识 自 我, 才 能 够 正 确 地 认 识 到 自 己 的 优 劣 势, 找 出 自 己 的 职 业 亮 点, 为 自 己 的 顺 利 求 职 推 波 助 澜 ; 一 个 人 只 有 认 识 自 我, 才 能 在 求 职 中 保 持

目錄

untitled

5 1 文 书 原 件 优 先 的 原 则 和 例 外 兼 评 最 高 人 民 法 院 关 于 民 事 诉 讼 证 据 的 若 干 规 定 第 69 条 / 纪 格 非 论 点 与 思 考 5 3 优 先 受 偿 权 是 什 么 权? 浅 谈 建 筑 工 程 优 先 受 偿 权 的 性 质 及 价

早 期 療 育 教 保 人 員 應 具 備 下 列 資 格 之 一 : 一 專 科 以 上 學 校 醫 護 職 能 治 療 物 理 治 療 教 育 特 殊 教 育 早 期 療 育 幼 兒 教 育 幼 兒 保 育 社 會 社 會 福 利 社 會 工 作 心 理 輔 導 兒 童 及 少 年 福 利 或

陕 西 省 城 市 社 区 社 会 管 理 创 新 现 状 困 境 及 建 议 一 陕 西 省 城 市 社 区 管 理 现 状 分 析 ( 一 ) 社 区 社 会 管 理 创 新 的 重 要 举 措 1. 高 度 重 视 社 区 的 社 会 管 理, 积 极 探 索 总 结 经 验 自 2000 年

1-8章.indd

目 錄 大 會 歡 迎 詞 裁 判 長 的 話 選 手 賽 前 準 備 清 單 賽 事 日 程 表 選 手 報 到 比 賽 日 - 大 會 服 務 關 門 時 間 台 東 關 門 時 間 轉 換 區 須 知 台 東 轉 換 區 須 知 自 行 車 檢 錄 轉 換 袋 台 灣 游 泳 公 里 游 泳

事 業 單 位 改 組 或 轉 讓, 舊 勞 工 不 願 意 續 任 者, 可 否 請 求 資 遣 費? 工 或 與 勞 工 協 商 同 意 後 簽 訂 新 約, 以 穩 固 勞 雇 關 係 至 於 改 組 或 轉 讓 過 程 中, 被 商 定 留 用 之 勞 工, 如 因 其 勞 動 條 件 有

Microsoft Word - 江湖行帮趣话

<4D F736F F D20AAFEA5F333B4E5AA61B1D0BEC7BFC4A44AA655BBE2B0ECA544C3445FB5A3B8D6B3D0A740B1D0BEC72E646F63>

105年公務員申領或侵占小額款項

Microsoft Word - prac_exp13.doc

关于印发《实验室骨干教师评聘及管理办法》的通知

Microsoft Word - report.doc

11.2 overview

oracle-Ess-05.pdf

untitled

NT 4

PowerPoint 演示文稿

ebook 165-5

Microsoft PowerPoint - Ch6

目 錄 1. 青 椒 炒 肉 絲 2 2. 茄 汁 燴 魚 片 3 3. 乾 煸 四 季 豆 4 4. 黑 胡 椒 豬 柳 5 5. 香 酥 花 枝 絲 6 6. 薑 絲 魚 片 湯 7 7. 醋 瓦 片 魚 8 8. 燜 燒 辣 味 茄 條 9 9. 炒 三 色 肉 丁 榨 菜 炒

123

一 個 SQL Injection 實 例 的 啟 示 頁 2 / 6 因 此, 在 知 名 網 站 上 看 到 SQL Injection, 讓 人 驚 心, 卻 不 意 外 網 站 專 案 外 包 是 目 前 業 界 的 常 態, 而 在 價 格 取 勝 的 制 度 下, 低 價 得 標 的 S

数 据 库 管 理 第 章 (1) 创 建 一 个 简 单 的 表 空 间 Create tablespace user1 datafile 'e:\database\oracle\user1_data.dbf' size 00M; () 指 定 数 据 文 件 的 可 扩 展 性 Create t

SA-DK2-U3Rユーザーズマニュアル

<4D F736F F D20C9CFBAA3CAD0BCC6CBE3BBFAB5C8BCB6BFBCCAD4C8FDBCB6BFBCCAD4B4F3B8D95FBDA8D2E9B8E55F5F E646F63>

Transcription:

数 据 库 培 训 项 目 研 究 Oracle 索 引 探 究 B*tree 索 引 与 位 图 索 引 的 特 点 作 者 : 赵 超 2008 年 12 月 18 日

实 验 环 境 Windows-server2003 内 存 :2G Oracle 10.2.0 ORACLE_SID=orcl

索 引 类 型 B*tree 索 引 ( 默 认 方 式 ) 位 图 索 引 (bitmap) 反 向 键 索 引 (reverse key) 位 图 连 接 索 引 (bitmap Join) 基 于 函 数 的 索 引 (function-based) 域 索 引 (domain) B*tree 索 引 是 比 较 基 础 的 索 引, 大 多 数 索 引 是 在 其 存 储 结 构 上 的 此 外, 根 据 不 同 的 分 类 方 法, 可 分 为 不 同 的 类 型 : 根 据 存 储 结 构 可 共 分 为 b*tree 索 引 位 图 索 引 反 向 索 引 ; 按 照 索 引 个 数 可 分 为 单 列 索 引 复 合 索 引 ; 按 照 索 引 列 值 唯 一 性 可 分 为 唯 一 性 索 引 和 非 唯 一 性 索 引

B*tree 索 引 B*tree 索 引 :B 是 (balance) 是 默 认 的 索 引 类 型, 是 数 值 的 有 序 列 表 他 是 基 于 二 叉 树, 索 引 的 顶 层 是 根 块 儿, 指 向 下 的 分 支 块 儿, 最 终 指 向 叶 块 叶 块 中 包 含 被 索 引 列 的 值 和 行 所 对 应 的 rowid 结 构 : 少 于 等 于 50 大 于 等 于 50 50-75 75-100 >100 0-25 25-50 100 rid 101 rid 102 rid ~~~ 50 rid 51 rid 52 rid ~~~ 25 rid 26 rid 27 rid ~~~ 0 rid 2 rid 3 rid ~~~

位 图 索 引 Oracle 7.3 版 本 开 始 引 入, 企 业 版 和 个 人 版 支 持, 标 准 版 不 支 持 位 图 索 引 是 一 个 索 引 键 条 目 存 储 指 向 多 个 指 针 ; 有 很 少 的 索 引 条 目, 每 个 条 目 指 向 多 行 行 值 :A/B A 1 0 0 1 B 0 1 1 0

用 户 创 建 用 户 test create user test identified by test default tablespace users quota unlimited on users temporary tablespace temp; 授 权 :create table,create index, connect,plustrace 角 色 等 等

实 验 表 建 表 : Create table order2 (a1 number(10), a2 varchar2(40), a3 varchar2(20), a4 number(10),a5 number(10), a6 varchar2(20),a7 varchar2(20)); 插 入 值 : begin for i in 1..10000000 Loop insert into order2 values(i,dbms_random.string( a',30), dbms_random.string( b',30), dbms_random.value(1,100), dbms_random.value(1000,100000), dbms_random.string( c',30), chr(round(dbms_random.value(97,98)))); if mod(i, 10000) = 0 then Commit; end if; end loop; end; / 表 说 明 :a1 字 段 中 的 值 为 唯 一 性 值, 各 不 相 同 ;a2 a3 a6 中 的 值 为 极 少 数 相 同 ;a4 100 个 不 同 的 值,100/10000000=0.00001, 比 例 非 常 小 ;a5 99000 个 值, 99000/10000000=0.0099 ;a7 只 有 两 个 值 2/10000000=0.0000002; 其 中 这 个 比 例 可 以 叫 做 基 数, 越 小, 选 择 做 位 图 索 引 越 有 可 能

语 句 执 行 跟 踪 使 用 autotrace 自 动 为 用 户 指 定 execution plan Sys 建 立 PLAN_TABLE 表 : @$ORACLE_HOME/rdbms/admin/utlxplan.sql, 建 立 plustrace 角 色 : @$ORACLE_HOME/sqlplus/admin/plustrace.sql Set autot on 或 者 set autotrace traceonly 每 一 次 执 行 查 询 插 入 等 操 作 均 执 行 shutdown immediate 清 空 缓 存

a1 未 建 立 索 引 Select * from order2 where a1=1; Select * from order2 where a1=20000; Select * from order2 where a1=9999999; Select * from order2 where a2=yuxvfnftll;

Select * from order2 where a1>=1 and a1<=1000000; Select * from order2 where a1>=1 and a1<=3000000

a1 建 立 b*tree 索 引 Create index ix_order2_a1 on order2(a1) nologging; Nologging 可 以 减 少 归 档 空 间

Select * from order2 where a1=1; Select * from order2 where a1=20000; Select * from order2 where a1=9999999; Select * from order2 where a2=yuxvfnftll;

Select * from order2 where a2= yuxvfnftll and a1=9999999;

Select * from order2 where a1>=1 and a1<=1000000; Select * from order2 where a1>=1 and a1<=1500000; Select * from order2 where a1>=1 and a1<=2000000; Select * from order2 where a1>=1 and a1<=2500000; Select * from order2 where a1>=1 and a1<=3000000;

Select * from order2 where a4=1; a4( 列 中 100 个 值 重 复 ) 作 为 条 件

a4 建 立 B*tree 索 引 : Create index ix_order2_a4 on order2(a4) nologging;

Select * from order2 where a4=1;

Select owner,segment_name,round(bytes/1024/1024,2) M from dba_segments where owner= TEST ;

Drop index ix_order2_a4; create bitmap index ix_order2_a4_b on order2(a4) nologging; 如 果 有 多 个 重 复 值,Bitmap 索 引 比 b*tree 节 省 物 理 空 间

Select * from order2 where a4=1;

( 属 性 表 ) 10 7 a1 Ix_order2_a1 a4 Ix_order2_a4 Ix_order2_a4_b 数 值 / 行 数 1 * 1/10 5 * * 类 型 * B*tree * B*tree Bitmap 索 引 大 小 * 192M * 160M 22M

(cost(%cpu) 表 ) 字 段 条 件 time 索 引 利 用 a1 ix_order 2_a1 1 行 : * %10: %30: 25~30s * 16807(3) 50~60s * 16849(4) 1 行 : %10: %15: %20: %25: %30: 0.40~0.50 18~22s 25~30s 38~42s 48~53s 60s 以 上 ( 利 ) ( 利 ) ( 利 ) ( 利 ) ( 未 ) ( 未 ) 4(0) 2898(1) 8562(1) 14226(1) 16839(4) 16846(4) a4 1 行 9~10s * 16216(4) ix_order 2_a4 ix_order 2_a4_b 1 行 1 行 9~10s ( 未 ) 16216(4) 8~9s ( 利 ) 9812(1) Cost (%cpu) 7~8s 16119(3)

a7( 只 有 a b 两 个 值 ) 未 建 立 索 引 Select * from order2 where a7= a ; Select * from order2 where a7= b ;

建 立 b*tree 索 引 : Create index ix_order2_a7 on order2(a7); Select owner,segment_name,round(bytes/1024/1024,2) M from dba_segments where owner= TEST ; Select * from order2 where a7= a ; Select * from order2 where a7= b ;

建 立 bitmap 索 引 Drop index ix_order2_a7; Create bitmap index ix_order2_a7_b on order2(a7) nologging; Select owner,segment_name,round(bytes/1024/1024,2) M from dba_segments where owner= TEST ; Select * from order2 where a7= a ; Select * from order2 where a7= b ;

ix_order2_a7_b,ix_order2_a4_b 比 较 10 7 a4 Ix_order2_a4 Ix_order2_a4_ b a7 Ix_order2_a7 Ix_order2_ a7_b 数 值 / 行 数 1/10 5 * * 2/10 7 * * 类 型 * B*tree Bitmap B*tree Bitmap 以 该 列 为 条 件 查 询 (s) 9~10s 9~10s( 未 利 用 索 引 ) 8~9s( 利 用 了 索 引 ) 80-90s 90-100s( 未 利 90-100s 用 索 引 ) ( 利 用 了 索 引 ) 索 引 大 小 * 160M 22M * 144M 4M 当 使 用 位 图 索 引 时, 如 果 表 中 的 行 数 比 较 少, 可 以 迅 速 得 到 结 果, 如 果 数 值 比 较 大, 看 似 时 间 上 没 有 什 么 变 化, 但 是 结 果 输 出 也 占 用 一 定 的 时 间, 对 于 查 询 的 性 能 还 是 提 高 的, 占 用 较 少 的 cpu 资 源

Update 测 试 以 上 索 引 均 正 常 情 况 下 : Update 1 行 : 00:0:13.93(table_full) Update 10 4 行 : 无 法 执 行,session 锁 住

建 立 主 键, 同 时 在 该 列 上 也 有 了 唯 一 索 引 drop index ix_order2_a1; 删 除 系 统 为 了 保 证 b*tree 索 引 的 唯 一 性 而 加 上 的 rowid 索 引 Alter table order2 add constraint cst_a1 primary key (a1); Select * from order2 where a1=1;

总 结 一 B*tree 索 引 可 以 很 好 的 自 动 平 衡 创 建 了 主 键, 同 时 创 建 了 索 引 ; 索 引 会 对 频 繁 的 DML 操 作 造 成 影 响, 而 不 合 适 的 位 图 索 引 造 成 的 结 果 是 严 重 的, 可 能 造 成 表 锁 会 话 锁 在 实 际 应 用 中, 应 结 合 表 数 据 特 点 检 索 行 数 主 外 键 多 表 结 合 检 索 等 因 素, 选 取 合 适 的 列 建 立 相 应 类 别 的 检 索

总 结 二 索 引 的 好 处 : 1 创 建 唯 一 性 索 引, 保 证 数 据 库 表 中 每 一 行 数 据 的 唯 一 性 2 大 大 加 快 数 据 的 检 索 速 度 3 加 速 表 和 表 之 间 的 连 接, 特 别 是 在 实 现 数 据 的 参 考 完 整 性 方 面 特 别 有 意 义 索 引 的 缺 点 : 1 索 引 降 低 了 数 据 库 插 入 修 改 删 除 等 维 护 任 务 的 速 度 2 创 建 索 引 和 维 护 索 引 要 耗 费 时 间, 这 种 时 间 随 着 数 据 量 的 增 加 而 增 加 3 每 一 个 索 引 要 占 一 定 的 物 理 空 间

结 束!

(cost(%cpu) 表 ) 10 7 a1 Ix_order2_a1 a4 Ix_order2_a4 Ix_order2_a4_b 数 值 / 行 数 1 * 1/10 5 * * 类 型 * B*tree * B*tree Bitmap 以 该 列 为 条 件 查 询 (s) 1 行 :7~8s %10: 25~30s %30: 50~60s 1 行 :0.40~0.50 ( 利 ) %10:18~22s ( 利 ) %15:25~30s ( 利 ) %20:38~42s ( 利 ) %25:48~53s ( 未 ) 9~10s 9~10( 未 ) Cost (%cpu): 16216 8~9( 利 用 了 索 引 ) Cost (%cpu):9812 %30:60s 以 上 ( 未 ) 索 引 大 小 * 192M * 160M 22M