在线客服
扫描二维码
下载博学谷APP
扫描二维码
关注博学谷微信公众号
数据库性能如何优化?有哪些策略?谈到数据库的性能优化,这无疑是一个老生常谈的话题了。首先我们可以来看看影响数据库性能的因素,不外乎就是硬件、服务器系统、数据结构和SQL语句等等方面。下面我们来逐一针对这些可以进行优化的地方,详细分析一下具体的优化策略,感兴趣的朋友赶紧看下去吧!

优化策略一:调整硬盘I/O
这一步是在信息系统开发之前完成的。数据库管理员可以将组成同一个表空间的数据文件放在不同的硬盘上,做到硬盘之间I/O负载均衡。
优化策略二:建立索引
减少数据访问,创建并使用正确的索引。数据库索引的原理非常简单,但在复杂的表中真正能正确使用索引的人很少,即使是专业的DBA也不一定能完全做到最优。索引会大大增加表记录的DML开销,正确的索引可以让性能提升100,1000倍以上,不合理的索引也可能会让性能下降100倍,因此在一个表中创建什么样的索引需要平衡各种业务需求。数据库优化第一步就是建立合理的索引,这也是最初级的优化,也是DBA常用的优化方案
优化策略三:调整数据库SQL语句
应用程序的执行最终将归结为数据库中的SQL语句执行,因此SQL语句的执行效率最终决定了ORACLE数据库的性能。ORACLE公司推荐使用ORACLE语句优化器(Oracle Optimizer)和行锁管理器(row-level manager)来调整优化SQL语句。
优化策略四:考虑应用程序结构设计
这一部分也是在开发信息系统之前完成,程序员在这一步需要考虑应用程序使用什么样的体系结构,是使用传统的Client/Server两层体系结构,还是使用Browser/Web/Database的三层体系结构。不同的应用程序体系结构要求的数据库资源是不同的。
优化策略五:考虑数据结构的设计
这一部分在开发信息系统之前完成,程序员需要考虑是否使用ORACLE数据库的分区功能,对于经常访问的数据库表是否需要建立索引等。
优化策略六:做好服务器内存分配
减少数据库服务器CPU运算,使用绑定变量,并且合理使用排序,减少比较操作,利用更多的资源。内存分配是在信息系统运行过程中优化配置的,数据库管理员可以根据数据库运行状况调整数据库系统全局区的数据缓冲区、日志缓冲区和共享池的大小;还可以调整程序全局区的大小。需要注意的是,SGA区不是越大越好,SGA区过大会占用操作系统使用的内存而引起虚拟内存的页面交换,这样反而会降低系统。
优化策略七:调整操作系统参数
例如:运行在UNIX操作系统上的ORACLE数据库,可以调整UNIX数据缓冲池的大小,每个进程所能使用的内存大小等参数。
优化策略八:分库
分库是数据库优化的一种较高级手段,实际上是横向分表的衍生;一般需要有中间件或者客户端做一些工作实现,这里给大家推荐两个分库的代码:一个是mycat,基于阿里coba开源的数据库中间件,很容易实现分库分表、主从切换功能。
优化策略九:精简业务逻辑
要通过优化业务逻辑来提高性能是比较困难的,这需要程序员对所访问的数据及业务流程非常清楚。实际的业务总是十分复杂的,所以一般只是高级程序员更容易做出优化的逻辑,但是我们需要有这样一种成本优化的意识。
优化策略十:分析查询日志和慢查询日志
记录所有查询,这在用 ORM 系统或者生成查询语句的系统很有用。
log=/var/log/mysql.log
注意不要在生产环境用,否则会占满你的磁盘空间。
记录执行时间超过 1 秒的查询:
long_query_time=1
log-slow-queries=/var/log/mysql/log-slow-queries.log
以上就是数据库性能优化的策略分析,大家都学会了吗?如果在实际工作中,想要优化数据库,不妨把以上的做法实操一遍,相信对大家的工作会有很大的帮助。
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
如何提升MySQL数据库性能优化能力
数据库是按照数据结构来组织、存储和管理数据的仓库,在大数据和精细化运营时代,企业越来越注重用户的数据的收集。然而虽然数据库可以存放大量,甚至上亿的数据,但是这些数据并非无序的堆放在数据库的。为了提高数据库的性能,提高数据的可用性,作为开发者必须对数据库的性能进行优化。本文就为大家介绍如何提升MySQL数据库性能优化能力。
7376
2019-11-13 18:30:42
Spring Boot快速入门攻略 新手小白篇
Spring Boot是每个Java的学习者和开发者所必须要熟练掌握的内容,为什么这么说呢?当然是由于它优雅而又清楚简单的优势决定的。本篇文章主要是面向新手小白的Spring Boot快速入门攻略,会带大家快速认识spring boot,然后介绍它的优势和快速入门的具体操作步骤,感兴趣的朋友赶紧一起来看看吧!
9113
2019-11-27 14:20:22
Java递归函数详解附案例
递归函数在Java语言中得到了广泛的应用,它使得程序的编写过程更加的清晰明了。对Java初学者来讲,递归函数是需要学习的一个重要知识点。本文将附上案例和演示代码,具体为大家介绍递归函数的概念、要素以及和循环的区别。想要学习递归函数的小伙伴,赶紧一起来梳理下相关的知识点吧!
10565
2020-02-06 17:21:23
Java面试之数据库知识点复习
数据库一直都是Java面试中的重点考察项目,本文为大家整理出来了常见的数据库知识点,内容主要有select语句完整的执行顺序、SQL之聚合函数、SQL之连接查询、SQL之sql注入、Mysql性能优化、MySQL 中文乱码问题完美解决方案。
7973
2020-05-04 14:24:56
设计模式的六大原则是什么?
设计模式的六大原则是什么?分别是单一职责原则、里氏替换原则、依赖倒置原则、接口隔离原则、迪米特法则、开闭原则。下面就请大家跟随小编一起来深入理解这六大原则吧!
7812
2020-07-24 17:01:25
热门文章
- 前端是什么
- 前端开发的工作职责
- 前端开发需要会什么?先掌握这三大核心关键技术
- 前端开发的工作方向有哪些?
- 简历加分-4步写出HR想要的简历
- 程序员如何突击面试?两大招带你拿下面试官
- 程序员面试技巧
- 架构师的厉害之处竟然是这……
- 架构师书籍推荐
- 懂了这些,才能成为架构师 查看更多
扫描二维码,了解更多信息
