在线客服
扫描二维码
下载博学谷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
以上就是数据库性能优化的策略分析,大家都学会了吗?如果在实际工作中,想要优化数据库,不妨把以上的做法实操一遍,相信对大家的工作会有很大的帮助。
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
学什么语言好?可以从事什么工作?
每年都有大量的高校毕业生进入社会,促进就业成为整个社会共同的话题。参加IT职业观念培训成为部分毕业生的选择。但是互联网行业技术方向非常多,对于零基础的人来说,学什么语言好?未来可以从事什么工作呢?
4362
2019-08-14 18:39:15
Java培训班在线教育怎么样?零基础能学好吗?
Java培训班在线教育怎么样?零基础能学好吗?随着IT在线教育的发展,博学谷的课程无论是在教学方式还是在课程内容上,都实现了极大的突破和升级,一改传统线上教育只对学员单向输出的不足。以博学谷Java在线就业班的课程为例,该教程专门为零基础学员打造,因此课程难度循序渐进,逐步深入,只要愿意付出努力好好学习,即使是零基础学完该课程也能进阶为Java高手。
3452
2020-01-06 15:26:07
Java Web之Filter学习笔记
今天要学习的是关于Filter的内容,主要包括Filter的概念、快速入门、代码演示、过滤器细节,对Filter有学习需要的小伙伴可以在看完本文后,再把文章收藏起来以便于以后的复习,现在一起来看看Java Web之Filter的学习笔记吧~
3185
2020-05-07 11:07:11
Mybatis的核心组件是什么?
MyBatis是一个基于Java的持久层框架,所谓的持久层框架就是专门用来将数据进行持久化的框架,也就是说将数据存储到数据库中的框架。学习并掌握Mybatis,首先就要了解Mybatis的核心组件。下面我们一起来了解一下Mybatis四大核心组件:SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession以及SQL Mapper。
4451
2020-08-17 12:21:16
缓存的淘汰策略有几种方式?分别怎么用?
缓存的淘汰策略有几种方式? 缓存是将一些需要读取数据放在磁盘或者内存中,由于是追求速度从而一般放在内存中。在有些场景中无法解决读的速度,因此要使用缓存,而缓存有容量有限,若缓存满了系统会如何淘汰一些数据?
2300
2022-03-24 14:48:17