谈到数据库优化概念,总感觉很庞大,无从下手;最近,听了一次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. **减少数据访问(减少磁盘访问)** - **定义**:通过优化查询逻辑,减少不必要的磁盘读取操作,从而加快查询速度。 - **常见手段**: - 使用索引:合理地创建索引...
从软件工程的角度来看,这个项目充分体现了社区参与的重要性。开发者邀请用户下载游戏,并鼓励他们提出疑问或不足之处,以此来收集反馈信息。这些反馈是软件持续改进的基础,有助于开发者及时发现并修复软件中的bug...
从实用性的角度来看,尽管课程中并没有直接教授如何在日常编程中使用SQL,但课程内容为数据库管理提供了坚实的理论基础。对于未来想要从事数据库管理工作的学生来说,这些知识虽然可能看起来宽泛和浅显,但却是必不...
从这些标签来看,《程序员启示录》可能讲述了如何利用这些技术来提升个人和团队的开发效率,以及如何在不断变化的IT环境中保持竞争力。作者可能还强调了持续学习和适应新技术的重要性,因为作为一名优秀的程序员,...
从源码解析的角度来看,该连接池的设计必然涉及到了多线程环境下的线程安全、资源高效管理、动态参数调整以及故障转移等方面。例如,为了保证线程安全,可能会使用细粒度锁或者无锁设计;在资源管理上,需要合理控制...
首先,从技术层面来看,源码文档应该详细展示了Spring Boot框架如何在实际项目中运用。例如,如何利用Spring Boot的起步依赖简化构建配置、如何使用Spring Data JPA简化数据库操作、如何通过Spring Security实现安全...
从性能角度来说,冗余数据库可以分散数据库压力,冗余表可以分散数据量大的表的并发压力,也可以加快特殊查询的速度,冗余字段可以有效减少数据库表的连接,提高效率。 3 、主键的设计 4 、外键的设计 5 、字段的...
但从另一个角度来看,这也让我认识到在实际工作中可能遇到的挑战,以及团队协作与凝聚力的重要性。 在此次实习期间,我经历了从学生到职场人的转变。在技术应用、问题解决、人际交往等方面都有了明显的提升。实习...
从实习生的角度来看,以下几点是实习过程中的关键知识点: 1. **项目实施与二次开发**:实习初期,参与公司的软件部,首先进行的是对公司框架的练习和项目实施,这涉及到对现有系统的理解和适应,以及对业务流程的...
8. **关系模式(Relational Schema)**:从用户角度看,关系模式是由一组关系组成的规范化二维表结构。每张表代表了一个特定的关系,其中每一列对应一个属性,每一行代表一个实体。 9. **数据库模式(Database Schema)...
从数据库管理的角度来看,集中式代理后端数据库的读写分离中间件通过减轻数据库服务器的负载,提高了数据的安全性和可用性,同时也提升了数据操作的效率。对于监控和管理而言,该中间件还可以结合各种数据库管理工具...
通过上述内容可以看出,无论是从项目管理角度出发,还是从技术开发实践角度来看,加强团队之间的沟通协作、提高个人及团队的执行力都是非常重要的。同时,对于程序员来说,持续学习新知识、新技术也是职业发展中不可...
根据提供的文档信息,我们可以从中提炼出关于Java程序员所需掌握的核心技能、项目经验和自我评价等相关知识点。 ### Java程序员所需核心技能 ...无论是从技术角度还是个人品质方面来看,都是一个值得信赖的优秀人才。
从给出的文件信息来看,这是一套基于Java语言开发的管理系统,采用了Swing图形用户界面库来构建用户界面,利用JDBC技术与MySQL数据库进行交互,具备了完整的业务处理能力和数据存储功能。本系统以JavaBean技术为核心...
从性能角度来看,建立索引可以大大提高搜索速度。例如,在一个没有索引的表中,搜索某个字段需要花费很长时间,但是如果你为这个字段建立了索引,那么,搜索速度将会大大提高。 5. 在 Join 表的时候使用相当类型的...
从技术角度来看,系统后端采用Spring Boot框架,该框架基于Spring,简化了基于Spring的应用开发过程,通过提供一系列的自动配置,帮助开发者快速搭建和运行应用。Spring Boot的核心特性包括嵌入式Web服务器(如...
从项目的实际应用角度来看,该系统可以广泛应用于各类需要发布新闻资讯的场景中,比如媒体机构、企业内部通讯、校园新闻发布等。由于系统结构清晰,功能完善,所以具有很高的实用价值,并且可以进行进一步的定制和...
从技术演进的角度来看,MaxCompute2.0的发展也体现了数据库技术从传统关系型到NewSQL的演进过程。例如,Dryad演变为Scope(微软),Spark发展为SparkSQL(DataBricks),MapReduce演变为Hive再发展到Hive 2.0,...