谈到数据库优化概念,总感觉很庞大,无从下手;最近,听了一次DBA的分享,感觉有些思路;整理成文字,强化记忆;仅仅是一些个人理解和信息聚合,可能有所偏差,还望有所指正:
为什么需要数据库优化?
数据库性能优化主要的目的无非就是降低数据库响应时间,提升数据库响应能力TPS;
数据库响应时间
数据库响应时间=连接时间+SQL解析时间+SQL执行时间+结果集返回时间
可以看出需要优化的方面:数据库连接、SQL解析、SQL执行、结果集这个四个方面;
可以将上述四方面的优化简单来看:
1.SQL执行:硬盘数据访问与写入、日志记录、排序、表连接、SGA内存优化、比较
2.SQL解析:执行计划缓存、SQL解析、执行计划优化(CBO/RBO)、表连接策略、索引策略、排序
3.结果集: 结果集内存缓存、网络数据传输
4.数据库连接:数据库连接池、SQL请求
数据库IO性能试图:
从IO性能来看,优化的方向:
1.减少磁盘访问:硬盘数据访问与写入、日志、大数据量排序、大表表连接、
2.减少网络传输:结果数据请求、SQL请求、数据库连接
3.降低CPU与内存开销:SGA缓存数据访问、比较、排序、表连接、事务检测、SQL解析、函数与逻辑运算
从上述两个方向来看,优化的内容相同,划分的问题不同:
从IO性能方向的优化,可以参考:
MKing's Blog 面向程序员的数据库访问性能优化法则:
http://blog.csdn.net/yzsind/article/details/6059209
从响应时间角度来看,其中涉及到了:SQL执行、结果集、数据库连接 等方面
对于SQL解析方面涉及较少,这方面的资料可以参考:
ORACLE 执行计划分析:
http://www.cnblogs.com/rootq/archive/2008/09/06/1285779.html
执行计划优化策略:
Oracle RBO、CBO简介:
http://blog.csdn.net/suncrafted/article/details/4239237
如果想深入理解Oracle数据库体系结果,可以参考:
Oracle数据库体系结构:
http://www.knowsky.com/386200.html
分享到:
相关推荐
以下是从硬件性能角度来看的五层优化法则: 1. **减少数据访问(减少磁盘访问)** - **定义**:通过优化查询逻辑,减少不必要的磁盘读取操作,从而加快查询速度。 - **常见手段**: - 使用索引:合理地创建索引...
首先,从软件研发的角度来看,程序员深入参与了ASP.NET项目的开发,学习并掌握了面向对象编程的核心理念,能够独立完成VB.NET相关任务,这表明他在.NET框架下的编程技能得到了显著提升。在C#方面,虽然存在一些不足...
从这些标签来看,《程序员启示录》可能讲述了如何利用这些技术来提升个人和团队的开发效率,以及如何在不断变化的IT环境中保持竞争力。作者可能还强调了持续学习和适应新技术的重要性,因为作为一名优秀的程序员,...
从实习生的角度来看,以下几点是实习过程中的关键知识点: 1. **项目实施与二次开发**:实习初期,参与公司的软件部,首先进行的是对公司框架的练习和项目实施,这涉及到对现有系统的理解和适应,以及对业务流程的...
8. **关系模式(Relational Schema)**:从用户角度看,关系模式是由一组关系组成的规范化二维表结构。每张表代表了一个特定的关系,其中每一列对应一个属性,每一行代表一个实体。 9. **数据库模式(Database Schema)...
通过上述内容可以看出,无论是从项目管理角度出发,还是从技术开发实践角度来看,加强团队之间的沟通协作、提高个人及团队的执行力都是非常重要的。同时,对于程序员来说,持续学习新知识、新技术也是职业发展中不可...
根据提供的文档信息,我们可以从中提炼出关于Java程序员所需掌握的核心技能、项目经验和自我评价等相关知识点。 ### Java程序员所需核心技能 ...无论是从技术角度还是个人品质方面来看,都是一个值得信赖的优秀人才。
从性能角度来看,建立索引可以大大提高搜索速度。例如,在一个没有索引的表中,搜索某个字段需要花费很长时间,但是如果你为这个字段建立了索引,那么,搜索速度将会大大提高。 5. 在 Join 表的时候使用相当类型的...
从技术演进的角度来看,MaxCompute2.0的发展也体现了数据库技术从传统关系型到NewSQL的演进过程。例如,Dryad演变为Scope(微软),Spark发展为SparkSQL(DataBricks),MapReduce演变为Hive再发展到Hive 2.0,...
从技术角度来看,ASP使用VBScript或JScript作为脚本语言,编写动态网页内容。开发者可以利用内置的对象如Response、Request、Session、Application等,与用户交互,处理数据。同时,Access数据库通过ADO(ActiveX ...
首先,从管理系统的设计角度来看,源代码通常包括以下几个关键模块: 1. 数据库设计:管理系统的基础是数据库,用于存储学生信息。可能使用的关系型数据库如MySQL、SQLite或SQL Server,源代码中会包含数据库连接、...
- **面试官视角的故事**:通过真实的面试案例分析,让读者从面试官的角度了解面试过程中可能出现的情况及应对策略。 #### 二、技术面试题目分类 - **数据结构与算法** - **数组与字符串**:例如反转字符串、查找...
### DB 查询分析器:中断 SQL 语句执行的利器 #### 一、背景介绍 在进行数据库查询或数据分析工作中,用户经常会遇到某些 ...无论是从用户体验还是功能性角度来看,万能数据库查询分析器都是一款值得推荐的优秀产品。
从技术角度来看,“灵犀外卖”可能涉及到以下IT知识点: - Web开发:如果这是一款基于Web的应用,那么可能涉及HTML、CSS和JavaScript(前端),以及PHP、Node.js或Ruby on Rails(后端)等服务器端技术。 - 移动...
首先,从人员列表(User List)的角度来看,这涉及到Android中的数据存储和展示技术。开发者可能使用SQLite数据库来存储用户信息,包括用户名、头像等,然后通过RecyclerView或ListView组件来展示这些信息。...
尽管MapReduce因其简单易用的特点而受到广泛欢迎,但从性能角度来看,并行DBMS仍然是处理大规模数据时的更佳选择。为了进一步提高大规模数据分析系统的性能和可用性,未来的系统应该借鉴并结合这两种架构的优点,...