Oracle调整与SQL 语句的调优的关系
Oracle调整与SQL 语句的调优的关系
在Oracle调整中我们还会涉及到SQL 语句的调优,我们接下来就来看以下的 SQL 语句的调优。我们都知道 Oracle 中的 SQL 调优是一个相当复杂的主题,甚至是需要整本书来介绍 Oracle SQL 调优的细微差别。
不过有一些基本的规则是每个 Oracle DBA 都需要跟从的,这些规则可以改善他们系统的性能。 SQL 调优的目标是简单的:
消除不必要的大表全表搜索:不必要的全表搜索导致大量不必要的 I/O ,从而拖慢整个数据库的性能。调优专家首先会根据查询返回的行数目来评价 SQL 。在一个有序的表中,如果查询返回少于 40% 的行,或者在一个无序的表中,返回少于 7% 的行,那么这个查询都可以Oracle调整为使用一个索引来代替全表搜索。
对于不必要的全表搜索来说,最常见的调优方法是增加索引。可以在表中加入标准的 B 树索引,也可以加入 bitmap 和基于函数的索引。要决定是否消除一个全表搜索,你可以仔细检查索引搜索的 I/O 开销和全表搜索的开销,它们的开销和数据块的读取和可能的并行执行有关,并将两者作对比。
在一些情况下,一些不必要的全表搜索的消除可以通过强制使用一个 index 来达到,只需要在 SQL 语句中加入一个索引的提示就可以了。
在全表搜索是一个最快的访问方法时,将小表的全表搜索放到缓存中,调优专家应该确保有一个专门的数据缓冲用作行缓冲。在 Oracle7 中,你可以使用 alter table xxx cache 语句,在 Oracle8 或以上,小表可以被强制为放到 KEEP 池中缓冲。
确保最优的索引使用 :对于改善查询的速度,这是特别重要的。有时 Oracle 可以选择多个索引来进行查询,调优专家必须检查每个索引并且确保 Oracle 使用正确的索引。它还包括 bitmap 和基于函数的索引的使用。
确保最优的 JOIN 操作:有些查询使用 NESTED LOOP join 快一些,有些则是 HASH join 快一些,另外一些则是 sort-merge join 更快。
这些规则看来简单,不过它们占 SQL 调优任务的 90% ,并且它们也无需完全懂得 Oracle SQL 的内部运作。以下我们来简单概览以下 Oracle SQL 的优化。
我们首先简要查看 Oracle 的排序,并且看一看排序操作是如何影响性能的。
调整 Oracle 的排序操作
排序是 SQL 语法中一个小的方面,但很重要,在 Oracle 调整中,它常常被忽略。当使用 create index 、 ORDER BY 或者 GROUP BY 的语句时, Oracle 数据库将会自动执行排序的操作。通常,在以下的情况下 Oracle 会进行排序的操作:
使用 Or
相关文档:
利用SQL2000的定时备份功能,能很好对服务器上的重要数据信息进行完整的定时备份,以便在服务器瘫痪或数据库出现损坏时及时的进行恢复工作,以确保平时的工作能正常的进行。下面向大家介绍一下SQL2000定期备份的设置方法,具体如下:
1. 打开SQL2000的企业管理器
2.&nbs ......
要确定所运行的 SQL Server 2005 的版本,请使用 SQL Server Management Studio 连接到 SQL Server 2005,然后运行以下 Transact-SQL 语句:
SELECT SERVERPROPERTY('productversion'), SERVERPROPERTY ('productlevel'), SERVERPROPERTY ('edition')
结果:
RTM 2005.90.1399
SQL Server 2005 Service Pack 1 2005.90. ......
在 Windows 上安装 Oracle 数据库 11g
安装Oracle 软件,必须使用 Oracle Universal Installer。
1.在这一安装中,您需要使用 DVD 或下载 DVD 版本。在本教程中,将从已下载的版本进行安装。在解压缩 DVD 文件的目录中,打开 Windows 资源浏览器并双击 \db\Disk1 目录的 setup.exe。
2.安装的产品为 Oracle Da ......
CREATE OR REPLACE PACKAGE BODY PACK_RISK_FUNCTION AS
--- 1 将符号替换成#号 或许可以用正则表达式,但是嫌麻烦还是直接用替换
FUNCTION CHANGE_OPERATOR(FORMULA VARCHAR2)
RETURN VARCHAR2
AS
V_FORMULA VARCHAR2(100);
BEGIN
V_FORMULA := REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(FORMULA,'(',''), ......