`
黑暗浪子
  • 浏览: 507675 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

数据库优化基本策略

阅读更多

1.选择正确类型的sql。

有时候你想要动态生成sql,却发现自己开发的系统性能只需要使用静态sql。

2.放开锁定策略

locking越严格,性能越差。到底是用乐观锁还是悲观锁?请权衡数据库数据的完整性,为了性能~

3.频繁提交

尽快提交,以释放各种锁和程序代码中的数据库对象。这样能降低冲突的数量并及时释放内存。

4.考虑批处理

不一定非要在联机状态下才能做每件事情。实现关键任务,关键业务时候,应批量的对数据进行处理。

5.避免连接

尤其是两张字段很多的大表。请使用索引而不是什么狗P的左右连接。

6.利用特定的数据库特性

oracle有oracle的特性,mysql有mysql的特性。当你想做数据库移植时候,请遵循各种数据库厂商的数据库产品独有的特性。

7.只获取自己需要的列

当要得到你想要的列。请不要用select * from table而是用select id,name from table。

使用尽可能小的结果集,更易于处理和传递。

8.避免where子句中的or

不要写name ="smith" or name = 'frank'。请写name in ('smith','frank').后者比前者更高效

9.避免like子句

name like 's%'这样的子句会对数据库表进行扫描,开销极其巨大,其实只要在name列上定义索引,很多数据库都会高效执行

 

6
2
分享到:
评论
5 楼 远去的渡口 2011-08-26  
使用properties文件或者final类比较好。在数据库中建一张表放这些常量值,每次需要使用时候去访问数据库也会影响性能。
很赞同,我们现在做的项目中有一部分常量竟然存在一张表里面,这样的确会影响性能
4 楼 何枫abc 2011-02-26  
浪哥!,这篇loge对我来说很受用,昨天面试这个问题我就挂了,感觉其太广义了.这里听君一言顿时豁然了.
3 楼 黑暗浪子 2011-01-07  
liangguanhui 写道
这种帖子个人觉得误导性比较强,特别是对新人。

首先最重要的一点,是认清你要使用的是什么数据库,也就是这里的第七点,这个非常非常非常非常重要。实际上每个数据库都会有不同,有时候差别还非常大。

比如“频繁提交”,这一条在SQL server、sybase、informix是成立的,但在Oracle、InnoDB、PostgreSQL等支持MVCC的数据库是非常不要得的。

又例如“锁定策略”,实际上SQL Server等和Oracle又有很大的不同。SQL Server是读写互堵,堵塞的时候默认是块级锁(这里是说旧版本的SQLServer);Oracle是读写互不相堵,写堵塞写的时候默认是行级锁。

又例如“避免连接”,“请使用索引而不是什么狗P的左右连接”,我实在看不出索引跟左右连接有什么互斥的地方,该连接就连接(除非是因为性能的问题需要添加数据冗余)。

“避免where子句中的or和Like”在大多数情况是这样,但这并不是绝对的,一切都要以查询计划为准。

仁者见仁,智者见智。两张字段很多的大表使用连接就是傻子了。当然我也没说禁止连接。
其实还漏写1条:那就是开发时候,在可以避免调用数据库时候,尽量不要频繁调用数据库。特别是代码中如果需要调用一些常量值。使用properties文件或者final类比较好。在数据库中建一张表放这些常量值,每次需要使用时候去访问数据库也会影响性能。
2 楼 tedeyang 2011-01-07  
or在mysql中,某些情况下是会用索引的。
like s% 则必然会用到索引,除非mysql认为file sort更快,一般情况下它是对的。
楼主既然是说基本策略,那基本都说得没错。
总结一下:
尽快释放独占性资源,妥善使用索引,减少网络通信量(包括字段,以及使用存储过程,批处理等),查询要能尽快塌缩
1 楼 liangguanhui 2011-01-07  
这种帖子个人觉得误导性比较强,特别是对新人。

首先最重要的一点,是认清你要使用的是什么数据库,也就是这里的第七点,这个非常非常非常非常重要。实际上每个数据库都会有不同,有时候差别还非常大。

比如“频繁提交”,这一条在SQL server、sybase、informix是成立的,但在Oracle、InnoDB、PostgreSQL等支持MVCC的数据库是非常不要得的。

又例如“锁定策略”,实际上SQL Server等和Oracle又有很大的不同。SQL Server是读写互堵,堵塞的时候默认是块级锁(这里是说旧版本的SQLServer);Oracle是读写互不相堵,写堵塞写的时候默认是行级锁。

又例如“避免连接”,“请使用索引而不是什么狗P的左右连接”,我实在看不出索引跟左右连接有什么互斥的地方,该连接就连接(除非是因为性能的问题需要添加数据冗余)。

“避免where子句中的or和Like”在大多数情况是这样,但这并不是绝对的,一切都要以查询计划为准。

相关推荐

    SQL Server数据库的性能分析和优化策略研究

    ### SQL Server数据库的性能分析和优化策略研究 #### 一、引言 随着信息技术的快速发展,企业纷纷构建了自己的信息系统,数据库作为信息系统的核心组成部分,其性能直接影响到整个系统的稳定性和响应速度。传统上...

    了解DB2数据库优化需掌握基本策略

    以下是一些基本的DB2数据库优化策略: 1. **建立索引**:索引对于提升查询性能至关重要。在创建表时应考虑索引的建立,但需权衡其对插入性能的影响。在插入数据前建立索引可能导致较高的日志空间需求和较慢的插入...

    Oracle数据库优化详解

    首先,Oracle数据库优化不仅仅是技术问题,它还涉及到策略问题。在1992年推出的Oracle 7版本中,Oracle首次引入了基于成本的优化器(CBO),随后得到了极大的改进,并成为支持Oracle所有新特性的核心组件。从Oracle ...

    【整理】数据库面试题索引sql优化+数据库SQL优化总结之百万级数据库优化

    接下来,"数据库SQL优化总结之百万级数据库优化.pdf"可能深入到实际的优化实践。 1. **数据库架构设计**:在百万级数据量下,合理的设计能避免性能瓶颈,如垂直分割、水平分割,以及读写分离策略。 2. **缓存与...

    sql server 2005数据库优化方法

    在SQL Server 2005中,数据库优化是提高系统性能和效率的关键环节。本文将介绍两种主要的数据库优化工具:SQL Server Profiler和数据库引擎优化顾问(Database Engine Tuning Advisor),以及它们如何帮助DBA们更好...

    Oracle 数据库优化技术手册.pdf

    Oracle数据库优化是一项系统工程,涉及程序设计、操作系统优化、硬件配置、数据库配置以及SQL语句等多个层面。为了提高Oracle数据库的性能,需要对这些层面进行综合考虑,逐一优化。 首先,硬件优化是基础,主要...

    Oracle数据库性能优化策略.pdf

    以下将详细阐述Oracle数据库的一些基本工作原理,影响性能的因素,以及如何通过调整内存结构、优化器、执行计划、存取路径和SQL命令来提升性能。 1. **内存结构优化** - **系统全局区(SGA)**:Oracle数据库的...

    数据库优化分享.rar

    本分享主要针对初级和中级技术从业者,旨在帮助他们理解和掌握数据库优化的基本原则和实用技巧。 一、基础知识 1. **索引优化**:索引是提高查询效率的关键,合理建立索引可以显著加快数据检索。理解B树、B+树等...

    针对邮政电子汇兑系统oracle数据库的优化策略.pdf

    【邮政电子汇兑系统Oracle数据库优化策略】 Oracle数据库作为全球广泛应用的关系型数据库系统,因其高效、灵活和经济性,被广泛应用于邮政电子汇兑系统。本文主要探讨Oracle数据库的特点、基本架构及其优化策略,...

    数据库优化设计方案

    【数据库优化设计方案】 数据库优化是提升系统性能的关键环节,旨在避免磁盘I/O瓶颈、减少CPU利用率和降低资源竞争。本文将深入探讨基于第三范式的基本表设计、扩展设计以及数据库表对象放置等方面,旨在为实际开发...

    基于SDD-1算法的分布式数据库查询优化策略的研究.pdf

    分布式数据库查询优化策略是分布式数据库领域研究的重要内容,其核心目标是提升查询效率,降低资源消耗,加快响应速度。SDD-1算法作为一种针对分布式数据库查询优化的算法,具备独特的理论基础和实施步骤,因此在...

    SqlServer数据库优化方案.pdf

    SQL Server数据库优化方案 SQL Server是微软公司推出的一款强大的关系型数据库管理系统,它在信息化进程...理解这些基本概念和优化策略,结合实际业务场景,才能制定出有效的数据库优化方案,保障系统的高效稳定运行。

    ORACLE 数据库优化指南

    首先,Oracle9i Performance Tuning的纵览介绍了数据库优化的基本概念和目标。优化不仅关乎数据库的响应速度,也涉及资源的有效利用和系统的稳定性。在这一阶段,我们需要理解数据库的工作原理,以便识别出可能的...

    数据库优化存储设计方案

    数据库优化存储设计方案 数据库优化存储设计方案是指通过对数据库的设计、优化和调整,提高数据库的存储和查询性能,减少磁盘 I/O 瓶颈、降低 CPU 利用率和减少资源竞争。该方案涵盖了基于第三范式的基本表设计、...

    数据库优化方案1

    本文将详细介绍五个阶段的数据库优化策略,确保系统性能得到显著提升。 **第一阶段:优化SQL和索引** 这是数据库优化的起点,因为这个阶段的成本最低,且不需要额外的中间件。优化SQL和索引的主要步骤包括: 1. ...

    分布式数据库查询优化与安全策略的研究.pdf

    在分布式数据库查询优化与安全策略的研究中,涉及到的核心知识点包括分布式数据库系统的概念、分布式查询优化的目标与策略、以及分布式数据库的安全防护策略。以下是对这些知识点的详细阐述: 1. 分布式数据库系统...

    SQLServer数据库性能优化

    总的来说,SQL Server的性能优化是一个综合性的过程,涉及到数据库设计的规范化与非规范化策略、物理数据库的布局优化,以及硬件系统的合理配置。通过这些方法,可以显著提高SQL Server处理数据的效率,从而提升整体...

    优化SQL Server数据库的经验总结

    本文将详细介绍SQL Server数据库优化的关键知识点,包括优化数据库的注意事项、SQL语句优化的基本原则等内容。 #### 二、优化数据库的注意事项 1. **关键字段建立索引** - 建立索引能够显著提高查询速度。通常...

    分布式数据库优化与处理

    分布式数据库优化与处理是数据库管理领域的一个重要主题,特别是在大数据时代,如何有效地处理和优化分布式环境下的查询变得至关重要。分布式数据库是指数据分布在多个物理位置的系统,这种分布可能跨越多个服务器、...

Global site tag (gtag.js) - Google Analytics