11 高级优化技术

需要先解决基本性能问题, 如果性能仍无法被接受, 才来考虑以下方法.

物化视图 materialized view, 结果缓存 result cache, 并行处理 parallel prcess, 直接路径插入 direct-path insert, 行预取, 数组接口

物化视图

视图是一个虚拟表, 基于它创建时指定的查询语句返回结果集, 每次访问它都会导致这个查询语句被执行一次, 为了避免每次访问都执行这个查询, 可以将这个查询的结果集存储到一个物化视图中, 也就是说, 物化视图只是对已经存储于别处的数据的转换和复制.

例如:

create materialized view sales_mv
as
select * from emp;

使用物化视图:

select * from sales_mv order by prod_category

查询重写的概念: 当查询优化器收到一条待优化的查询, 既可以选择直接使用它(也就是不使用查询重写), 也可以选择使用物化视图来对它进行重写, 只要这个物化视图包含执行这条查询需要的全部或部分数据. 当然, 决定使用或不使用物化视图是基于查询优化器对执行计划开销的计算. 提示rewrite或no_rewrite可用来影响查询优化器的这个决定.为了利用查询重写, 它必须在两个层次上被启用, 首先, 必须将动态参数 query_rewrite_enbaled设置为true, 其次, 必须对这个物化视图启用查询重写.

alter materialize view sales_mv enable query rewrite.

一旦启用了查询重写, 如果你提交原来查询语句, 优化器就会将物化视图作为查询重写的一个备用选项, 这时候, 你执行原来的SQL语句select * from emp; 也会走物化视图

另外, 当基础表发生修改时, 物化视图可能会包含失效数据(如果你删除了部分基表数据, 而物化视图并没有变化, 那么删除的部分数据就是失效数据)由于这个原因, 在基表发生了变更之后, 必须对物化视图执行一次刷新操作.

另外, 创建物化视图还可以指定一些参数. 物化视图内容很多, 用到时, 单独拿出来研究吧

结果缓存

顾名思义, 就是保存查询等的结果, 以方便下次查询时, 速度提升. (注意, 这里不是执行计划的缓存, 而是查询结果直接缓存)

select /*+ result_cache */

个人觉的, 不推荐吧

并行处理

默认情况下, 向数据库引擎提交一个SQL语句的时候, 它是由单独一个服务器进程串行执行的, 这样, 即使又多个CPU, 这个SQL语句也只会在一个CPU上执行, 并行处理的目的就是为了将一个SQL语句分布到多个CPU上执行.

用到时再说

直接路径插入

插入到高水位之上

行预取

在应用程序从数据库读取数据的时候, 可以一条一条的读取, 也可以更好一点, 一次读取多条记录, 一次读取多条记录被称为 行预取

每次应用程序请求驱动从数据库返回1条记录的时候, 会预取多条记录并将它们存储在客户端的内存中, 这样, 多个后续的请求就不需要执行数据库调用来读取数据.

用到时再说, 个人不推荐

时间: 2024-08-28 06:36:12

11 高级优化技术的相关文章

CDN高级技术专家周哲: 深度剖析短视频分发过程中的用户体验优化技术点

2018深圳云栖大会已经圆满落幕,在飞天技术汇-弹性计算.网络和CDN专场中,阿里云CDN高级技术专家周哲为我们带来了<海量短视频极速分发>的主题分享,带领我们从视频内容采集.上传.存储和分发的角度介绍整体方案,并且重点讲解短视频加速的注意事项和用户体验优化要点. 讲解从三个部分展开:短视频应用场景,阿里云短视频解决方案,阿里云对短视频用户体验优化的相关优化. 短视频应用场景 短视频比图片和文字包含更多的信息,在移动互联网普及的今天,短视频应用场景非常广泛. 一. 社群分享场景用户可以录制视频

CDN高级技术专家周哲:深度剖析短视频分发过程中的用户体验优化技术点

深圳云栖大会已经圆满落幕,在3月29日飞天技术汇-弹性计算.网络和CDN专场中,阿里云CDN高级技术专家周哲为我们带来了<海量短视频极速分发>的主题分享,带领我们从视频内容采集.上传.存储和分发的角度介绍整体方案,并且重点讲解短视频加速的注意事项和用户体验优化要点. 讲解从三个部分展开:短视频应用场景.阿里云短视频解决方案.阿里云对短视频用户体验的相关优化. 短视频应用场景 短视频比图片和文字包含更多的信息,在移动互联网普及的今天,短视频应用场景非常广泛. 一. 社群分享场景 用户可以录制视频

Unity内存优化技术测试案例

笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,已出版书籍:<手把手教你架构3D游戏引擎>电子工业出版社和<Unity3D实战核心技术详解>电子工业出版社等. CSDN视频网址:http://edu.csdn.net/lecturer/144 Unity引擎优化技术,无非涉及到三点:CPU优化,GPU优化,内存优化. 先谈谈内存优化:大概可以分成三大部分: 1. Unity3D内部的内存 2. Mono的托管内存 3. 引入的DLL或者第

谈谈SQL 语句的优化技术

在SQL server 的性能优化过程中,TSQL的语句优化是很重要的一环.当您使用各种手段找出系统最需要优化的语句后,应该如何对该语句进行优化呢?下面列出一些TSQL 语句优化的常见技巧. 1.     语句的执行计划分析 首先要对该语句的执行计划(execution plan)进行分析,找出语句运行慢的原因.比如说, <>在检查执行计划是否包含table scan /index scan等昂贵的操作? <>对table, worktable是否进行了大量的逻辑读? <&g

Node.js背后的V8引擎优化技术

Node.js的执行速度远超Ruby.Python等脚本语言,这背后都是V8引擎的功劳.本文将介绍如何编写高性能Node.js代码.V8是Chrome背后的JavaScript引擎,因此本文的相关优化经验也适用于基于Chrome浏览器的JavaScript引擎. V8优化技术概述 V8引擎在虚拟机与语言性能优化上做了很多工作.不过按照Lars Bak的说法,所有这些优化技术都不是他们创造的,只是在前人的基础上做的改进. 隐藏类(Hidden Class) 为了减少JavaScript中访问属性所

加速程序计算优化技术---记忆

 加速程序计算优化技术---记忆 在计算机领域,记忆是主要用于加速程序计算的一种优化技术,它使得函数避免重复演算之前已被处理的输入,而返回已缓存的结果. 在JS的对象和数组要实现这种优化是非常方便的. 下面用一个经典递归函数----斐波那契数列 var conut=0; var fibonaccii = function (n) {     conut++; console.log("conut:" + conut); return n< 2 ? n : fibonaccii(n

阿里巴巴2016双11背后的技术(不一样的技术创新)

每年的"双11"是阿里技术的大阅兵和创新能力的集中检阅.2016年的"双11"背后,更是蕴藏了异常丰富的技术实践与突破. 历经1个月的编写,最终27篇精华技术文章入册<不一样的技术创新-阿里巴巴2016双11背后的技术>(以下简称<不一样的技术创新>)一书.这27篇"24K纯度"的技术干货,是阿里"双11"八年来技术演进结果的最新展示,凝聚了阿里工程师的智慧和创造力. 所有参与<不一样的技术创新&

静态资源文件自动压缩并替换成压缩版本(大型网站优化技术)

原文:静态资源文件自动压缩并替换成压缩版本(大型网站优化技术) 这一次,我总结和分享一项大型网站优化技术,那就是在项目中自动压缩静态资源文件(css.js),并让网站自动加载压缩后的资源文件.当然,这项技术在雅虎35条前端优化建议里也有记载,但它那只是给出一个理论的方案而已,并且采用的是外部压缩工具去压缩,而在我的项目中,是直接通过自己的程序自动化去压缩所有css.js文件,然后让页面直接加载所压缩后的资源,接下来直接进入主题. 本次实验使用的是PHP脚本语言,版本是PHP5.6,是在LINUX

Mysql数据库优化技术之配置篇、索引篇 ( 必看 必看 转)

转自:Mysql数据库优化技术之配置篇.索引篇 ( 必看 必看 ) (一)减少数据库访问 对于可以静态化的页面,尽可能静态化 对一个动态页面中可以静态的局部,采用静态化 部分数据可以生成XML,或者文本文件形式保存 使用数据缓存技术,例如: MemCached (二)优化的检测方法 1.用户体验检测 2.Mysql状态检测 在Mysql命令行里面使用show status命令,得到当前mysql状态. 主要关注下列属性: key_read_requests (索引读的请求数)(key_buffe