Oracle
kramer2009
这个作者很懒,什么都没留下…
展开
-
SELECT FOR UPDATE 到底是产生RX锁还是RS锁?Oracle文档错误
在上一篇博客中研究锁的时候偶然发现,SELECT * FROM TABLE_NAME FOR UPDATE。 这一条语句在10g的concept文档中还明确的写着会产生RS表级锁。但实际上从9i的高版本数据库开始(起码9.2.0.7.0是的),这条语句产生的锁就已经不是RS锁了。而是RX锁。 在8i版本的数据库中测试,这条语句会产生RS锁。但8i 9i 10g 11g 经历了这么多大大小原创 2011-12-06 16:09:59 · 653 阅读 · 0 评论 -
2011年12月1日 oracle_lock
Oracle锁总结(这里只关心DML锁) 首先要明白两个概念, 共享锁与排他锁 在多用户的数据库系统中,Oracle 使用两种模式的锁:排他锁(exclusive lock)模式:能够阻止共享被加锁的资源。对数据进行修改时必须获得此种模式的锁。第一个排他地对资源加锁的事物是唯一可以对此资源进行修改的事物,直至排他锁被释放。共享锁(share lock)模式:依据操作类型有条件地允许共享被原创 2011-12-01 17:00:48 · 314 阅读 · 0 评论 -
高水位线
高水位线 高水位线 (HWM)是什么呢?从很多书上得到的解释是这样的,它是oracle一个表的segment中已经使用的空间和从来没使用过的空间(unformatted)的一个分界线。 但实际上这种说法不准确。要考虑两个方面两种情况,一种是ASSM,一种是MSSM。 一个segment中HWM之下的空闲空间分配干净了,这时HWM会上移,这样HWM之下就会又分配了一些用于写的数据块。MS原创 2012-02-29 14:35:02 · 332 阅读 · 0 评论 -
low HWM 与 HWM
研究了好久 low HWM到底是个什么东西,存在的意义是什么,最后终于明悟了。low HWM是为了全表扫描的时候提高性能(也许还有其它的作用)。 low HWM 存在与ASSM中。 当HWM上移之后, low HWM就会跑到之前HWM那个位置。我们知道HWM上移就意味着之前的空间已经不够了,也就是说HWM下面的空间都写满了。所以,我们可以知道,low HWM下面的空间都是写满了的。 这原创 2012-02-28 15:15:17 · 489 阅读 · 0 评论 -
高水位线等问题
写这篇博客的起因只是我想了解一下信息 1.一个表中实际存储数据的大小 2.一个表中HWM的位置,HWM上面还有多少空余块 3.一个表中 low HWM的位置 4.dba_tables中blocks和empty_blocks到底代表神马 经过一番查证,发帖求教,实验得出以下结论 1.表中实际数据的大小需要用平均行的长度*rownum,这个等会儿要上实验过程和结果来看看原创 2012-02-29 13:38:17 · 168 阅读 · 0 评论 -
rac kill session
今天在数据库里truncate一个表的时候,该表被锁住。 通过查找 GV$LOCK 看到了锁住该表的SID。 想通过 alter system kill session 'SID,SERAIL#'来kill session。 但是提示说 sid不存在。 灵机一动,去另外一个实力上kill session 果然成功。原创 2012-02-08 17:01:33 · 188 阅读 · 0 评论 -
oracle 对象统计信息
对象统计信息 对象统计信息的作用是帮助查询优化器选择更好的执行计划。比如,某一个表的索引clustering_factor非常的高,这个时候如果在where条件中指定column between A and B的限定条件来查询,那么查询优化器有两个选择,一个是通过索引做索引范围扫描,另一个是全表扫描。 因为我们知道clustering_factor的值非常高,这时候做索引范围扫描的开销可能原创 2011-12-31 10:45:04 · 1089 阅读 · 0 评论 -
IN 和 NOT IN 与 NULL
IN 与 EXIST , NOT IN 与 NOT EXIST 通常是可以互换的,但有些情况下不可以。比如说如下情况: SELECT COUNT(*) FROM EMP WHERE EMPNO NOT IN (SELECT MGR FROM EMP): 这段话的目的是,查找出不是mgr的员工数量,从where条件来看,很符合逻辑。因为如果一个员工的empno不在mgr这一列里存着,那么这个员原创 2012-01-16 14:59:29 · 193 阅读 · 0 评论 -
数据访问
为了便于研究数据访问,可以从以下两方面来分类: 1. 弱选择性 2. 强选择性 所谓弱选择性,通俗的讲就是选择条件不是很明确,返回数据量较大,通常会采取全表扫描等方式 所谓强选择性,通常指选择条件很明确,返回数据量较少,通常会采取索引扫描方式。 先看弱选择性下的数据访问: 这种访问有很多种,全表扫描,全索引扫描,全分区扫描都算。 全表扫描中要注意的性能问题是高水位线的问题。如原创 2012-01-13 14:51:42 · 153 阅读 · 0 评论 -
oracle 执行计划-2 分析执行计划
分析执行计划 在阅读执行计划的时候,往往会感觉无从下手,虽然oracle会把执行计划以一种比较清晰的格式列出来,但如果对执行计划了解不深,阅读起来仍然会很麻烦。 下面的内容就是告诉我们如何读懂执行计划。 为了便于阅读执行计划,可以把执行计划中的不同操作分为如下:单独型,非相关联合型,相关联合型。当然,实际情况比较复杂,可能会有些操作没有办法归入这几类,但那些可以当作是特例。 先看单独型。原创 2012-01-11 15:53:57 · 143 阅读 · 0 评论 -
主键(primary key)外键(foreign key)之间S锁(lock)的关系
在看oracle concept 的时候发现了这么一个情况。在主表和从表(从表通过外键引用了主表的主键)这样的关系中。如果主表被修改,会在从表上施加一个表级锁(如果从表的外键列没有施加索引的话)。如果在外键上有索引,则不会施加这个锁。不知道为什么。 经过测试,发现,确实会施加这么一个表级锁(如果从表的外键列没有施加索引的话)。一个session在修改主表的未被引用记录时,会在从表上施加一个S锁。原创 2011-12-12 15:00:57 · 340 阅读 · 0 评论 -
oracle lock处理
这里不讨论oracle中锁的概念,只是讨论实际情况中遇到锁应该怎么办。原创 2014-06-17 15:48:20 · 242 阅读 · 0 评论