您的位置:首页 > 数据库 > Oracle

oracle编程入门笔记2015-01-12--数据库原理1

2015-01-12 20:00 363 查看
先给来一张偷来的图

oracle 数据库和实例。



首先解释数据库和实例的区别。

可以这么理解

1.数据库就是实实在在存储数据的文件。

2.实例就是一些oracle进程,内存和加载到内存里的数据集合。

其实oracle sql编程语法就之前说的那么多,剩下的就是要看sql到底怎么执行了。知其然知其所以然。了解sql执行原理和一些内部机制才能指导我们写更优的sql。

实例=SGA(共享区)+后台进程+内存

那么有如下结论:

1.实例与SGA是一对一的关系

2.同一个实例的多个用户共享SGA

后台进程在分析SGA原理的时候会提到一些用得上的,内存就不用说了吧,那么SGA=数据库高速缓存(Database buffer cache)+共享池(shared pool)+重做日志缓存区(redo log buffer)+大型池(large pool)+java池(java pool)+流池(stream pool)+……

数据库高速缓存:用来存储三部分数据,还没有来得及写会数据库的数据,空块,正在使用的数据。根据箭头可知应该是dbw进程完成的。

重做日志缓存:保存了之前修改的数据原始记录用来回滚

共享池:包括两部分数据字典缓存和sql缓存,数据字典缓存缓存了数据库一些表,列,用户,权限,索引等信息。用来加快sql语句解析的速度。

数据库缓存缓存了一些sql语句和这些语句解析后的代码和执行计划。

正因为共享区的存在,所以sql语句会互相影响。从而影响执行效率

那么具体是怎么影响的呢,那就是数据库高速缓存中的软解析和硬解析对sql效率的影响
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: