MySQL高级 - 应用优化
应用优化
前面章节,我们介绍了很多数据库的优化措施。但是在实际生产环境中,由于数据库本身的性能局限,就必须要对前台的应用进行一些优化,来降低数据库的访问压力。
使用连接池
对于访问数据库来说,建立连接的代价是比较昂贵的,因为我们频繁的创建关闭连接,是比较耗费资源的,我们有必要建立 数据库连接池,以提高访问的性能。
减少对MySQL的访问
避免对数据进行重复检索
在编写应用代码时,需要能够理清对数据库的访问逻辑。能够一次连接就获取到结果的,就不用两次连接,这样可以大大减少对数据库无用的重复请求。
比如 ,需要获取书籍的id 和name字段 , 则查询如下:
select id , name from tb_book;
之后,在业务逻辑中有需要获取到书籍状态信息, 则查询如下:
select id , status from tb_book;
这样,就需要向数据库提交两次请求,数据库就要做两次查询操作。其实完全可以用一条SQL语句得到想要的结果。
select id, name , status from tb_book;
增加cache层
在应用中,我们可以在应用中增加 缓存 层来达到减轻数据库负担的目的。缓存层有很多种,也有很多实现方式,只要能达到降低数据库的负担又能满足应用需求就可以。
因此可以部分数据从数据库中抽取出来放到应用端以文本方式存储, 或者使用框架(Mybatis, Hibernate)提供的一级缓存/二级缓存,或者使用redis数据库来缓存数据 。
负载均衡
负载均衡是应用中使用非常普遍的一种优化方法,它的机制就是利用某种均衡算法,将固定的负载量分布到不同的服务器上, 以此来降低单台服务器的负载,达到优化的效果。
利用MySQL复制分流查询
通过MySQL的主从复制,实现读写分离,使增删改操作走主节点,查询操作走从节点,从而可以降低单台服务器的读写压力。
采用分布式数据库架构
分布式数据库架构适合大数据量、负载高的情况,它有良好的拓展性和高可用性。通过在多台服务器之间分布数据,可以实现在多台服务器之间的负载均衡,提高访问效率。
MySQL高级 - 应用优化相关推荐
- #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
Linux + JVM + Mysql高级性能优化课程 课程名称: Linux + JVM + Mysql高级性能优化 QQ群: 243242580(小白.菜鸟勿进)跟Java.M ...
- Mysql高级-应用优化,查询缓存优化,锁
文章目录 1. 应用优化 1.1 使用连接池 1.2 减少对MySQL的访问 1.2.1 避免对数据进行重复检索 1.2.2 增加cache层 1.3 负载均衡 1.3.1 利用MySQL复制分流查询 ...
- MySQL高级性能优化
MySQL高级 如果你是一名开发者,数据库将伴随你的整个职业生涯.掌握SQL写出高效易用的SQL已成为开发者的必备技能.因为整个应用系统离不开数据库,应用系统是否流畅(数据量达到一定程度时),很大一部 ...
- MySQL高级-索引优化(超详细)
性能分析 MySQL Query Optimizer Mysql中由专门负责优化SELECT语句的优化器,主要功能就是通过计算分析系统中收集到的统计信息,为客户端请求的Query提供他认为最优的执行计 ...
- MySQL高级-SQL优化步骤
优化SQL步骤(explain等) 1 查看SQL执行频率 2 定位低效率执行SQL 3 explain分析执行计划 3.1 环境准备 3.2 explain 之 id 3.3 explain 之 s ...
- Mysql高级 索引优化
Mysql逻辑架构 Mysql与其他数据库相比有点与众不同,他的架构可以在多种不同的场景中应用并发挥作用,主要体现在存储引擎的架构上,插件式的存储引擎结构将查询处理和其他的系统任务以及数据的存储提取分 ...
- MySQL高级 - 内存优化 - MyISAM内存优化
MyISAM 内存优化 myisam存储引擎使用 key_buffer 缓存索引块,加速myisam索引的读写速度.对于myisam表的数据块,mysql没有特别的缓存机制,完全依赖于操作系统的IO缓 ...
- MySQL高级 - 内存优化 - 优化原则
内存优化原则 1) 将尽量多的内存分配给MySQL做缓存,但要给操作系统和其他程序预留足够内存. 2) MyISAM 存储引擎的数据文件读取依赖于操作系统自身的IO缓存,因此,如果有MyISAM表,就 ...
- MySQL高级 - SQL优化 - 索引提示
使用SQL提示 SQL提示,是优化数据库的一个重要手段,简单来说,就是在SQL语句中加入一些人为的提示来达到优化操作的目的. USE INDEX 在查询语句中表名的后面,添加 use index 来提 ...
最新文章
- linux的dns的转发域,Linux DNS服务器子域授权、转发器和转发域配置实例(三)
- python怎么安装各种模块_Python2.7安装和常用模块安装
- windows命令大全_必收藏!电脑快捷键、组合键大全
- WINCE下调试AT050TN22屏及触摸屏小结
- Val编程-界面编程
- ThinkPHP多次重复提交问题的根源
- [转载]url带中文参数显示乱码的问题
- 基于html房屋管理系统,一种Web界面的互联网房屋销售管理系统设计的制作方法...
- [转]VMPlayer的Briged网络配置
- 《C++ 沉思录》阅读笔记——句柄类
- 匿名者黑页html源码,HACK敲代码黑页源码
- selenium在爬虫领域的初涉(自动打开网站爬取信息)
- linux支持ipv6
- 设备维护管理的内容是什么?这四点你必须知道
- 展望 | 2023年十大科技趋势
- CSAPP 程序人生
- 谈一下自己收集资料和整理资料的经验
- 广二师的计算机专业好不,惠州学院专业_广东第二师范学院和惠州学院非师范专业哪个比较好...
- 男人应该摒弃“处女情结”
- vivado 数码管学习(二)数码管显示一位数字和显示八位数字
热门文章
- PAT (Basic Level) Practise:1037. 在霍格沃茨找零钱
- 一天一道算法题--5.30---递归
- MBA必读:不能触碰的5大职场高压线
- ActiveMQ持久化到mysql
- paper每日谈——动机
- oauth2.0里回调地址返回code中如何让code不显示在URL里?
- 《从0到1学习Flink》—— Apache Flink 介绍
- 上机考试系统 commons-fileupload 上传与下载 压缩为 zip 文件 删除文件夹下所有内容...
- 用requests爬取一个招聘网站
- 再回首Java第十一天