收获,不止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). 这个时候假如断电之类的故障发生,数据缓冲区的数据将 ...
随机推荐
- node及socket.io实现简易websocket双向通信
技术栈: vue2.0 + node + websocket( socket.io ) 1. 安装依赖 初始化vue项目后输入下方指令安装依赖包 // 推荐cnpm安装 npm i vue-socke ...
- 线程间的通信_多生产者多消费者问题_JDK1.5新特性_Lock
对于同步代码块,对于锁的操作是隐式的但是在JDK1.5之前的这种方法效率有点低,判断会很多,后面升级之后有新的解决方案 jdk1.5以后将同步和锁封装成了对象,并将操作锁的隐式方式定义到了该对象中,将 ...
- Java:传值还是传引用?
这是一个Java的经典问题,大部分人从C,C++语言入门,C语言有三种传递方式:值传递,地址传递和引用传递.详细的对C语言指针,引用的我个人的理解,见链接. Java所有操作都是传值操作!都是传值操作 ...
- C#泛型约束where T : class 解释
这是参数类型约束,指定T必须是Class类型. .NET支持的类型参数约束有以下五种:where T : struct | T必须是一个结构 ...
- iptables和firewalld的配置
一.iptables 1.配置 vi /etc/sysconfig/iptables -A RH-Firewall-1-INPUT -m state --state NEW -p tcp -m tcp ...
- 【转】wampserver2.5 apache2.4.9配置https 图文
注: 我的wamp环境是2.5版本,apache是2.4.9 装在本地C:wamp 操作系统windows10 1.进入wamp->bin->apache->apache2.4. ...
- 通过set-context 控制namespace 进行隔离
kubernetes RBAC 需要了解 rules roles subjects rolebindings(role绑定) rules 是一组操作 verbs .资源 . api组. 如果只 ...
- for-in和for-of,forEach和Map
for-in和for-of 1. for-in循环实际是为循环”enumerable“对象而设计的,是用来循环带有字符串key的对象的. 使用for in会遍历数组所有的可枚举属性,包括原型.所以fo ...
- FreeRTOS的任务非运行态
当FreeRTOS启动任务调度器以后,任务调度器会在心跳中断函数中确定下一个要运行的任务,如果任务调度器仅仅依靠任务优先级来判断该运行哪个任务,这样会造成低优先级的任务根本没法运行,因为FreeRTO ...
- 【Codeforces 115D】Unambiguous Arithmetic Expression
Codeforces 115 D 题意:给一个没有括号的表达式,问有多少种添加括号的方法使得这是一个合法的表达式?输入可能有正负号.加减乘除.数字. 思路1: 这是不能过的\(naive\)的\(dp ...





