收获,不止oracle
物理体系
体系结构图
- 缩放
1.Oracle由实例和数据库组成,上半部分的直角方框为实例instance,下半部分的圆角方框为数据库Database。
2.实例是由一个开辟的共享内存区SGA(System Global Area)和一系列后台进程组成的,其中SGA被划分为共享池(share poor),数据缓冲区(db buffer)和日志缓冲区(log buffer)。后台进程包括PMON、SMON、LCKn、RECO、CKPT、DBWR、LGWR、ARCH等系列进程。
3.数据库是由数据文件、参数文件、日志文件、控制文件、归档日志文件等系列文件组成的。其中归档日志最终可能会被转移到新的存储介质中,用于备份恢复使用。
4.PGA(Program Global Area)区是一块开辟出来的内存区,和SGA最明显的差别在于,PGA不是共享内存,是私有不共享的。用户对数据库发起的无论查询还是更新的任何操作,都是在PGA先预处理,然后接下来才进入实例区域,由SGA和系列后台进程共同完成用户发起的请求。
PGA起到的具体作用,就是预处理。主要有三点:第一,保存用户的连接信息,
如绘画属性、绑定变量等;第二,保存用户权限等重要信息,当用户进程与数据
库建立会话时,系统会将这个用户的相关权限查询出来,然后保存在这个会话区内;第三,当发起的指令需要排序的时候,PGA排序区,如果在内存中可以放下排序的尺寸就在内存PGA区内完成,如果放不下,超出的部分就在临时表空间中完成排序,也就是在磁盘中完成排序。
5.图中三块区域,1区原型虚线框,2区直角方形虚线框,3区圆角方形虚线框。用户的请求发起经历的顺序一般是:1区-->2区-->3区;或者1区-->2区。
why:
体系结构原理初探
- 从普通查询SQL语句说起
1.selectobject_name from t where object_id =29;,当发出这条SQL指令后,该SQL语句从1区先做准备工作。PGA是仅供当前发起用户使用的私有内存空间,这里该连接只完成了两点,即用户连接信息的保存和权限的保存,只要该SESSION不断开连接,下次系统直接从PGA内存中存取,不用再去硬盘中读取数据。
此外该SQL还会立即匹配成一条唯一的HASH值,接下来该SQL指令进入2区进行处理,首先敲开SGA区的共享池的大门,如图所示。
共享池的大门打开了,该SQL先在房内查询是否什么地方有存储过这个SQL指令的身份证(就是那个唯一的HASH值),如果没有,那就要幸苦了,首先查询自己的语句语法是否正确、语义是否正确、是否有权限,在这些都没问题的情况下生成这句语句的身份证,唯一的HASH值就被存储下来了。接下来开始进行解析,解析什么呢?比如select object_name from t where object_id=29这个语句,在object_id列有索引的情况下,是索引读更高效,还是全表扫描更高效?Oracle都要做出选择。Oracle会把两种方式都估算一遍,选代价较小的。
现假设Oracle认定使用索引代价更低,接下来索引读的执行计划就立即被存储起来,并且和之前存储的该SQL的身份证对应在一起。接下来,SQL指令直奔数据缓存区,数据缓存区收到后立即要根据ID列上的索引从t表中查找object_id值为29的宝物,但是所要的东西找不到,只好传令到偏远的Database区的数据文件区去找(必须用索引读的方式),查到了,带回数据缓冲区复命,找不到也要复命,如图所示。
至此,一条最普通的SQL指令的经历就完了。- 执行普通查询SQL语句
create table t as select *from all_objects;建表
create index idx_object_id on t(object_id);建索引
set autotrace on 开始跟踪SQL执行计划和执行的统计信息
set timing on 是表示跟踪该语句执行完成的时间
最后,执行select object_name from t where object_id=29;- 先后执行两次,结果如下
- 原因
1、用户首次执行该SQL指令时,该指令从磁盘中获取用户连接信息和相关权限信息权限,并保存在PGA内存里。当用户再次执行该命令时,由于SESSION之前未被断开重连,连接信息和相关权限信息就可以在PGA内存中直接获取,避免了物理读。
2、首次执行该SQL指令结束后,SGA内存区里的共享池里已经保存了该SQL唯一指令HASH值,并保留了语法语义检查及执行计划等相关解析动作的劳动成果,当再次执行该SQL时,由于该SQL指令的HASH值和共享池里的保存的相匹配了,所以之前的硬解析动作无须再做,不尽调过了相关语法语义检查,对于该选取哪种执行计划也无须考虑,直接拿来主义就好了。
3、首次执行该SQL指令时,数据一般不在SGA的数据缓冲区里(除非被别的SQL读入内存了),只能从磁盘中获取,不可避免地产生了物理读,但是由于获取后会保存在数据缓冲区里,再次执行就直接从数据缓冲区里获取了,完全避免了物理读,
图像及画布
- 位图图像
位图图像由一个个像素点组合而成。不同的像素点以不同的颜色构成了完整的图像,所以位图图像可以表达出色彩丰富,过渡自然的图像效果。
位图的缺点表现在保存位图时需要记录每个像素点的颜色和位置,所以图像像素点越多(即分辨率越高),图像越清晰,文件所占空间越大,处理图像时运算速度相应较慢。- 矢量图形
矢量图形有一系列线条所构成,而这些线条的颜色、位置、曲率、粗细等属性都是通过许多复杂的数学公式来表达的。因此,与位图图像的处理正好相反,文件大小与输出打印尺寸没什么关系。
矢量图形另一个优点是所占空间较小,但图像不能够表现很丰富、细腻的细节。常见的矢量图形是企业LOGO,卡通人物和漫画。- 尺寸与分辨率
图像尺寸与分辨率之间存在很大关联,图像尺寸是指一幅图像的物理尺寸,也就是它在打印输出之后所显示的尺寸。图像分辨率市值图像中存储的信息量。这种分辨率有多种衡量方法,典型的是每英寸的像素数(dpi)来衡量。- 缩放图像
执行"编辑"|"变换"|"缩放"命令,快捷键:command+T。- 旋转图像
选择图层,并按快捷键:command+T弹出自由变换控制框。
光标置于控制框外围,当光标变成一个弯曲箭头时拖动鼠标,即可以以中心为基准旋转图像,Enter确认变换操作。
如需旋转15度,在拖动鼠标的同时按住Shift建。- 斜切图像
执行"编辑"|"变换"|"斜切"命令。- 水平,垂直翻转图像
执行"编辑"|"变换"|"水平翻转"命令。- 扭曲图像
执行"编辑"|"变换"|"扭曲"命令。- 透视图像
执行"编辑"|"变换"|"透视"命令。- 精确变换
按快捷键:command+T弹出自由变换控制框。
工具栏选项进行设置参数。
收获,不止oracle的更多相关文章
- 读书笔记系列01-《收获、不止Oracle》
读书笔记系列01-<收获.不止Oracle> 最近计划将看过的Oracle书籍依次系统的总结下读书笔记. 这本书是我个人觉得写的最有趣的Oracle书籍,也是我接触Oracle后第一本完全 ...
- 【js】了解前端缓存,收获不止于此!
了解前端缓存,收获不止于此! 这次我们来讲一下关于前端缓存的问题.感谢赵欢同学提供doc素材. 首先,开局我画了一张图,你会对文章有一个大局了解. 今天讲的是前端缓存. 前端缓存有3大种:如图,分为H ...
- 【面试虐菜】—— Oracle知识整理《收获,不止Oracle》
普通堆表不足之处: 表更新有日志开销 表删除有瑕疵 表记录太大检索较慢 索引回表读开销很大 有序插入难有序读出 DELETE产生的undo最多,redo也最 ...
- 3000本IT书籍下载地址
http://www.shouce.ren/post/d/id/112300 黑客攻防实战入门与提高.pdfhttp://www.shouce.ren/post/d/id/112299 黑 ...
- 本地管理表空间(LMT)与自动段空间管理(ASSM)概念
创建表空间时,extent management local 定义本地管理表空间(LMT),segment space management auto 定义自动段空间管理(ASSM). extent ...
- SQL Tuning 基础概述05 - Oracle 索引类型及介绍
一.B-Tree索引 三大特点:高度较低.存储列值.结构有序 1.1利用索引特性进行优化 外键上建立索引:不但可以提升查询效率,而且可以有效避免锁的竞争(外键所在表delete记录未提交,主键所在表会 ...
- Oracle 11gR2新建空表不分配Segment
一.引言: 在看<收获,不止Oracle>的神奇,走进逻辑体系世界一章时,需要新建一张表查看Extents的情况,由于该书的环境是ORACLE10G的,因此新建空表以后立刻就分配Segme ...
- 【Oracle】逻辑结构(TableSpace→Segment→Extent→Block)
一.逻辑体系结构图 二.逻辑结构图组成介绍 从上表能够看出,一个数据库是由多个表空间(tablespace)组成,一个表空间又由多个段(segment)组成,一个段又由多个区(extent)组成 ...
- Oracle优化技术
1.基本原理 Oracle的日志:Oracle中为了提高硬盘写的效率,採用内存中数据缓冲区来保存数据,等到一定量或一定时间后才写到磁盘(DBWR). 这个时候假如断电之类的故障发生,数据缓冲区的数据将 ...
随机推荐
- Postgresql 截取字符串
截取字符串一般用 substring 就够用了.对于有些长度不定的就没法用这个函数了,但还是有规律的,可以某个字符分割. 如:(这是一个url,截取最后一部分.现在要取 - 后面部分内容) 8a59e ...
- 美人鱼 hdu 5784
Peter has a sequence a1,a2,...,ana1,a2,...,an and he define a function on the sequence -- F(a1,a2,.. ...
- day16 Python filter函数
前戏 movie_people = ["alex","charon","pluto","liu","sb&qu ...
- leetcode 338. Counting Bits,剑指offer二进制中1的个数
leetcode是求当前所有数的二进制中1的个数,剑指offer上是求某一个数二进制中1的个数 https://www.cnblogs.com/grandyang/p/5294255.html 第三种 ...
- webpack简单的打包体验
怎么使用webpack 进行打包 需要使用管理员权限进行安装 npm install webpack -g npm install webpack-cli -g 创建站点 mkdir webpack ...
- Web安全入门学习
前言 最近在公司做Linux下的PHP开发,所以乘此机会学习了下Web安全,了解了常见的Web安全漏洞,以及对应的防御方法(使用DVWA进行学习). 暴力破解 场景 在类似用户登陆界面 ...
- Selenium:三种等待方式
UI自动化测试,大多都是通过定位页面元素来模拟实际的生产场景操作.但在编写自动化测试脚本中,经常出现元素定位不到的情况,究其原因,无非两种情况:1.有frame:2.没有设置等待. 因为代码运行速度和 ...
- Java多线程编程模式实战指南一:Active Object模式(下)
Active Object模式的评价与实现考量 Active Object模式通过将方法的调用与执行分离,实现了异步编程.有利于提高并发性,从而提高系统的吞吐率. Active Object模式还有个 ...
- jquery ajax超时设置(转载)
var ajaxTimeoutTest = $.ajax({ url:'', //请求的URL timeout : 1000, //超时时间设置,单位毫秒 type : 'get', //请求方式,g ...
- C# LINQ 详解 From Where Select Group Into OrderBy Let Join
目录 1. 概述 2. from子句 3. where子句 4. select子句 5. group子句 6. into子句 7. 排序子句 8. let子句 9. join子句 10. 小结 1. ...





