当前位置: 首页 > 编程日记 > 正文

【面试虐菜】—— Oracle知识整理《收获,不止Oracle》

普通堆表不足之处:

    表更新有日志开销
    表删除有瑕疵
    表记录太大检索较慢
    索引回表读开销很大
    有序插入难有序读出
 
DELETE产生的undo最多,redo也最多,因为undo也需要redo保护
 
全局临时表:
1 高效删除记录
  基于事务的全局临时表commit或者session连接退出后,自动删除
  基于回话的全局临时表在退出回话后自动删除
 
2 针对不同的会话数据独立,不同的session访问全局临时表,看到的结果不同
 
全局临时表在程序的一次调用执行过程中,需要多次清空记录再插入记录,就考虑使用基于是无敌额
 
分区表
--分区表删除
alter table range_part_tab truncate partition p9;--分区表交换
alter table range_part_tab exchange partition p9 with table mid_table;--分区表的分割
alter table range_part_tab split partition p_max at(to_date('2013-02-01','YYYY-MM-DD'))into (partition p2013_01,partition p_max);--分区表合并
alter table range_part_table merge partitions p2013_01,p_max into partition p_max;
 
SCN,保证数据一致读,解决了读一致性的问题,避免使用锁
 
 
Oracle开启与关闭过程
1 startup nomount 寻找定位 参数文件(SGA共享内存段开启,后台进程开启)
2 alter database mount 寻找定位 控制文件(其中包含 数据文件 日志文件 检查点信息等)
3 alter database open 寻找定位 数据文件 日志文件等
 
关闭正好是开启的逆过程:
全部命令融合在shutdown immediate里面
database closed.
database dismounted.
oracle instance shut down.
 
各文件查找位置:
show parameter spfile;
show parameter control;
 
sqlplus "/ as sysdba"
select file_name from dba_data_files;
select group#,member from v$logfile;
show parameter recovery;
setlinesize 1000;
show parameter dump;
 
cd /home/oracle/admin/itmtest/bdump
ls -lart alert*
 
OLTP倾向于让块的尺寸小一些:因为如果块太大,容易导致大量并发查询及更新操作都指向同一个数据块,从而产生热点块竞争。
 
Leaf 主要存储了 key column value 以及 具体能定位到数据块所在位置的rowid
 
索引特点:
    高度比较低
    存储索引列还有rowid
    本身是有序的
 
MIN MAX的索引优化:INDEX FULL SCAN(MIN\MAX)
    select max(object_id) from t;select max,min from (select max(object_id) max from t) a,(select min(object_id) min from t) b;

索引回表读(TABLE ACCESS BY INDEX ROWID)
select * from t where object_id <=5;
因为是select * 查询完索引列后,还需要返回查询其他全部的值
 
INDEX RANGE SCAN 针对索引高度较低这个特性实现的一种范围扫描,在返回记录很少时相当高效。
 
INDEX FAST FULL SCAN 针对整个索引的全扫描,一次读取多个索引块
INDEX FULL SCAN 针对整个索引的全扫描,一次读取一个索引块,有利于数据的排序,在count*的场合很适用,但是逻辑读增加了
 

Union,对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;

Union All,对两个结果集进行并集操作,包括重复行,不进行排序;

 

主外键:

    1 主键本身是一种索引

    2 可以保证表中主键所在列的唯一性

    3 可以有效的限制外键依赖的表的记录的完整性

 

如果某个表建立的索引过多,插入数据的时候会很慢。可以删除索引后,插入,再建立索引。可以优化很大一部分的时间。

 

索引过多,对三种操作的影响:

1 对insert影响最大,只要有索引,就会变慢,越多越慢。

2 对delete来说,有好有坏,在海量数据删除较少数据的时候,很有用。但是过多的索引,也会使得其他的索引进行更新时代价变大。

3 对update的影响最小。

 

建立索引会引起整个表的锁,使得表被挂起,任何操作无法执行。

 

alter index 索引名 monitoring usage;

select * from v$object_usage;--查询索引是否被使用alter index 索引名 nomonitoring usage;--解锁索引监控

 

位图索引允许存储为空值(缺点,进行插入的时候,同一个索引的值相同,是插不进去的)

 

建立位图索引适合的两个条件:1 位图索引列大量重复 2 该表极少更新

 

为什么位图索引只适用于低基数值,但是对频繁更新的列不适用。
原因在于,PROCESSED_FLAG列只有两个值:Y和N。对于插入到表中的记录,该列值为N(表示未处理)。其他进程读取和处理这个记录时,就会把该列值从N更新为Y。这些进程要很快地找出PROCESSED_FLAG列值为N的记录,所以开发人员知道,应该对这个列建立索引。他们在别处了解到,位图索引适用于低基数(low-cardinality)列,所谓低基数列就是指这个列只有很少的可取值,所以看上去位图索引是一个很自然的选择。
不过,所有问题的根由正是这个位图索引。采用位图索引,一个键指向多行,可能数以百计甚至更多。如果更新一个位图索引键,那么这个键指向的数百条记录会与你实际更新的那一行一同被有效地锁定。
所以,如果有人插入一条新记录(PROCESSED_FLAG列值为N),就会锁定位图索引中的N键,而这会有效地同时锁定另外数百条PROCESSED_FLAG列值为N的记录(以下记作N记录)。此时,想要读这个表并处理记录的进程就无法将N记录修改为Y记录(已处理的记录)。原因是,要想把这个列从N更新为Y,需要锁定同一个位图索引键。实际上,想在这个表中插入新记录的其他会话也会阻塞,因为它们同样想对这个位图索引键锁定。简单地讲,开发人员实现了这样一组结构,它一次最多只允许一个人插入或更新!
可以用一个简单的例子说明这种情况。在此,使用两个会话来展示阻塞很容易发生:

ORA10G> create table t ( processed_flag varchar2(1) );
Table created.
ORA10G> create bitmap index t_idx on t(processed_flag);
Index created.
ORA10G> insert into t values ( 'N' );
1 row created.


现在,如果在另一个SQL*Plus会话中执行以下命令:

ORA10G> insert into t values ( 'N' );

这条语句就会“挂起”,直到在第一个阻塞会话中发出COMMIT为止。

转载于:https://www.cnblogs.com/xing901022/p/3978089.html

相关文章:

每日成长17年1月

2017年1月 1月9号 一、学习了ice ice是一个跨平台调用程序&#xff0c;与语言无关的一个中间件&#xff0c;比如&#xff0c;可以通过java的代码调用 c应用程序的接口。 1月11号 一.学习了 struts2 spring mybatis 的配置。 1.首先是web.xml的配置&#xff0c;主要配置两…

网络安全从事工作分类_那么,您想从事安全工作吗?

网络安全从事工作分类by Parisa Tabriz由Parisa Tabriz 那么&#xff0c;您想从事安全工作吗&#xff1f; (So, you want to work in security?) Every once in a while, I’ll get an email from an eager stranger asking for advice on how to have a career in security …

iOS 使用钥匙串将用户密码存入本地

在 iOS 开发中&#xff0c;用户一般注册时候&#xff0c;APP会将用户的用户名和密码直接保存到本地&#xff0c;便于用户下次直接进行登录。 这样就会牵扯到一个问题&#xff0c;用户的密码不能以明文的形式存储在本地&#xff0c;使用钥匙串进行保存用户的密码较为安全。 钥…

Leetcode: Sort List

Sort a linked list in O(n log n) time using constant space complexity. 记得Insert Sort List, 那个复杂度是O(N^2)的&#xff0c;这里要求O&#xff08;nlogn&#xff09;&#xff0c;所以想到merge sort, 需要用到Merge Two Sorted List的方法&#xff08;我写的merge函数…

[UT]Unit Test理解

Coding中有一个原则&#xff1a;Test Driven Development. UT中的一些基本概念&#xff1a; 1. 测试驱动 2. 测试桩 3. 测试覆盖 4. 覆盖率 单体测试内容&#xff1a; 1. 模块接口&#xff1a;测试模块的数据流 2. 局部数据结构&#xff1a;如变量名、初始化、类型转换等 3. 路…

gitter 卸载_最佳Gitter频道:VR和AR

gitter 卸载by Gitter通过吉特 最佳Gitter频道&#xff1a;VR和AR (Best Gitter channels on: VR & AR) Virtual reality is one of the biggest tech trends and a hot topic of 2016. Investment in that sector reached over 1 billion dollars early this year, while…

工作笔记---巡检记录

以下是工作中一些思路实现的笔记&#xff0c;业务需求是&#xff1a; 1、简易日历 2、质押物提交后的一天开始到当前系统时间之间才可以提交质押物 3、没有提交质押物的日期里面的图片以灰色图片站位&#xff0c;已经提交质押物的日期里面的图片以红色图片站位 4、图片点击之后…

大四狗找工作,持续更新

持续更新中....转载于:https://www.cnblogs.com/Wiki-ki/p/3979176.html

iOS8.0 之后指纹解锁

iOS 8.0 SDK 开放了调用指纹识别的API&#xff0c;但是仅限于支持5s 以后的机型 使用的话&#xff0c;很简单&#xff0c;要导入系统的库 #import <LocalAuthentication/LocalAuthentication.h> #import "ViewController.h" #import <LocalAuthenticatio…

gitter 卸载_最佳Gitter频道:Scala

gitter 卸载by Gitter通过吉特 最佳Gitter频道&#xff1a;Scala (Best Gitter channels on: Scala) Scala is an object-oriented functional language that has gained wide acceptance in developer communities for many of its merits. These include runtime performanc…

iOS AES加密

AES 美国国家安全局采用的加密方法&#xff0c;MAC 系统自带的钥匙串也是采用的AES 加密方法 有两种模式 CBC 模式 链式加密 &#xff0c;密码块链&#xff0c;使用一个秘钥和一个初始化向量&#xff0c;对数据执行加密。 ECB 电子密码本方法加密&#xff0c;数据拆分成块&a…

(转)Unity中武器与人物的碰撞检测

自&#xff1a;http://blog.csdn.net/Monzart7an/article/details/24435843 目前来说有三种思路&#xff0c;其实前两种算变种了&#xff1a; 1、动画关键帧回调 范围检测。 这个是在Asset store上面下的一个例子中看到的&#xff0c;其实之前在做端游时&#xff0c;也差不多是…

CentOS Linux解决 Device eth0 does not seem to be present

通过OVF部署Linux主机后提示 ringing up interface eth0: Device eth0 does not seem to be present,delaying initialization. 解决办法&#xff1a; 首先&#xff0c;打开/etc/udev/rules.d/70-persistent-net.rules内容如下面例子所示&#xff1a; # vi /etc/udev/rules.d/…

meteor从入门到精通_我已经大规模运行Meteor一年了。 这就是我所学到的。

meteor从入门到精通by Elie Steinbock埃莉斯坦博克(Elie Steinbock) 我已经大规模运行Meteor一年了。 这就是我所学到的。 (I’ve been running Meteor at scale for a year now. Here’s what I’ve learned.) A year ago I wrote an article describing my first experience…

使用javascript开发2048

嗯&#xff0c;团队队友开发了一个简单的2048...哈哈&#xff0c;没办法&#xff0c;这游戏那么疯狂&#xff0c;必须搞搞啦&#xff0c;大家能够直接粘贴代码到一个html文件&#xff0c;直接执行就可以 依赖文件&#xff1a;jquery&#xff0c;假设乜有&#xff0c;大家能够自…

html 自动弹出框

1.点击div外部隐藏&#xff0c; //*代表tip_box所包含的子元素 $(body).click(function(e) {var target $(e.target);if(!target.is(#tip_box *) ) {//事件处理} });2.div动态展开 .tip_box{width:300px;height:0;border-radius:3px;background-color:#fff;overflow:hidden;bo…

3-runtime 之 Tagged Pointer

Tagged Pointer 是自从iPhone 5s 之后引入的特性 1 先说一下iOS的内存布局 代码区&#xff1a;存放编译之后的代码数据段 &#xff1a;字符串常量 &#xff1a; NSString *hello “hello”;已经初始化和未初始化的全局变量&#xff0c;静态变量堆&#xff1a;通过alloc&#…

编程术语_伟大的编程术语烘烤

编程术语by Preethi Kasireddy通过Preethi Kasireddy 伟大的编程术语烘烤 (The Great Programming Jargon Bake-off) Imperative vs. Declarative. Pure vs. Impure. Static vs. Dynamic.命令式与声明式。 纯与不纯。 静态与动态。 Terminology like this is sprinkled throu…

Swift 圆环进度条

Swift 圆环进度条 import UICircularProgressRing import UIKit import UICircularProgressRing class ViewController: UIViewController {var progress:UICircularProgressRing!;override func viewDidLoad() {super.viewDidLoad()// Do any additional setup after loading …

Linux文件系统构成(第二版)

Linux文件系统构成/boot目录&#xff1a;内核文件、系统自举程序文件保存位置,存放了系统当前的内核【一般128M即可】如:引导文件grub的配置文件等/etc目录&#xff1a;系统常用的配置文件&#xff0c;所以备份系统时一定要备份此目录如&#xff1a;系统管理员经常需要修改的文…

include_once 问题

最近在做微信小程序&#xff0c;在include_once 微信文件后&#xff0c;该方法return 前面会用特殊字符&#xff0c;导致我return 给前端的本来是json串变成了字符 解决方法 &#xff1a; ob_clean(); return json_encode(array);转载于:https://www.cnblogs.com/zouzhe0/p/630…

babel6 babel7_当您已经准备好Babel时设置Flow

babel6 babel7by Jamie Kyle杰米凯尔(Jamie Kyle) 当您已经准备好Babel时设置Flow (Setting up Flow when you’ve already got Babel in place) Flow is a static type checker for JavaScript. It makes you more productive by providing feedback as you write code. Flow…

如何为Android上的产品设计一款合适的图标

如 果你已经完成了你的app&#xff0c;你一定会马上向其它人宣布这件事情。但是你需要注意一个很重要的问题&#xff0c;那就是app的图标。你的图标可能在项目启动之 前就已经设计好了&#xff0c;但我不喜欢这样&#xff0c;如果app没有完成实际上图标也没什么用了。如果你不是…

得到windows聚焦图片(windows 10)

有些Windows聚焦图片确实很漂亮&#xff0c;很希望保留下来&#xff0c;但是Windows聚焦图片总更好&#xff0c;网上有得到聚焦图片的方法&#xff0c;每次都手动去弄真麻烦&#xff0c;于是自己编了一个小程序&#xff0c;自动得到Windows聚焦图片&#xff0c;下面是运行这个小…

swift 加载gif 框架图片

swift 加载gif 框架图片 SwiftGifOrigin 以下代码 轻松搞定 let imgView UIImageView(frame: CGRect(x: 50, y: 100, width: 280, height: 200));imgView.loadGif(name: "gfff");self.view.addSubview(imgView);

devops_最低可行DevOps

devopsby Michael Shilman通过迈克尔希尔曼(Michael Shilman) 最低可行DevOps (Minimum Viable DevOps) 快速而肮脏的指南&#xff0c;用于扩展您的发布并拥抱互联网的死亡 (A quick and dirty guide to scaling your launch and embracing the Internet hug of death) Startu…

java基础之——类的初始化顺序(转载)

原文地址&#xff1a;http://www.cnblogs.com/chrischennx/p/3612295.html 由浅入深&#xff0c;首先&#xff0c;我们来看一下&#xff0c;一个类初始化有关的都有些啥米&#xff1a; 静态成员变量、静态代码块、普通成员变量、普通代码块、构造器。&#xff08;成员方法&…

如何用CSS快速布局(一)—— 布局元素详细

要快速进行网页排版布局&#xff0c;则必须对布局的元素有清晰的了解&#xff0c;才不会总是在细节处出错。这一篇先详解有关布局的因素作为布局基础&#xff1a;块级元素and内联元素、盒模型、准确定位、元素对齐、样式继承。下一篇则重点描述快速布局思路。 一、什么是块级元…

iOS 改变字符串中数字的颜色

匹配中文字符 [\u4e00-\u9fa5] 匹配双字节字符(包括汉字在内) [^\x00-\xff] 匹配网址&#xff1a;[a-zA-z]://[^\s]* 匹配国内电话 \d{3}-\d{8}|\d{4}-\{7,8} 匹配腾讯QQ号 [1-9][0-9]{4,} 匹配18位身份证号^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$ Swift String…

jpg在线合并jpg_JPG如何运作

jpg在线合并jpgby Colt McAnlis通过Colt McAnlis JPG如何运作 (How JPG Works) The JPG file format was one of the most technologically impressive advancements to image compression to come on the scene in 1992. Since then, it’s been a dominant force in represe…