篇一 :Oracle数据库执行计划的一些基本概念

Oracle数据库执行计划的一些基本概

一.相关的概念

Rowid的概念:rowid是一个伪列,既然是伪列,那么这个列就不是用户定义,而是系统自己给加上的。对每个表都有一个rowid的伪列,但是表中并不物理存储ROWID列的值。不过你可以像使用其它列那样使用它,但是不能删除改列,也不能对该列的值进行修改、插入。一旦一行数据插入数据库,则rowid在该行的生命周期内是唯一的,即即使该行产生行迁移,行的rowid也不会改变。

Recursive SQL概念:有时为了执行用户发出的一个sql语句,Oracle必须执行一些额外的语句,我们将这些额外的语句称之为'recursive calls'或'recursive SQL statements'。如当一个DDL语句发出后,ORACLE总是隐含的发出一些recursive SQL语句,来修改数据字典信息,以便用户可以成功的执行该DDL语句。当需要的数据字典信息没有在共享内存中时,经常会发生Recursive calls,这些Recursive calls会将数据字典信息从硬盘读入内存中。用户不比关心这些recursive SQL语句的执行情况,在需要的时候,ORACLE会自动的在内部执行这些语句。当然DML语句与SELECT都可能引起recursive SQL。简单的说,我们可以将触发器视为recursive SQL。

…… …… 余下全文

篇二 :数据库计划任务

在SQL Server中出于数据安全的考虑,所以需要定期的备份数据库。而备份数据库一般又是在凌晨时间基本没有数据库操作的时候进行,所以我们不可能要求管理员 每天守到晚上1点去备份数据库。要实现数据库的定时自动备份,最常用的方式就是使用SQL Server代理中的作业。启动SQL Server Agent服务,然后在其中新建作业,作业中添加1个备份步骤,类型是T-SQL脚本,然后在命令中输入如下SQL语句,该语句实现了对数据库TestDB1的完整备份,备份文件在C盘Backup文件夹中,文件名就是TestDB1+当时备份的日期字符串.bak。

declare @name varchar(250)

set @name='C:\Backup\TestDB1_'+

convert(varchar(50),getdate(),112)+'.bak'

BACKUP DATABASE [TestDB1] TO

DISK = @name

WITH NOFORMAT, NOINIT,

NAME = N'TestDB1-完整 数据库 备份',

SKIP, NOREWIND, NOUNLOAD

…… …… 余下全文

篇三 :数据库维护计划

SQLServer数据库维护作业计划

中华IT学院   【大 中 小】  [ 20##年9月9日 ]

-

数据库一直都是后台运行的关键所在,好的维护计划能更加优化好数据库

 

…… …… 余下全文

篇四 :SQL Server“数据库维护计划”

SQL Server“数据库维护计划

  “数据库维护计划”功能在SQL Server 2000的“企业管理器”中可以找到。

  说明:

1.以下操作是在服务器的Windows 20## Server上进行操作的。

 2.由于SQL Server 2000执行备份时将产生许多文件(特别是在进行事务日志备份时),所以建议按数据库名称分别建立独立的备份目录进行存储。

  3.以下所有操作过程当中一般不会对数据库的使用产生影响。

  第一步:打开SQL Server“企业管理器”窗体

  用鼠标单击任务栏上的“开始”按钮中的“程序(P)”菜单下的“Microsoft SQL Server”子菜单中的“企业管理器”菜单项,即可打开SQL Server 2000的“企业管理器”窗体。

  第二步:找到“数据库维护计划”功能

  在“企业管理器”窗体中左侧的树型选项卡中,用鼠标单击“+”图标扩展开“控制台根目录”下的“Microsoft SQL Servers”,可以看到其下有一个“SQL Server组”;接着继续扩展开“SQL Server组”,此时可以看到其下出现了服务器的名称(图1中的“JXNC-SERVER”就是我的服务器的名称);再继续扩展开此服务器,可以看到其下列出了诸如“数据库”、“数据转换服务”等项目;最后单击“管理”项目,可以看到其下存在一个“数据库维护计划”(如图1)。

…… …… 余下全文

篇五 :使用SQL Server 20xx维护计划实现数据库定时自动备份 - [Database]

使用SQL Server 2008维护计划实现数据库定时自动备份 - [Database]

SQL Server中出于数据安全的考虑,所以需要定期的备份数据库。而备份数据库一般又是在凌晨时间基本没有数据库操作的时候进行,所以我们不可能要求管理员每天守到晚上1点去备份数据库。要实现数据库的定时自动备份,最常用的方式就是使用SQL Server代理中的作业。启动SQL Server Agent服务,然后在其中新建作业,作业中添加1个备份步骤,类型是T-SQL脚本,然后在命令中输入如下SQL语句,该语句实现了对数据库 TestDB1的完整备份,备份文件在C盘Backup文件夹中,文件名就是TestDB1+当时备份的日期字符串.bak。

declare @name varchar(250
set @name='C:\Backup\TestDB1_'+ 
convert(varchar(50),getdate(),112)+'.bak' 
BACKUP DATABASE [TestDB1] TO  
DISK = @name 
WITH NOFORMAT, NOINIT,  
NAME = N'TestDB1-完整 数据库 备份', 
SKIP, NOREWIND, NOUNLOAD

…… …… 余下全文

篇六 :SQL语句执行计划分析

? Table Scan(表扫描):如果看到这个信息,就说明数据表上没有聚集索引,或者查询优化器

没有使用索引来查找。意即资料表的每一行都被检查到。如果资料表相对较小的话,表扫描可以非常快速,有时甚至快过使用索引。

因此,当看到有执行表扫描时,第一件要做的事就是看看数据表有多少数据行。如果不是太多的话,那么表扫描可能提供了最好的总体效能。但如果数据表大的话,表扫描就极可能需要长时间来完成,查询效能就大受影响。在这种情况下,就需要仔细研究,为数据表增加一个适当的索引用于这个查询。

假设你发现某查询使用了表扫描,有一个合适的非聚集索引,但它没有用到。这意味着什么呢?为什么这个索引没有用到呢?如果需要获得的数据量相对数据表大小来说非常大,或者数据选择性不高(意味着同一个字段中重复的值很多),表扫描经常会比索引扫描快。例如,如果一个数据表有10000个数据行,查询返回1000行,如果这个表没有聚集索引的话,那么表扫描将比使用一个非聚集索引更快。或者如果数据表有10000个数据行,且同一个字段(WHERE条件句有用到这个字段)上有1000笔重复的数据,表扫描也会比使用非聚集索引更快。

查看图形执行计划上的数据表上的弹出式窗口时,请注意”预估的资料行数(Estimated Row Count)”。这个数字是查询优化器作出的多少个数据行会被返回的最佳推测。如果执行了表扫描且”预估的数据行数”数值很高的话,就意味着返回的记录数很多,查询优化器认为执行表扫描比使用可用的非聚集索引更快。

…… …… 余下全文

篇七 :SQL执行计划和SQL调优

                                        目录


第1章 性能调整综述


第2章 有效的应用设计


第3章  SQL语句处理的过程


第4章 ORACLE的优化器


第5章 ORACLE的执行计划
        访问路径(方法) -- access path
        表之间的连接
        如何产生执行计划
        如何分析执行计划
        如何干预执行计划 - - 使用hints

提示
        具体案例分析

…… …… 余下全文

篇八 :看懂sql执行计划

对于SqlServer的优化来说,可能优化查询是很常见的事情。关于数据库的优化,本身也是一个涉及面比较的广的话题, 首先,打开【SQL Server Management Studio】,输入一个查询语句看看SqlServer是如何显示查询计划的吧。 select v.OrderID, v.CustomerID, v.CustomerName, v.OrderDate, v.SumMoney, v.Finished

from OrdersView

看懂sql执行计划

as v

where v.OrderDate >= '2010-12-1' and v.OrderDate < '2011-12-1'; 其中,OrdersView是一个视图,其定义如下:

SELECT dbo.Orders.OrderID, dbo.Orders.CustomerID,

dbo.Orders.OrderDate,

dbo.Orders.SumMoney, dbo.Orders.Finished,

ISNULL(dbo.Customers.CustomerName, N'') AS CustomerName FROM dbo.Orders LEFT OUTER JOIN

…… …… 余下全文