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 ...
随机推荐
- Q_DECLARE_PRIVATE与Q_DECLARE_PUBLIC
Q_DECLARE_PRIVATE与Q_DECLARE_PUBLIC 这两个宏在Qt的源码中随处可见,重要性不言而喻.在 部落格的 Inside Qt Series 系列文章中,他用了3篇文章来讲这个 ...
- 各种语言中的可变参数(java、python、c++、javascript)
索引: java python c++ js 1.Java public class Animal { // 接受可变参数的方法 void eat(String... Objects) { for ( ...
- CentOS7防火墙之firewalld
今天在centos7上装mysql8,装好了之后发现主机的navicat始终连不上centos中的mysql 搜索发现是防火墙的问题,已查看iptables,嗯?没有了这个防火墙,原来centos换防 ...
- keepalived+nginx实现HA高可用的web负载均衡
Keepalived 是一种高性能的服务器高可用或热备解决方案, Keepalived 可以用来防止服务器单点故障的发生,通过配合 Nginx 可以实现 web 前端服务的高可用.Keepalived ...
- 20145337《网络对抗技术》MSF基础应用
20145337<网络对抗技术>MSF基础应用 一.实验后回答问题 什么是exploit.payload.encode Metasploit这种模块化的设计,大大提高了代码的复用率.exp ...
- 关键字union
union有一个作用就是判断,pc是大端存储还是小端存储的,x86是小端存储的,这个东西是有cpu决定的.arm(由存储器控制器决定)和x86一样都是小端的. 下面的是一个大端小端的一个例子,代码如下 ...
- C# MD5一句话加密
System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5")
- Python3基础 time 索引值访问元组中的年月日时分秒
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
- strerror函数的总结
定义函数:char * strerror(int errnum); 函数说明:strerror()用来依参数errnum 的错误代码来查询其错误原因的描述字符串, 然后将该字符串指针返回. 返回值:返 ...
- BZOJ5131: [CodePlus2017年12月]可做题2
BZOJ没有题面,差评 洛谷的题目链接 题解 其实这题很久之前就写了,也想写个题解但是太懒了,咕到了今天 在typora写完题解不想copy过来再改格式了,于是直接贴截图qwq #include &l ...