Oracle11g温习-第十章:存储架构
2013年4月27日 星期六
10:38
|
1、oracle 存储架构: |
|||||
|
1) database ------------tablespace-------------segment(对象) ------------extent----------data block tablespace------------ datafiles ----------------------------------data block |
|||||
|
2、oralce segment(段对象) 的类型 |
|||||
|
1) table segment ---------建立table时,表有记在存储数据时,记录在写入数据块时候,是 随机的无序的,访问采用全表扫描。 2) partition table--------对大的table(>2G) 进行分区,减少资源竞争,提高访问速度。 3) cluster(簇) -------------------用于优化表与表的连接查询(用于表与表之间主外键连接查询,加快读取速度) 4) index-------------------提高表的访问速度 5) index organized table(IOT) -------------用于以主键方式建立索引的表,将表中的数据和索引表的数据放在一起 提高访问速度。 |
|||||
|
3、存储空间分配:以extent 为最小单位(extent 由data block 组成) |
|||||
|
、data block |
|||||
|
|||||
|
、数据块的free space 管理 |
|||||
|
1) 手动:在数据字典上建立free list 2) 自动:在本地管理的表空间,通过bitmap来管理data block 的free space(oracle 10g 默认,除了临时、undo表空间) SYS @ prod >select tablespace_name,contents ,extent_management “ext_man”,segment_space_management “seg_man” from dba_tablespaces;
TABLESPACE_NAME CONTENTS EXT_MAN SEG_MAN --------------------------------------- ---------- ---------------------------------------- SYSTEM PERMANENT LOCAL MANUAL UNDOTBS1 UNDO LOCAL MANUAL SYSAUX PERMANENT LOCAL AUTO TEMP TEMPORARY LOCAL MANUAL USERS PERMANENT LOCAL AUTO TEST PERMANENT LOCAL AUTO |
|||||
|
6、建立对象的存储信息: |
|||||
|
SQL> create table test (id int) tablespace users; SQL> insert into test values (1) ; SQL> insert into test values (2) ; SQL> insert into test values (3) ; SQL> commit;
【HWM :High water Market 高水位线,在segment用来区分已经使用的块和从未使用的块(在做全表扫描时,会一直扫描到HWM) 】 SQL> begin for i in 4..100000 loop insert into test values (i) ; end loop; end; / SQL> analyze table test compute statistics; Table analyzed. SQL> select table_name, TABLESPACE_NAME ,PCT_FREE,INI_TRANS ,MAX_TRANS,NUM_ROWS,BLOCKS,EMPTY_BLOCKS from user_tables where table_name='TEST'; TABLE_NAME TABLESPACE_NAME PCT_FREE INI_TRANS MAX_TRANS NUM_ROWS BLOCKS EMPTY_BLOCKS ------------------------------ ------------------------------ ---------- ---------- ---------- ---------- ---------- ---------------------- ---------------------- ------------ TEST USERS 10 1 255 100000 182 330 |
|||||
|
建立autotrace ,跟踪sql语句 |
|||||
|
SQL> conn /as sysdba Connected.
------------对test 做全表扫描 SQL> set autotrace traceonly; SQL> select * from test; Execution Plan ---------------------------------------------------------- Plan hash value: 1357081020 -------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU) | Time | -------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 100K| 390K| 49 (15) | 00:00:01 | | 1 | TABLE ACCESS FULL| TEST | 100K| 390K| 49 (15) | 00:00:01 | -------------------------------------------------------------------------- Statistics ---------------------------------------------------------- 1 recursive calls 0 db block gets 6851 consistent gets 0 physical reads 0 redo size 1855907 bytes sent via SQL*Net to client 73710 bytes received via SQL*Net from client 6668 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 100000 rows processed SQL> delete from test; delete from test * ERROR at line 1: 【ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDO_TBS01'】 ---------undo 表空间太小,不能 auto extend SQL> / FILE_NAME FILE_ID TABLESPACE_NAME -------------------------------------------------- ---------- ------------------------------ /u01/app/oracle/oradata/lx02/system01.dbf 1 SYSTEM /u01/app/oracle/oradata/lx02/lx02.dbf 11 LX02 /u01/app/oracle/oradata/lx02/OLTP01.DBF 7 OLTP /u01/app/oracle/oradata/lx02/indx01.dbf 6 INDX /u01/app/oracle/oradata/lx02/example01.dbf 5 EXAMPLE /u01/app/oracle/oradata/lx02/user01.dbf 4 USERS /u01/app/oracle/oradata/lx02/sysaux01.dbf 3 SYSAUX /u01/app/oracle/oradata/lx02/rtbs01.dbf 2 RTBS /u01/app/oracle/oradata/lx02/test01.dbf 8 TEST /u01/app/oracle/oradata/tbs16k01.dbf 9 TBS_16K /u01/app/oracle/oradata/lx02/lx01.dbf 10 LX01 /u01/app/oracle/oradata/lx02/undotbs01.dbf 12 UNDO_TBS01 /u01/app/oracle/oradata/lx02/test02.dbf 13 TEST /u01/app/oracle/oradata/bigtbs01.dbf 14 BIG_TBS SQL> alter database datafile 12 autoextend on next 10m maxsize 500m; Database altered. -----------undo tablespace自动扩展 SQL> delete from test; 100000 rows deleted. SQL> set autotrace off SQL> select table_name, TABLESPACE_NAME ,PCT_FREE,INI_TRANS ,MAX_TRANS,NUM_ROWS,BLOCKS,EMPTY_BLOCKS from user_tables where table_name='TEST'; TABLE_NAME TABLESPACE_NAME PCT_FREE INI_TRANS MAX_TRANS NUM_ROWS BLOCKS EMPTY_BLOCKS ------------------------------ ------------------------------ ---------- ---------- ---------- ---------- ---------- ------------- ---------- ---------- ------------- ---------- TEST USERS 10 1 255 0 182 330 ----------【delete 删除数据 不会重置高水位 没有释放占用的数据块 Truncate 删除数据 并且重置高水位 释放占用的数据块】 SQL> insert into test values (1) ; SQL> insert into test values (2) ; SQL> commit; SQL> set autotrace on; SQL> select * from test; ID ---------- 1 2 Execution Plan ---------------------------------------------------------- Execution Plan ---------------------------------------------------------- Plan hash value: 1357081020 -------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU) | Time | -------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 2 | 26 | 2 (0) | 00:00:01 | | 1 | TABLE ACCESS FULL| TEST | 2 | 26 | 2 (0) | 00:00:01 | -------------------------------------------------------------------------- Note ----- - dynamic sampling used for this statement Statistics ---------------------------------------------------------- 28 recursive calls 0 db block gets 10 consistent gets 0 physical reads 0 redo size 451 bytes sent via SQL*Net to client 385 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 2 rows processed ---------【delete 不释放已经使用的块,所以两行记录在做全表扫描的时候也要访问所有已经使用过的块(扫描到HWM) 】 SQL> set autotrace off SQL> truncate table test; Table truncated. SQL> analyze table test compute statistics; SQL> select table_name, TABLESPACE_NAME ,PCT_FREE,INI_TRANS ,MAX_TRANS,NUM_ROWS,BLOCKS,EMPTY_BLOCKS from user_tables where table_name='TEST'; TABLE_NAME TABLESPACE_NAME PCT_FREE INI_TRANS MAX_TRANS NUM_ROWS BLOCKS EMPTY_BLOCKS ------------------------------ ------------------------------ ---------- ---------- ---------- ---------- ---------- ------------ ---------- ---------- ---------- ------------ TEST USERS 10 1 255 0 0 512 SQL> insert into test values (1) ; SQL> insert into test values (2) ; SQL> commit; SQL> analyze table test compute statistics; Table analyzed. SQL> select table_name, TABLESPACE_NAME ,PCT_FREE,INI_TRANS ,MAX_TRANS,NUM_ROWS,BLOCKS,EMPTY_BLOCKS from user_tables where table_name='TEST'; TABLE_NAME TABLESPACE_NAME PCT_FREE INI_TRANS MAX_TRANS NUM_ROWS BLOCKS EMPTY_BLOCKS ------------------------------ ------------------------------ ---------- ---------- ---------- ---------- ---------- ------------------- ---------- ---------- ------------ TEST USERS 10 1 255 2 54 458 SQL> set autotrace on SQL> select * from test; ID ---------- 1 2 Execution Plan ---------------------------------------------------------- Plan hash value: 1357081020 -------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU) | Time | -------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 2 | 4 | 2 (0) | 00:00:01 | | 1 | TABLE ACCESS FULL| TEST | 2 | 4 | 2 (0) | 00:00:01 | -------------------------------------------------------------------------- Statistics ---------------------------------------------------------- 1 recursive calls 0 db block gets 4 consistent gets 0 physical reads 0 redo size 451 bytes sent via SQL*Net to client 385 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 2 rows processed ------------【truncate操作会释放 该对象的存储空间的高水位线】
|
|
【delete 删除数据 不会重置高水位 不会释放占用的数据块】 【Truncate 删除数据 并且重置高水位 释放占用的数据块】 Execution Plan Execution Plan ---------------------------------------------------------- ---------------------------------------------------------- Plan hash value: 1357081020 Plan hash value: 1357081020 -------------------------------------------------------------------------- -------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | -------------------------------------------------------------------------- -------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | 13 | 43 (3)| 00:00:01 | | 0 | SELECT STATEMENT | | 1 | 13 | 2 (0)| 00:00:01 | | 1 | TABLE ACCESS FULL| TEST | 1 | 13 | 43 (3)| 00:00:01 | | 1 | TABLE ACCESS FULL| TEST | 1 | 13 | 2 (0)| 00:00:01 | -------------------------------------------------------------------------- -------------------------------------------------------------------------- Execution Plan Execution Plan ---------------------------------------------------------- ---------------------------------------------------------- Plan hash value: 1357081020 Plan hash value: 1357081020 Statistics Statistics ---------------------------------------------------------- ---------------------------------------------------------- 1 recursive calls 1 recursive calls 0 db block gets 0 db block gets 185 consistent gets 22 consistent gets 0 physical reads 0 physical reads 0 redo size 0 redo size 451 bytes sent via SQL*Net to client 451 bytes sent via SQL*Net to client 384 bytes received via SQL*Net from client 384 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 2 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (memory) 0 sorts (disk) 0 sorts (disk) 2 rows processed 2 rows processed |
Oracle11g温习-第十章:存储架构的更多相关文章
- Oracle11g温习-第二十章:数据装载 sql loader
2013年4月27日 星期六 10:53 1. sql loader :将外部数据(比如文本型)数据导入oracle database.(用于数据导入.不同类型数据库数据迁移) 2.sqlloade ...
- infoq 微信后台存储架构
infoq 上微信后台存储架构 视频很是值得认真一听,大概内容摘要如下: 主要内容:同城分布式强一致,园区级容灾KV存储系统 - sync 序列号发生器 移动互联网场景下,频繁掉线重连,使用 ...
- 云方案,依托H3C彩虹云存储架构,结合UIA统一认证系统,实现了用户数据的集中存储和管理
客户的声音 资料云项目在迷你云基础上二次开发,通过使用云存储技术及文件秒传技术,对文件进行统一存储与管理,以达到节约文件管理成本.存储成本目的:通过有效的文件版本控制机制,以达到风险管控的目的:通过多 ...
- 现代IM系统中消息推送和存储架构的实现
现代IM系统中消息推送和存储架构的实现-云栖社区-阿里云 https://yq.aliyun.com/articles/253242
- 腾讯刘金明:腾讯云 EB 级对象存储架构深度剖析及实践
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 演讲者:刘金明 腾讯云存储业务中心副总监 背景:5月23-24日,以"焕启"为主题的腾讯"云+未来" ...
- 014_HDFS存储架构、架构可靠性分析、副本放置策略、各组件之间的关系
1.HDFS存储架构
- MAS多媒体的整个存储架构是怎样的?
MAS多媒体的整个存储架构是怎样的?
- 【转帖】IBM发布全新闪存解决方案,助企业存储架构做减法
IBM发布全新闪存解决方案,助企业存储架构做减法 http://stor-age.zhiding.cn/stor-age/2020/0227/3124851.shtml 感觉 配图弄错了 FlashS ...
- 从零开始入门 K8s | Kubernetes 存储架构及插件使用
本文整理自<CNCF x Alibaba 云原生技术公开课>第 21 讲. 导读:容器存储是 Kubernetes 系统中提供数据持久化的基础组件,是实现有状态服务的重要保证.Kubern ...
随机推荐
- web前端----css属性
一.文本 1.文本颜色:color 颜色属性被用来设置文字的颜色. 颜色是通过CSS最经常的指定: 十六进制值 - 如: #FF0000 一个RGB值 - 如: RGB(255,0,0) 颜色的名称 ...
- Python入门之logging日志模块以及多进程日志
本篇文章主要对 python logging 的介绍加深理解.更主要是 讨论在多进程环境下如何使用logging 来输出日志, 如何安全地切分日志文件. 1. logging日志模块介绍 python ...
- cache与buffer
Cache 缓存区,是高速缓存,是位于CPU和主内存之间的容量较小但速度很快的存储器,因为CPU的速度远远高于主内存的速度,CPU从内存中读取数据需等待很长的时间,而 Cache保存着CPU刚用过的 ...
- 09: xmltodict 模块将xml格式转成json格式
1.1 : xmltodict 模块将xml格式转成json格式 <?xml version="1.0"?> <!--#版本号--> <data> ...
- 20145105 《Java程序设计》第7周学习总结
20145105 <Java程序设计>第7周学习总结 教材学习内容总结 第十三章 时间与日期 一.认识时间与日期 (一)时间的度量 格林威治标准时间 世界时 国际原子时 世界协调时 Uni ...
- PyQt5 - 01 使用qt creator创建第一个pyqt5界面程序
1. 安装Qt Creator qt creator下载点我 2. 利用Qt Creator创建界面 点击文件 -> 新建文件或项目 选择Qt -> Qt设计师界面类 选择一个模版,创建一 ...
- linux下安装微信小程序开发工具
一.环境:: ubuntu 16.04 二.安装过程: 2.1 安装wine sudo apt-get install wine 2.2 安装nwjs-sdk 2.2.1 下载linux版nwjs-s ...
- Spring通过ApplicationContext主动获取bean
有些场景无法通过AutoWired和compoment注解传递进来,于是希望通过Spring context主动去获取beandemo: package com.qhong.Util; import ...
- LLDP协议、STP协议 笔记
参考: 数据链路层学习之LLDP 生成树协议 LLDP协议.STP协议 笔记 LLDP 提出背景: 随着网络技术的发展,接入网络的设备的种类越来越多,配置越来越复杂,来自不同设备厂商的设备也往往会增加 ...
- neu 1694 Primorial vs LCM 数论
1694: Primorial vs LCM 时间限制: 4 Sec 内存限制: 128 MB[提交][状态][讨论版] 题目描述 Given N (2<=N<=10^14), what ...