易截截图软件、单文件、免安装、纯绿色、仅160KB

Oracle执行SQL语句的过程

当我们提交一条sql语句时,oracle会做哪些操作呢?
Oracle会为每个用户进程分配一个服务器进程:service process(实际情况应该区分专用服务器和共享服务器),当service process接收到用户进程提交的sql语句时,服务器进程会对sql语句进行语法和词法分析。
名词解释:
语法分析:语句本身正确性。
词法分析:对照数据字典中检查表,索引,视图和用户权限。
检查通过后,服务器进程会将sql语句转变为ascii码,并通过一个hash函数将ascii码生成出一个hash值,服务器进程会到share pool中查询此hash是否存在,如果存在,服务器进程会从sharepool中读取已经解析好的语句来执行;如果不存在,则需要做以下步骤:生成执行计划和生成执行编码(请理解何为执行计划)。解析完成后,Oracle会将sql语句本身代码、hash值、编译代码、执行计划和所有与该语句相关的统计数据存放到sharepool中。
注意:
1 尽量写相同的sql语句,因为即使是from语句中table顺序的变化、查询字段位置的变化,甚至只是大小写的不同,都会促使oracle重新做一次硬解析。
2 增大share_pool_size可以保留更多的缓存在内存中的sql语句执行计划,也意味着共享sql的可能性的增大。
在生成编译代码后,service process会试图从db_buffer中读取是否存在相关的缓存数据。
下面我们分两种情况来说明:
1 db_buffer中不包含内存数据:service process会首先在表的头部请求一些行锁,申请成功后,将这些行所在的第一个block读入db_buffer。此时如果db_buffer空闲空间不足,则会触发写操作—DBWr。如果db_buffer剩余的空间不够存储新数据,就会触发DBWr进程,将db_buffer中脏数据写入数据文件。腾出来的空间写入新数据。
   注意: db_block是oracle最小的逻辑单位,即使我们所要求的数据只是一个block所包含的众多行中的一行或几行,我们仍然需要将整个block读入db_buffer。db_block的大小可以设置为8k的整数倍,并且可以针对不同的表空间设置不同的db_block_size的大小,一般建议在select多的表上将db_block_size设置大一些,而dml操作多的表上设置的小一些。
2 DBWr是写数据进程,触发DBWr进程的事件除了db_buffer空间不够外,ckpt进程也是触发DBWr的事件。
补充:
1 段是oracle最小的拓展单位。
2 ckpt进程:检查点进程。将scn写入日志文件,控制文件,数据文件头,数据块头部。触发ckpt进程的事件有alter system checkpoint,alter tablespace offl


相关文档:

SQL Server 索引结构及其使用(一)

SQL Server 索引结构及其使用(一)
一、深入浅出理解索引结构
  实际上,您可以把索引理解为一种特殊的目录。微软的SQL SERVER提供了两种索引:聚集索引(clustered index,也称聚类索引、簇集索引)和非聚集索引(nonclustered index,也称非聚类索引、非簇集索引)。下面,我们举例来说明一下聚集索引和非聚集索引的 ......

SQL Server 索引结构及其使用(二)

SQL Server 索引结构及其使用(二)
作者:freedk
一、深入浅出理解索引结构
改善SQL语句
  很多人不知道SQL语句在SQL SERVER中是如何执行的,他们担心自己所写的SQL语句会被SQL SERVER误解。比如:
select * from table1 where name=''zhangsan'' and tID > 10000
和执行:
select * from table1 where tID > ......

SQL SERVER

DBCC
Transact-SQL 编程语言提供 DBCC 语句作为 Microsoft® SQL Server™ 2000 的数据库控制台命令。这些语句对数据库的物理和逻辑一致性进行检查。许多 DBCC 语句能够对检测到的问题进行修复。
数据库控制台命令语句被分为以下类别。
语句分类 执行
维护语句 对数据库、索引或文件组进行维护的任务。  ......

SQL Server的六种数据移动方法

1.通过工具DTS的设计器进行导入或导出

  DTS的设计器功能强大,支持多任务,也是可视化界面,容易操作,但知道的人一般不多,如果只是进行SQL Server数据库中部分表的移动,用这种方法最好,当然,也可以进行全部表的移动。在SQL Server Enterprise Manager中,展开服务器左边的+,选择数据库,右击,选择All tasks/I ......

身份证验证算法(SQL版)

身份证验证算法(SQL版)
/**//*
验证身份证算法
By:刘志伟
2008-1-29与天津
*/
CREATE FUNCTION [fn_ValidateIDC]
(
@idc varchar(18)
)RETURNS BIT
AS
BEGIN
IF LEN(@idc)<>15 AND LEN(@idc)<>18--身份证号只有15或18位
RETURN(0)
IF LEN(@idc)=15  --如果是15位身份证 则只验证日期和是否 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号