怎么实现优化甲骨文数据库性能

  介绍

怎么实现优化甲骨文数据库性能?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

甲骨文数据库的优化方式和MYSQL等很大的区别,今天通过一个ORACLE数据库实例从表格、数据等各个方便分析了如何进行甲骨文数据库的优化。

tsfree。sql视图

这个sql语句迅速的对每一个表空间中的空间总量与每一个表空间中可用的空间的总量进行比较

表空间是数据库的逻辑划分,一个表空间只能属于一个数据库。所有的数据库对象都存放在指定的表空间中。但主要存放的是表,所以称作表空间。

选择FS。TABLESPACE_NAME“Talbspace",   (DF。TOTALSPACE - FS.FREESPACE)“Userd MB",   FS。FREESPACE“自由MB"   DF。TOTALSPACE“总MB"   圆(100 * (FS。“FREESPACE/DF.TOTALSPACE)); Pct Free"从   (选择TABLESPACE_NAME轮(SUM(字节)/1048576)TOTALSPACE   DF DBA_DATA_FILES GROUP BY TABLESPACE_NAME),   (选择TABLESPACE_NAME轮(SUM(字节)/1048576)空闲空间   从DBA_FREE_SPACE   集团由TABLESPACE_NAME) FS DF的地方。TABLESPACE_NAME=FS.TABLESPACE_NAME;

varray表的使用

创建或替换类型EMPLOYER_NAME对象(E_NAME VARCHAR (40));      创建或替换类型PRIOR_EMPLOYER_NAME_ARR VARRAY (10)   EMPLOYER_NAME;      创建或替换类型FULL_MAILLING_ADRESS_TYPE对象(街   VARCHAR2(80),城市VARCHAR2(80),国家CHAR(2)、邮政VARCHAR2 (10));      创建或替换类型员工为对象(LAST_NAME VARCHAR (40),   FULL_ADDRESS FULL_MAILLING_ADRESS_TYPE, PRIOR_EMPLOYERS   PRIOR_EMPLOYER_NAME_ARR);      创建表EMP的员工;      插入EMP值(& # 39;吉姆# 39;,FULL_MAILLING_ADRESS_TYPE (& # 39; Airplan ave # 39;, & # 39;岩石# 39;,& # 39;数控# 39;,& # 39;2343 & # 39;),PRIOR_EMPLOYER_NAME_ARR (EMPLOYER_NAME (& # 39; ibm # 39;), EMPLOYER_NAME(& # 39;苹果# 39;),EMPLOYER_NAME (& # 39; cnn # 39;))),

,回滚

类型PRIOR_EMPLOYER_NAME_ARR力下降,下降
类型FULL_MAILLING_ADRESS_TYPE力;
下降型员工的力量;
类型EMPLOYER_NAME下降;
删除表EMP;
提交;
选择p。LAST_NAME PRIOR_EMPLOYERS。从EMP P表*
(P.PRIOR_EMPLOYERS) PRIOR_EMPLOYERS
P。LAST_NAME=& # 39;吉姆# 39;;

SQL执行过程

1,检查安全性,确保SQL数据执行者有权限执行
2,检查SQL语法
3,可能发生的查询重新书写
4,执行

创建执行计划   生产器接受经过解析的sql   捆绑执行计划执行执行计划读取结果记录排序结果集

数据访问方式:

1,全表扫描db_file_multiblock_read_count=128   一次性最大读取块的数量   甲骨文开启并行:Alter table员工平行度35;   顺序读取,直到结尾   1,当表中不存在索引   2、查询中不包含字在句   3、内置函数中的索引无效   4,喜欢操作%开的头   5、使用基于成本优化器数据量少时   6、当初始化文件中存在optimizer_mode=all_rows   7,负向条件查询不能使用索引例如地位!=0,不,不存在可以优化为(2、3),

下列情况的SQL语句会导致全表扫:

1,使用零条件查询导致全表扫,因为索引不能为空   为了绕过全表扫这个问题,可以采取这样的方法   更新emp集名称=& # 39;N/一个# 39;名字为空;   选择名称从emp名称=& # 39;N/一个# 39;;   2,对没有索引的字段查询,找到那里的条件后面的查询不带索引的字段,加索引可以   大大提高查询性能。   3、带有像条件的查询像& # 39;x % % & # 39;全表扫描,像& # 39;x % & # 39;不会全表扫,因为   以字符开始。   4,内置的函数使索引无效,对于日期类型的数据来说非常的严重   内置函数(to_date to_char)   如果没有创建与内置函数匹配的基于函数的索引,那么这些函数通常会导致sql优化器全表扫描   选择名称从emp日期& lt;sysdate 8;   检查,子句脚本是否含有substr to_char解码   选择SQL_TEXT、DISK_READS PARSE_CALLS处决   从V SQLAREA美元   低(SQL_TEXT)像& # 39;% substr % & # 39;   或更低(SQL_TEXT) & # 39; % to_char % & # 39;   或更低(SQL_TEXT) & # 39; %解码% & # 39;   ORDER BY DISK_READS DESC;   使用函数索引解决这个问题      5,all_rows优化器目标是提高吞吐量而且倾向于使用全表扫描,因此对于任何一   个要求sql快速查询返回部分结果集而言,optimizer_mode   应该设置为first_rows      6、经验上,能过滤80%数据时就可以使用索引,对于订单状态,如果状态很少,不宜   使用索引,如果状态值很多可以使用索引。      7,如果查询字段大部分是单条数据查询,使用哈希索引性能更好   原因:b - tree索引的时间复杂度是O (log (n))   哈希索引的时间复杂度是O (1)      8日,符合索引最左前缀,例如建立符合索引(密码、用户名)   从用户选择* u在u。pass_word=?和u。user_name=?可以命中索引   从用户选择* u在u。user_name=?和u。pass_word=?可以命中索引   从用户选择* u在u。pass_word=?可以命中索引   从用户选择* u在u。user_name=?以前不可以命中索引

怎么实现优化甲骨文数据库性能