Oracle 10g Statistic数据统计
http://www.ej38.com/showinfo/Oracle-108709.html
Oracle 10g statistic数据统计,Oracle会根据这些统计信息来决定是走RBO(Rule-BasedOptimization),还是走CBO(Cost-BasedOptimization),会去选择哪种执行计划更划算,影响是否走相关的索引等.如果是CBO的话,它依靠准确的(或者说比较准确的)统计信息来产生优化的执行路径,如果没有做过统计,CBO也就没有做cost评估的依据,所以虽然是CBO,但是实际上还是用RBO了,而且如果不常做统计的话,由于CBO是以统计为依据的,所以这时CBO的依据信息有问题,CBO也会不准。 所以 DBA 需要确保定期收集统计信息,创建另一个执行核对清单。
举个例子:
一次测试,一个sql语句执行要20分钟,有时候还出不了结果,发现查看执行计划,发现居然走了全表扫描(表中大约300w条记录),为啥不用索引呢,查看索引状态,一切正常。分析了相关的表,然后重新执行3分钟搞定!
世事无绝对,analyze表会增加CBO执行的性能?不一定的。
我就碰到一个语句分析后要执行30多分钟,删除分析后,只要30秒。
很多情况下不一定的,最好是自己从执行计划判断。
analyze table tablename compute statistics for all indexes;
analyze table tablename delete statistics
顺便补充一点,表只有分析了之后,num_rows才会有值。
select * from user_all_tables a where a.num_rows <10;
analyze table tablename compute statistics;
SELECT 'ANALYZE TABLE ' || TABLE_NAME || ' COMPUTE STATISTICS;'
from (SELECT DISTINCT TABLE_NAME from ALL_COL_COMMENTS);
SQL语句的执行计划走不走索引除了与Statistic有关系,还有pfile的一个参数有关:optimizer_index_cost_adj. 该参数影响优化器选择索引还是全表扫描的倾向,建议将其设为40.
在 10g 中,通过设置初始化参数 STATISTIC_LEVEL 为 TYPICAL 或 ALL,就可以自动收集统计信息(默认值为 TYPICAL,因此可以随即启用自动收集统计信息的功能)。Oracle 数据库 10g 具有一个预定义的调度程序作业,名称为 GATHER_STATS_JOB,它由 STATISTIC_LEVEL 参数的适当数值所激活。
SQL> show parameter statistics_
NAME &nb
相关文档:
开发环境 VS2008+NET3.5+ORACLE10G
数据库中表设计
CREATE TABLE CCOP (
A CHAR(20) NULL,
B CHAR(20) NULL,
C CHAR(20) NULL,
D CHAR(20) NULL
)
EXCEL的第一行前四列列名为 A B C D
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using Sys ......
--single line method
select ascii('A') Big_A from dual;
select chr(65) A, chr(122) z, chr(223) ch3 from dual;
select concat('sigo','way') from dual;
select initcap('sigoway') from dual;
select instr('ababab','a',-1,2), instr('ababab','a',1,3) from dual;
select instrb('ababab','a',1,3) from dua ......
1.OS认证
Oracle安装之后默认情况下是启用了OS认证的,这里提到的os认证是指服务器端os认证。OS认证的意思把登录数据库的用户和口令校验放在了操作系统一级。如果以安装Oracle时的用户登录OS,那么此时在登录Oracle数据库时不需要任何验证,如:
SQL> connect /as sysdba
已连接。
SQL> connect sys/aaa@te ......
left join 和 left outer join 的区别
通俗的讲:
A left join B 的连接的记录数与A表的记录数同
A right join B 的连接 ......
Oracle安装完后,其中有一个缺省的数据库,除了这个缺省的数据库外,我们还可以创建自己的数据库。
对于初学者来说,为了避免麻烦,可以用'Database Configuration Assistant'向导来创建数据库。
创建完数据库后,并不能立即在数据库中建表,必须先创建该数据库的 ......