`
黑暗浪子
  • 浏览: 502909 次
  • 性别: 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”在大多数情况是这样,但这并不是绝对的,一切都要以查询计划为准。

相关推荐

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

    本文介绍了DB2数据库优化需掌握几条基本策略。

    数据库优化存储设计方案

    数据库优化存储设计方案本文首先讨论了基于第三范式的数据库表的基本设计,着重论述了建立主键和索引的策略和方案,然后从数据库表的扩展设计和库表对象的放置等角度概述了数据库管理系统的优化方案。

    数据库优化设计方案.doc

    数据库优化方案设计 XX信息管理平台从大型数据库环境四个不同级别的调整分析入手,分析数据库平台的系 统结构和工作机理,从九个不同方面设计数据库的优化方案。 对于数据库的数据优化,主要有四个不同的调整级别,...

    浅谈数据库系统优化.docx

    基于SQL Server的数据库优化是指对数据库处理、存储、查询等进行调优的过程。 基于SQL Serve数据库的优化,应该从数据库设计的时候就做好优化打算,为后面系统正式投入运行后优化做好准备。其主要策略有: 1)调优...

    mysql面试题-mysql经典面试题目-数据库的基本概念-SQL语法-事务处理-索引优化-性能调优-mysql-面试题目

    什么是数据库优化?列举一些常见的数据库性能优化方法。 什么是数据库表关联?列举一些常见的表关联类型。 什么是数据库存储过程和触发器?它们的作用和使用场景是什么? 什么是数据库视图?它的作用和使用场景是...

    数据库系统之查询处理与优化.pdf

    查询树的基本优化策略 选择下移优化策略(优先做选择,后做关系连接,将选择移到靠近关系) 投影下移优化策略(通过等价规则先进⾏投影,去除对查询⽆意义的属性,再做连接) 选择连接顺序优化策略(⼩关系的连接...

    Oracle数据库SQL语句优化策略

    基本的Sql编写注意事项 尽量少用IN操作符,基本上所有的IN操作符都可以用EXISTS代替 用IN写出来的SQL的优点是比较容易写及清晰易懂,但是用IN的SQL性能总是比较低的,从ORACLE执行的步骤来分析用IN的SQL与不用IN的...

    数据库课程设计.pptx

    4. 数据库性能优化策略 **第三部分:数据库应用开发** 1. 数据库连接和操作(使用编程语言如Python、Java等) 2. Web应用中的数据库集成 3. 移动应用中的数据库集成 4. 大数据和云数据库的基本概念

    如何对Oracle数据库系统性能进行优化.doc

    本文主要介绍Oracle系统性能优化的基本方法,并从操作系统、数据库结构规划、数据表设计、数据库参数调整、应用程序SQL语句分析及设计等几个方面给出具体的优化策略,供技术人员在Oracle系统管理和开发应用中参考。

    数据库期末/复试重点.pdf

    1. 要求考生掌握查询优化的一般策略. 2. 要求考生掌握基于关系代数表达式的优化算法. 五、 关系模型的规范化 1. 要求考生掌握规范化理论,能够判断给定关系模式的规范化程度; 2. 要求考生掌握函数依赖的公理系统及...

    mysql面试题史上最强汇总:基础知识+性能优化+备份与恢复+ 数据库设计+数据库管理+高可用性与容灾+安全性+ 框架集成等

    1. 基础知识:包括 MySQL 数据库的基本概念、SQL 命令、数据类型、索引、视图、存储过程等。 2. 性能优化:包括 SQL 查询优化、索引优化、数据表分区、缓存机制等。 3. 备份与恢复:包括数据备份和恢复的方法、备份...

    mysql面试题文档,主要讲述了一些数据库的基本理论

    索引和查询优化:理解索引的作用和原理,掌握查询优化的方法和技巧,能够根据查询需求选择合适的索引类型和优化策略。 存储过程和触发器:了解存储过程和触发器的概念和作用,掌握存储过程的编写和触发器的应用场景...

    数据库设计规范与技巧

    然后根据用户处理的要求,安全性的考虑,在基本表的基础上再建立必要的视图(VIEW)形成数据的外模式。  D、在物理设计阶段:根据DBMS特点和处理的需要,进行物理存储安排,设计索引,形成数据库内模 。。。

    华为数据库GaussDB实训报告

    数据库性能优化的实践: 通过学习Gauss数据库系统的调优策略,深刻认识到数据库性能优化对系统稳定性和用户体验的重要性。学到了硬件配置的优化、并发连接管理、缓存和存储引擎优化以及SQL查询优化等关键技能,为...

    构建最高可用Oracle数据库系统 Oracle 11gR2 RAC管理、维护与性能优化

    10.7.4 CHM的基本特性 10.7.5 CHM的管理与维护 10.7.6 CHM与OSWatcher对比 10.8本章小结 第11章 最高可用性 11.1最高可用性架构 11.1.1 Data Guard优势 11.1.2客户端Failover 11.1.3 Data Guard配置 11.1.4...

    数据库课程设计(5).doc

    " "物理模型设计 " "(A)将逻辑数据模型转化成物理数据模型 " "(B)对模型进行必要的完善和优化 " "(C)根据需要设计视图、存储过程和触发器等 " "(D)描述安全管理方案、备份恢复策略、并发控制策略等 " "在...

    高效MySQL查询加速指南:索引策略、查询优化、性能调优,助力数据库管理员和开发者突破性能瓶颈

    这款“mysql如何优化查询语句,提升查询速度”资源旨在帮助您快速掌握mysql查询优化的基本知识和技能,为您的学术和职业生涯提供坚实的支持。还等什么呢?快来学习这个资源,开启您的mysql查询优化之旅吧!

    MySQL DBA 数据库工程师实战经验

    1. **数据库基础知识**:介绍MySQL数据库的基本概念,包括数据库设计原则、数据类型、表结构设计等。 2. **SQL语言应用**:深入讲解SQL语言的高级应用,包括复杂查询、事务处理、存储过程、触发器等。 3. **数据库...

Global site tag (gtag.js) - Google Analytics