mysql数据库性能优化方案有哪些

想必面试过java开发程序员的同胞们都会遇到过面试官问这个问题,操作数据库的能力是后端工作者必不可少的专业技能之一,我们从事后端的人主要就是跟数据库打交道,不可能让前端的人才搞数据库,任何一家企业最重要的就是数据,所以企业要求后端工作者对这块技术要求很严格,随着时间的日积累,企业中的数据库中的数据量会越来越大,导致数据库的性能就会明显降低,需要由我们后端工作者来对数据库的性能进行
优化,所以这个问题经常会成为很多企业面试官面试后端人才的问题之一,以下是我查过资料后对它进行的总结,大家以后再找工作中遇到这个问题,可以参考一下。
1.我们一开始在设计数据库表结构的时候,就应该考虑到数据库优化这块
表中字段的数据类型:表中的不同数据类型的选择,它的性能也会不同,我们在设计表字段属性的时候选择合适,比如我对“性别”这个字段选择类型,我们可以定义成enum。
表中字段的长度大小:大家都知道数据库中的数据最终是存储在磁盘上,字段如果越长,那么写入磁盘和读取数据对磁盘的I/O操作就会越多,从而影响到数据库的性能。比如邮政编码我们可以存储6位长度,没必要设置大于6位的。
表的存储引擎类型:mysql常用的引擎有InnoDB、MyISAM、Memory等,不同的引擎,数据库的性能也不一样,mysql默认的存储引擎是InnoDB,它支持事务,行级锁,MyISAM不支持事务,表级锁,但是查询速度叫快点。
2.sql语句的优化
mysql数据库优化的一个重要手段就是对sql语句的优化,其中最重要的便是在表中建立索引,这个sql优化我会在以后的文章中专门拿出来进行介绍。
3.分库分表
一个数据库的性能往往在面对海量数据时候就会大大不足,这个时候我们就可以将一个数据库分成多个放到不同的数据库上,用来缓解一个数据库面对的压力。一个表的数据量很大的时候,查询速度也会变得慢下来,我们就可以减少表中的数据来提高效率,将一个表分拆成多个表,这样数据就会平摊在多个表里,查询起来速度要比之前快好多。
4.事务
为什么我会提到事务这个点?大家都知道我们在写sql语句时候我们会写各种不同的sql语句,但是操作数据库并不是简单的一条sql语句或者就几条语句就可以操作的,大部分的场景都是用到一堆sql语句来完成本次的操作,在这一堆sql语句执行中一旦有个sql语句发生错误,之前的执行成功了,就会出现数据的问题,破坏数据库的完整性和一致性,要避免这样的发生,我们需要使用到事务,在select语句中可以不使用事务。
5.系统应用连接数据库的参数优化
我们后端开发这在程序中连接数据库时,会在配置文件中设置一系列配置参数,如最大连接数等,一般我们不适用默认值,我们要根据我们自己的应用程序和硬件设备来进行配置的。当请求超过最大连接数时候,就会出现等待情况,影响到我们mysql性能。
6.主从复制,读写分离
为了提高数据库性能,一台数据库服务器往往是有瓶颈的,当有大量的请求来操作数据库时候,服务器肯定忙不过来,这个时候我们需要给数据库服务器增加数量,来降低一台服务器的压力,我们可以通过主从复制,增删改操作在主服务器上面进行操作,查询的话在从服务器上进行查询,这样就会提高我们的性能。
7.借助一些缓存服务器
有些情况下,我们可以减少对我们数据库的访问数量,借助缓存服务器,比如redis,mongodb等做缓存数据库,这样减少了我们数据库的压力,提高性能。
以上就是我所知道的一些方案策略来对mysql进行性能优化的方式,如果有些不足,大家可以在面试中回答在补充一些。下面的是我的个人公众号,大家每天可以看到我分享的技术文章。

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值