`

数据库性能分析、优化入门

阅读更多

 

 最近参加了公司一位DBA关于数据库性能的分析,觉得讲得挺不错的,因此做下总结,也算是一种积累。

 

这个博文整体结构分为三个部分:

第一部分,阐述数据库的数据存储结构;

第二部分,SQL性能分析(核心部分);

第三部分,SQL调优实例。 

 

1 数据库的数据存储结构
在开始性能优化前,首先需要对优化的对象进行了解,这样我们才能抓住问题的本质。

 

页面(BLOCK)
数据库中最小的分配,读取单元,一般来说,设置为8K大小。

 
数据库中的表,是由一些列的页面(block)组成
页面物理上可以不连续,但是逻辑上是连续的

 索引
索引也是由页面(block)组成
通常采用B+树的组织形式

 

 

2 SQL性能分析(核心部分)

重中之重:一条sql是否ok?如何优化?走索引是否可以提高性能?全在于下面一句话:
此SQL需要访问多少页面(BLOCK)!!!

为什么是这样的呢?原因是读页面是大量的IO操作,需要在内存中定位,或是外存中定位并加载,开销很大。而其他的SQL比较操作,>,=,like…,都是CPU计算,相对开销较小。

 

下面分别对几类常见SQL访问需要读取的页面(BLOCK)进行分析:

表全扫描
表中所有的页面(BLOCK)
索引全扫描
索引中所有的页面。优势:索引项相对于表项较小,页面更少
索引范围扫描
索引层数+范围中的BLOCK
索引唯一扫描
索引层数。优势:最小的页面访问量
索引扫描+回表扫描
索引BLOCK+表BLOCK

 

丛上面的分析可知,索引唯一扫描是最快的,也就是我们平常从某张表中根据唯一的ID查询一个唯一记录的SQL;表全扫描是最慢的,也就是需要遍历表中所有的记录。

 

3 SQL调优实例

这里先说一下,不是每个SQL需要优化的,如果SQL性能满足需求,是不需要做优化的。

 出了性能问题的的SQL:

SELECT *
  FROM (select rid
          FROM (select r.rid, rownum rnum
                  FROM (select rowid rid
                          FROM CREDIT_REMARK t
                         WHERE t.POSTER_MEMBER_ID = :1 and t.POSTER_ROLE = #memberRole#
                         ORDER BY t.GMT_REMARK_MODIFIED DESC, t.ID DESC) r
                 WHERE rownum <= #endRow :INTEGER#)
         WHERE rnum > #startRow :INTEGER#) t1,
       CREDIT_REMARK t2
 WHERE t1.rid = t2.rowid ORDER BY t2.GMT_REMARK_MODIFIED DESC, t2.ID DESC;

  

 

解决方案: 

建索引: (POSTER_MEMBER_ID, POSTER_ROLE,STATUS, GMT_REMARK_MODIFIED DESC, ID DESC),从普通表中完成分页转为索引内完成分页,减少回表需要读取的页面。
 
 
  • 大小: 39.2 KB
分享到:
评论
2 楼 hunter0912 2011-01-05  
只能观其大略,跟勒沙特列原理一样
1 楼 jiaoronggui 2010-11-18  
学习了,感觉对入门还是有用的,特别对于我这样的非科班出身

相关推荐

    盖国强 数据库性能优化

    《Oracle数据库性能优化》是一本集实用性、理论性和实战性于一体的优秀著作,不仅适合已经有一定基础的读者进行深入学习,也适合初学者作为入门指南。通过阅读本书,读者不仅可以获得关于Oracle数据库性能优化的全面...

    MySQL数据库性能优化之入门.pdf

    重点讲解了慢查询、索引、Multi Range Read、Index Merge、ICP,等相关功能。这里均为本人的学习总结。内容有2附图1个来自书本、一个来自网络,其余均为本人原创。 未经运行不得商业使用。

    Oracle数据库基础 SQL语言入门与进阶 PL/SQL程序设计 Oracle数据库管理与优化 数据库安全性与权限管理

    数据库性能监控与调优 Oracle数据库网络配置与管理 Oracle数据库集群与高可用性 Oracle数据库云服务概览 数据仓库与Oracle数据库 Oracle数据库与大数据处理 Oracle数据库故障诊断与处理 Oracle数据库升级与迁移 ...

    完整精品数据库课件 MySQL从入门到精通 第16章 性能优化(共18页).ppt

    MySQL数据库的性能优化是数据库管理和开发中的核心环节,旨在提升系统的整体性能,加快查询响应速度,同时节省系统资源,以支持更大规模的服务。本章主要分为五个部分:优化简介、优化查询、优化数据库结构、优化...

    数据库性能优化学习之路

    学习oracle初级入门ppt,让你对数据库性能提升 有兴趣,体验飞一般的速度。

    MySQL数据库应用从入门到精通_第2版

    读者将学习如何创建数据库、数据表,并理解主键、外键、索引等关键概念,以及它们在数据库性能优化中的作用。 四、数据库安全管理 安全是任何数据库系统的重要考虑因素。书中会介绍如何设置用户权限、角色管理和...

    数据库学习入门数据库基础入门

    在实际应用中,数据库性能优化是常见的挑战。这可能涉及到索引的使用、查询优化、存储过程编写、分区策略等。了解如何通过调整这些因素来提高查询速度和整体系统性能,是数据库管理员的必备技能。 最后,实践是学习...

    MySQL数据库应用-从入门到精通

    此外,还有数据库备份与恢复,以及性能优化技巧,例如分析查询性能、使用EXPLAIN命令、调整SQL语句、优化表结构和索引等。 最后,MySQL的安全性也是重要的一环。学习如何创建和管理用户权限,使用GRANT和REVOKE语句...

    IBM DB2通用数据库Windows版快速入门.pdf

    - **性能优化**:分享了提高数据库性能的方法和技术。 #### 三、关键概念与术语解释 - **DB2 (C}]b)**:这里可能是指DB2的一个特定版本或配置。 - **Windowsf (®)**:明确指明该文档是针对Windows操作系统环境下...

    MySQL数据库应用从入门到精通 第2版

    选择合适的数据类型对数据库性能和存储效率至关重要。 五、SQL查询语言 1. SELECT语句:用于从数据库中检索数据,例如`SELECT * FROM mytable;`将获取mytable中的所有记录。 2. WHERE子句:过滤结果,如`SELECT * ...

    数据库设计入门经典 中文完整版

    9. 性能优化:学习如何通过查询优化、索引策略、数据库架构调整等手段来提升数据库性能。 10. 数据库备份与恢复:理解备份的重要性,学习不同的备份类型(如完整备份、增量备份、差异备份)以及如何制定恢复策略以...

    oracle数据库入门教程

    了解如何使用Performance Monitor(PGA, SGA)分析数据库性能,使用RMAN进行备份和恢复,设置权限和角色以确保数据安全,以及如何解决常见的错误和问题,都是DBA不可或缺的技能。 通过这个Oracle数据库入门教程,你...

    PowerDesigner数据库设计与使用 入门教程

    PDM考虑了数据库性能优化,如索引、分区等。PowerDesigner可以生成针对不同数据库系统的创建脚本,便于快速部署。 4. **逆向工程**:PowerDesigner能够分析现有数据库,生成对应的模型,这对于理解和修改现有系统...

    ORACLE 数据库入门教程

    九、性能优化 Oracle提供了许多工具和技巧用于性能监控和优化,如SQL*Plus、企业管理器、性能分析工具(如V$视图)和索引优化。学习如何诊断性能问题并采取相应措施,可以提升数据库的运行效率。 十、故障排查 掌握...

    NoSQL数据库入门 高清PDF

    2. **高性能**:NoSQL数据库采用内存缓存技术和优化的索引机制,能够实现快速读写操作。 3. **灵活的数据模型**:NoSQL数据库允许存储复杂的数据类型,如嵌套对象、数组等,这使得数据模型更加灵活多变。 4. **弱...

    数据库基础、管理和优化全面教程:从入门到精通

    ②指导技术人员优化数据库性能,提升系统稳定性;③通过实际项目案例提升实战能力。 阅读建议:建议读者先从基础部分开始学习,逐渐过渡到高级技术,并结合具体案例进行实践,以便更好地理解理论知识并在实际工作中...

    Mysql Oracle数据库设计入门经典

    书中还会讨论数据库性能优化策略,包括查询优化、索引策略、内存管理以及如何通过调整数据库参数来提升系统性能。同时,安全性和备份恢复策略也是数据库设计的重要环节,作者会介绍如何设置用户权限、保护数据安全...

    Oracle数据库入门教材(PDF)

    八、数据库性能优化 Oracle提供了多种性能优化工具和技术,如 Explain Plan 分析SQL执行计划,SQL Trace和TKPROF用于追踪和分析SQL执行,以及Automatic Workload Repository(AWR)和ASH(Active Session History)...

Global site tag (gtag.js) - Google Analytics