- 博客(23)
- 资源 (15)
- 收藏
- 关注
原创 OCP考题解析_007:主键和索引
先明白,Oracle为什么会为主键自动创建索引? 道理其实简单,如果没有索引,那每次插入的时候检查数据完整性时都要走全表扫? ㈠ 主键索引与NULL 提这个问题,就像是说,我想改姓李,但我不想李字头上有木字,怎么办? ㈡ 主键索引是否非唯一? 主键要求对应的列上存在索引
2013-02-28 14:57:36 1944
原创 OCP考题解析_007:DDL和ROLLBACK
DDL为什么不能rollback? 在Oracle中DDL语句将转化为对数据字典表的DML语句;比如,一个简单的修改表的DDL语句,会导致Oracle在后台通过递归SQL语句进行大量的查询和修改的操作 --DDL伪代码begin commit; DDL_statement; commit;end; 为什么前后有2个commit
2013-02-28 12:10:55 2147
原创 深入理解Oracle优化器(3):动态采样
动态采样的统计信息不会记录到视图,有时候分析过的表也会参与评估 对CBO有效,因为RBO不需要统计信息,所以动态采样没意义 ㈠ 动态采样的作用 ① 10G开始,RBO彻底退出了历史舞台,CBO依赖的是充分的统计分析信息 但是并不是每个用户都会非常认真、及时地去对每个表做分析
2013-02-26 12:25:13 2117
原创 深入理解Oracle索引(7):用实验数据观察从B-tree索引→复合索引→Bitmap索引所消费的CPU和I/O
环境:sys@ORCL> !sqlplus -vSQL*Plus: Release 10.2.0.1.0 - Productionsys@ORCL> !uname -aLinux Think 2.6.18-308.el5xen #1 SMP Fri Jan 27 17:59:00 EST 2012 i686 i686 i386 GNU/Linuxhr@ORCL> conn sh/sh
2013-02-24 21:37:23 2814
原创 深入理解Oracle索引(6):在实践中初步认识3大索引的使用场景
㈠ 某表的一列重复值很多,基数很小时,应该建立什么索引? --创建Bitmap Index,具体原理参见:B-Tree索引与Bitmap索引的锁代价的比较 例如: create bitmap index idx_bm_product on products(list_price) tablespace users;
2013-02-24 20:21:51 2310
原创 深入理解Oracle索引(5):反向索引的定义、缺点和适用场景
㈠ 定义 建立一个反向索引将把每个列的键值(each column key value)按字节反向过来,对于组合键,列的顺序被保留,但每个列的字节都作了反向 例如: 表的某一列内容 …… 1234 1235 1236 1237
2013-02-24 19:13:11 11176
原创 深入理解Oracle优化器(2):该不该翻译Carnality?
感觉cardinality翻译成基数很不好,误导科技工程人员! 我觉得最初翻译这词的翻译者就没有理解它本身的意思,所以字典上就会误导很多人 基数给人的感觉是集合的全部,比如说我国人口基数大,有13亿 而cardinality应该是给集合应用某种条件后的输出数 比如条件是月收入在一万以上,那么如果我国有1000万人达到,那么这10
2013-02-24 16:00:11 2171
原创 PL/SQL批处理语句:BULK COLLECT 和 FORALL对优化的贡献
我们知道PL/SQL程序中运行SQL语句是存在开销的,因为SQL语句是要提交给SQL引擎处理 这种在PL/SQL引擎和SQL引擎之间的控制转移叫做上下文却换,每次却换时,都有额外的开销 请看下图: 但是,FORALL和BULK COLLECT可以让PL/SQL引擎把多个上下文却换压缩成一个,这使得在PL/SQL中的要处理多行记录的SQL语句执行的花
2013-02-15 13:48:48 3804 2
原创 深入理解Oracle表(7):10种表类型的数据存储和适用场景浅析
本博文Think主要从两个问题着手: ① 在哪些情况下某种类型的表比其他表类型更适用? ② 不同类型的表其数据是如何组织和存储的? 闲言少叙,一家之言,欢迎拍砖: ㈠ 堆组织表 ⑴ 数据存储 如果把一个区当作一个箱子,那么一个表就是一组
2013-02-14 11:04:21 2955 2
原创 跟Think学理财:阶梯滚动存款法--让你也能放银行利息
㈠ 好处 ① 避免提前支取定期存款导致的利息损失 ② 坐享每年整取多年高利息 ㈡ 做法 比如: 第一年将存款分成A、B、C三等份,存1、2、3年定存 第二年1年定到期转存为3年定 第三年2年定到期转3年定 三年后你的3张存单就都变成三年期的定期存单,致使每年都会有一张存单到期 也
2013-02-09 13:29:30 2349 1
原创 深入理解Oracle表(6):堆组织表(HOT)和索引组织表(IOT)的区别
㈠ HOT和IOT的起源 堆组织表的存储速度因为不用考虑排序, 所以存储速度会比较快. 但是要查找符合某个条件的记录, 就必须得读取全部的记录以便筛选. 而这个时候为了加快查询速度, 索引就出现了, 索引是针对少量特定字段的值拿出来进行排序存储, 并记录在表中的位置, 而因为索引是有序的, 所以就会很容易通过索引查询到具体
2013-02-08 13:17:28 3547 3
原创 ARP协议笔记
㈠ ARP的定义 ARP(Address Resolution Protocol),地址解析协议,把IP地址解析成MAC地址 如:192.168.1.1->00-1E-37-44-86-5E,电脑在局域网内通讯时用数据帧通讯的,数据帧的头部就包含MAC地址信息 看下面这张图: PC1想向PC2发送数据,就必须得知道
2013-02-08 01:20:16 2064 4
原创 针对Oracle用户的Linux高级命令详解之文件操作篇
⑴ 轻松更改所有者,组和权限 下面Think将分别介绍chmod chown chgrp之如何轻松更改所有者,组和权限 假设有如下几个文件:[root@bogon Desktop]# ls -l总计 4-rw-r--r-- 1 root root 0 02-07 10:21 a-r-x-w--w- 1 root
2013-02-07 23:28:21 1837
原创 Oracle直接路径加载--append的深度解析
㈠ 直接路径加载和buffer cache 直接路径插入的数据不经过buffer cache,从PGA直接把数据格式化成Oracle块 然后由普通的Oracle Server Process进程把数据块写入数据文件 因为不经过buffer cache,所以不需要DBWn介入 假如有表a,现要将a中的数据插入表b,在普通的插
2013-02-06 22:44:20 4448
原创 浅谈Oracle的高水位线--HWM
高水位是记录段里能容纳数据的上限,高水位存在段里 全表扫先读段头块,而后在段头块里面找到HWM 下面用实验由内而外来理解Oracle的HWM--t表有一条数据hr@ORCL> select * from t; ID NAME---------- ---------- 1 AAAAA--找t段的段头块hr@ORCL> sel
2013-02-06 00:32:14 3656
原创 深入理解Oracle索引(4):optimizer_index_cost_adj详解
如果哪天你遇到特殊的情况,比如系统数据字典的索引坏了,但是你去没有办法去修改这个索引,因为有些系统内部的东西你是动不了的 你就会说“我要是能绕过这个索引,全部走全表扫描,把库里的数据全部导出来该多好啊” 那么,这个时候,optimizer_index_cost_adj就很有用了 该参数表示全表扫描和索引扫描的
2013-02-05 01:01:41 5934
原创 针对Oracle用户的Linux高级命令详解之资源管理篇
⑴ free 一个常见的问题是: 我的应用程序,服务器,用户以及系统进程等正在使用多少内存? 或者 现在多少内存可用?如果正在运行的进程使用的内存大于可用RAM,则需要将这些进程移到交换区 因此,一个补充的问题是: 正在使用多少交换区空间?
2013-02-04 17:16:09 2638
原创 浅析count(1) count(*) count(col)的区别和性能
count(1)和count(*)没有任何区别(执行计划和统计信息),而且都是统计所有行 count(col)统计col列不为空的记录,如果有索引,不管col是否为空,都能走索引,没有索引就无法走 测试 hr@ORCL> select count(1) from t; Executio
2013-02-04 15:46:23 4079
原创 深入理解Oracle优化器(1):倾斜列(skew)和histograms
㈠ Histograms 柱状图?直方图?其实这俩是一个概念,在这里Think直接用histograms来称呼 histograms可以这么理解就是一个列上数值的大致分布的密度(density)和范围(range) 通俗一些就是CBO用histgrams来更加准确的判断按照某个条件对每一列查询能返回多少记录
2013-02-03 11:45:49 4865 4
原创 深入理解Oracle索引(3):唯一索引和ROWID
索引都会包含rowid来定位到具体的位置,但是唯一索引不会用rowid来作为“索引键”的一部分 比如在列col1上建立非唯一索引,则其索引键是col1| rowid,这样索引键就唯一了,但唯一索引不会在列上加上rowid构成索引键 测试:SQL> conn / as sysdba已连接。SQL> create table t as select * fro
2013-02-03 00:18:28 4720
原创 深入理解Oracle调试事件:10046事件详解
之前也写过一篇10046的文章:10046简介 今天,Think想和大家一起共同深入去理解一下Oracle的这些调试事件 10046事件是SQL_TRACE的扩展,被戏称为"吃了兴奋剂的SQL_TRACE" 有效的追踪级别: ① 0级:SQL_TRACE=FASLE ② 1级:SQL_TRACE=TRUE,这是缺省
2013-02-02 22:02:55 4092
原创 理清全表扫描和高水位,行预取的关系
以前写过一篇博客,调侃了一下全表扫,今天继续,感觉对全表扫的认识还是不够:侃侃全表扫 ㈠ 全表扫描与HWM 在Table Access Full中,数据库引擎顺次读取表在HWM下的所有数据块 全表扫描可能是不够理想,特别是表包含大量空的或者接近空的块时 很明显,一个块必须先读才能知道它是否包含数据 当表的删除操作
2013-02-01 15:24:27 2080
mysql+heartbeat+drbd软件集合
2013-05-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人