让oracle跑的更快 阅读总结之一

第一章:引起数据库性能的因素:

 1、对于高度并发的系统,可以在数据库与用户之间用软件搭建一个中间层,其目的是构建一个缓冲池,对用户访问数据库前进行处理,这就是中间件服务。Oracle有自带的MTS技术。

2、hint(线索,示意的意思)这是oracle中的一个生成执行计划的机制,他能强制oracle根据我们选择的执行计划来访问数据,而不是根据数据库自己来决定,下面我们来看看一般的有什么样子的hint的用法:

http://blog.csdn.net/changyanmanman/article/details/7252215

3、外连接是一种昂贵的执行过程,一般情况下,左右外连接都不要用最好。

4、对于一些OLAP的系统,一般都是运行报表作业,执行的都是一些包含集合类函数或者分组语句的sql,吧优化器模式可以设置成all_rows比较合适;而对于一些分页式网站的数据库,因为不是同事显示所有信息,可以选择first_rows更好。

5、绑定变量和包:如果是OLAP的系统,一般不要绑定变量,因为他的一条语句一般不会重复执行太多次,对于包来说,一般用存储过程来代替,存储过程是经过编译才存放在数据库里的代码,这样会比用包的效率提高很多。

第二章:锁和阻塞:这个问题老生常谈了好久,还是再总结一遍吧。

1、并发和并行两个的意思在英语中是很不相关的,却是汉语给搞得糊涂了,并发(concurrency)指的是多个用户同时对数据进行修改操作;并行(parallel)指的是一件事分成很多小部分同时进行,最后将执行结果汇总。

2、关于v$lock这个视图,这是一个非常重要的视图。

3、TM锁,在这个锁上面没有阻塞和等待,他是一个表级共享锁,就是说每个用户可以以共享的方式(lmode为3)持有他,其实TM更像一个分段级锁,我们平时之所以叫他表级锁,是因为我们的表只有一个段,如果将表分为好几个段,每个段上都会加一个TM锁。如:建立一个分区表,我们给此表分区p1,p2.在p1上插入一条数据,这样oracle就在表t和p1分区上加了一条TM锁,但是p2上因为没有数据,所有不会加上锁,这样一来,对表t和分区p1不能进行DDL操作,但是可以对p2进行 DDL操作,如:truncate table
t; 是不可以的,alter table t truncate partition p1也是不可以的,但是alter table truncate partition p2 是完全可以的。这也正好验证了TM是一个段级的共享锁,他只能允许同级别或者更低级别的锁同时设置,但是拒绝更好级别的锁定请求(此事DDL操作需要一个更高级别的排他表级锁)

4、在oracle里面不会存在一个锁管理器,要是那样的话还得等待锁管理器分配锁或者释放锁,这样锁越多管理的开销越大,显然是很不合理的,在oracle数据库中,并不会对某个表或者某几行上加锁,锁是以数据块的一个属性存在的。也就是说每个数据块本身就存储着自己数据块中数据的信息这个地方叫ITL (interesed transaction list)凡是在这个数据块上有活动的事务,他的信息就会记录在这里面供后续的操作查询使用,以保证事务的一致性。

5、一看到TX锁,一般人会认为他是一个行级排他锁,但这个是不正确的,其实TX是一个事务锁,他无论处理了多少行,都只是这一个事务锁在起作用,在v¥lock视图中这个锁的id1,id2(这两个值也同时告诉了你,这些数据在回滚段中的位置,这样当另一个事务来读取,却发现别人在用不能读,他就同个这个TX锁的id到回滚段中找到备份的数据读取出来)的值是不会变化的。这个事务锁会在行级对数据产生影响,比如阻塞。在一个主键表中,我们更新一个主键值是,就会产生一个TX事务锁,他阻止其他人对这一行进行更新。

6、关于select··· for update:这个句子与select区别就是前者以排他的方式获得了需要修改的数据,并且保证在修改完成之前,其他用户无法对这些数据进行修改。

7、外键和索引:如果你的系统有主、外键引用关系,并且满足以下三个条件的任意一个,那么就应该考虑给外键字段创建索引,这样可以极大的提高性能:

*主表上有频繁的删除操作;

*主键上有频繁的修改操作;

*业务上经常出现主表和从表做关联查询的情况。

如果不进行创建索引,那么每次进行主表删除操作,都会进行从表的全表扫描,这样、如果有1000条删除操作,那就要执行1000次从表扫描,这样显然不行,最好的办法就是在从表的外键上建立索引,到时候直接关联索引查询即可。

第三章:latch和等待:

  

时间: 2024-11-03 05:11:25

让oracle跑的更快 阅读总结之一的相关文章

Node.js 应用跑得更快 10 个技巧_node.js

NodeJS是一个服务器端JavaScript解释器,它将改变服务器应该如何工作的概念.它的目标是帮助程序员构建高度可伸缩的应用程序,编写能够处理数万条同时连接到一个(只有一个)物理机的连接代码.  Node.js 受益于它的事件驱动和异步的特征,已经很快了.但是,在现代网络中只是快是不行的.如果你打算用 Node.js 开发你的下一个Web 应用的话,那么你就应该无所不用其极,让你的应用更快,异常的快.本文将介绍 10 条,经过检验得知可大大提高 Node 应用的技巧.废话不多说,让我们逐条来

千招百式:让你的ADSL跑得更快_网络冲浪

通过ADSL拨号上网,已经成为众多个人用户的首选上网途径.尽管这种上网方式,要比传统的电话拨号上网速度快许多,不过这种速度离真正的宽带速度还有一定的距离.当然,如果我们能开动脑筋,从挖掘ADSL自身的潜力出发,还是有办法让ADSL跑得更快,甚至让其速度接近真正的宽带速度.不信的话,就请各位一起来看看下面的ADSl优化招法,相信在这些方法的指导下,ADSL上网速度要比平时快许多. 1.启用数据分包功能 大家知道,如果在网上传输大容量数据信息时,你会发现ADSL此时的上网速度将非常缓慢:相反,如果你

[翻译] 5点建议,让iOS程序跑得更快

  [文章原地址]http://mobile.tutsplus.com/tutorials/iphone/ios-quick-tip-5-tips-to-increase-app-performance/人翻胜于机翻,本着练习英语的目的翻译iOS相关的文章,看官切勿见笑.本人将在文章的部分地方添加注释,并根据需求增减文章内容,在此对原作者辛勤劳作表示感谢   iOS Quick Tip: 5 Tips to Increase App Performance Bart Jacobs on Jul

让Windows XP跑得更快更稳

微软的XP系统被大多数网民称为是历史上最优秀的操作系统,有眼花缭乱的功能.更快的速度,当然这一切都对计算机的硬件提出了更高的要求,如果你希望WindowsXP能够尽可能少地占用你有限的系统资源,不妨根据自己的需要对它进行一次"小手术". 虽然XP被微软自称为有史以来最稳定.功能最强大的Windows操作系统,并且运行速度飞快--启动速度甚至比同样配置的Windows 2000还要快许多,你可能依然不满足于此,希望让XP发挥其最佳性能,或者你的硬件配置不是太高,想让Windows XP运

十个迅速提升JQuery性能让你的JQuery跑得更快_jquery

本文提供即刻提升你的脚本性能的十个步骤.不用担心,这并不是什么高深的技巧.人人皆可运用!这些技巧包括: 使用最新版本 合并.最小化脚本 用for替代each 用ID替代class选择器 给选择器指定前后文 建立缓存 避免DOM操作 避免使用concat(),利用join()处理长字串 返回false值 利用小抄和参考文档 使用最新版本 jQuery一直处于不断的开发和改进过程中. John 和他的团队不断研究着提升程序性能的新方法. 一点题外话,几个月前他还发布了Sizzle,一个据说能在Fir

让MySQL数据库跑的更快 为数据减肥_Mysql

在数据库优化工作中,使数据尽可能的小,使表在硬盘上占据的空间尽可能的小,这是最常用.也是最有效的手段之一.因为缩小数据,相对来说可以提高硬盘的读写速度,并且在查询过程中小表的内容处理时所占用的系统资源比较少.同理,如果在比较小的列上设置索引的话,其索引所占用的资源也会比较少.那么数据库管理员该如何给自己的数据减肥呢?对此笔者有如下几个建议. 建议一:空值并不一定不占用空间 在这里笔者先给大家扫盲一下.有些数据库管理员,认为空值不会占用系统资源,其实这是一个错误的认识.他们在数据库设计时,不喜欢将

安装好Windows 8后必做的几件事情,让你的Win8跑的更快更流畅。

1.关闭家庭组,因为这功能会导致硬盘和CPU处于高负荷状态. 关闭方法:Win+C-设置-更改电脑设置-家庭组-离开 如果用不到家庭组可以直接把家庭组服务也给关闭了:控制面板-管理工具-服务-HomeGroup Listener 和 HomeGroup Provider 禁用 2.Windows Defender 全盘扫描下系统,否则打开文件夹会卡顿. 然后可以排除信任的EXE程序,建议排除explorer.exe(资源管理器进程),如果你不用系统自带的杀毒软件,也可以直接关闭它. Win+X-

想让MySQL跑得更快,更不可忽略这些硬件和系统的优化!

DBA们都知道很多关于MySQL Server相关的优化技巧,比如:MySQL参数配置优化.MySQL的SQL语句优化.MySQL的schema设计优化等.但却往往对运行MySQL的操作系统和硬件优化有所忽略,因为很多时候都是SA在干操作系统和硬件相关的工作. 本文从Linux操作系统和服务器硬件的角度来说下关于MySQL的优化技巧,如果在MySQL Server安装部署运行之前,就已经实施了这些操作系统和硬件的优化,相信你的MySQL Server会跑得更加顺畅.   BIOS设置iDRAC(

关闭这些win7服务 让系统跑得更快!

在windows系统中,默认带有很多的服务来维持系统很多功能的运行,这些系统服务在开启运行的同时也会占用很多的资源,如果将其中自己不需要的服务关闭掉,就可以合理的优化系统,提高操作系统的运行速度!下面分享windows 7各项服务的功能,朋友们可以根据自己的需要合理设置! Adaptive brightness 监视周围的光线状况来调节屏幕明暗,如果该服务被禁用,屏幕亮度将不会自动适应周围光线状况.该服务的默认运行方式是手动,如果你没有使用触摸屏一类的智能调节屏幕亮度的设备,该功能就可以放心禁用