MySQL高性能及性能优化技巧---更适合开发人员
更新次数 | 更新时间 |
---|---|
首发 | 2021.10.25 |
第一次更新 | 2021.10.26 1.删除了书中大量不必要的存储引擎类型 2.摘要完毕Mysql架构与历史部分 |
第二次更新 | 2021.10.29 1.摘要基准测试内容 2.删除了大量对概念的举例. |
第三次更新 | 2021.11.4 1.简化服务器性能剖析 |
第四次更新 | 2021.11.18 摘要完毕Schema与数据类型优化 |
第五次更新 | 2022.8.30 索引篇以及性能优化高级篇部分 |
第六次更新 | 2022.8.31 索引篇以及性能优化高级篇部分内容优化 |
第七次更新 | 2022.9.2 性能优化高级篇新增order by之后语句优化 |
第八次更新 | 2022.9.4 1.锁机制更新 2.对引用的’尚硅谷MySQL数据库高级’原理内容研判 3.更新事务内容 4. 重构锁内容 |
第九次更新 | 2022.11.16 1.更新为什么mysql选择b+树 2.b+树数据结构内容优化 |
第十次更新 | 2022.11.18 1.索引底层原理:如为什么要遵循最左前缀原则 |
第十一次更新 | 2022.11.22 1.发现网上大量其他变种b+树拿来讲mysql底层. 强调mysql的b+树叶子节点之间是双向循环链表 |
文章目录
- 前言
- 一、java开发之路的基石mysql组件的架构简介
- 1.1.1 Mysql的逻辑架构
- 1.1.2 连接管理与安全
- 1.1.3 优化与执行
- 1.2 锁的并发控制
- 1.2.1 锁粒度
- 1.2.2 怎么解决`脏读、不可重复读、幻读`这些问题呢?其实有两种可选的解决方案:
- 1.2.3从数据操作的类型划分: 读写锁
- 1.2.4从锁的粒度划分: 表级锁,行级锁,页锁
- 1.2.4.1表锁 (不依赖存储引擎)
- 1.2.4.2表级别的读写锁:
- 1.2.4.3 意向锁
- 1.2.4.4 自增锁
- 1.2.4.5 元数据锁
- 1.2.5 行锁
- 1.2.5.1 记录锁
- 1.2.5.2 间隙锁
- 1.2.5.3 临键锁
- 1.2.5.4 插入意向锁
- 1.2.6 页锁
- 1.3 事务(熟悉ACID可跳过)
- 1.3.1 隔离级别
- 1.3.2 死锁
- 1.3.3 事务日志
- 1.3.3.1 为啥需要redo日志
- 1.3.3.2 redo log刷盘策略:
- 1.3.3.3 redo log写入策略:
- 1.3.3.4 undo日志
- 1.3.4 mysql中的事务
- 设置提交模式和隔离级别
- 在事务中混合使用存储引擎
- 隐式和显式锁定
- 1.4多版本并发控制
- 1.5 MySQL的存储引擎
- ✔1.5.1 InnoDB引擎
- InnoDB概览
- MyISAM存储引擎
- MyISAM特性
- MyISAM压缩表
- MyISAM性能
- 1.5.3Mysql内建的其他主要存储引擎简要介绍
- Archive引擎
- CSV引擎
- Memory引擎
- NDB集群引擎
- 1.5.4 第三方存储引擎
- OLTP类引擎
- 面向列的存储引擎
- 1.5.5 选择合适的引擎
- 1.5.6 转换表的引擎
- 1.6 Mysql架构部分总结
- 第二章.MySQL基准测试
- 2.1 为什么需要基准测试?
- 2.2 基准测试的策略
- 2.2.1 测试何种指标
- 2.3 基准测试方法
- 常见的错误
- 2.3.1 设计和规划基准测试
- 2.3.2 基准测试应该运行多长时间
- 2.3.3 获取系统性能和状态
- 2.3.4 获得准确的测试结果
- 2.3.5 运行基准测试并分析结果
- 2.3.6 绘图的重要性
- 2.4 基准测试工具
- 2.5 基准测试案例
- 2.6 总结
- 服务器性能剖析
- 3.1 性能优化简介
- 3.1.1通过性能剖析进行优化
- 3.1.2 理解性能剖析
- 3.2 对应用程序进行性能剖析
- MySQL企业监控器的查询分析功能
- 3.3剖析MySQL查询
- 3.3.1剖析服务器负载
- 3.4诊断间歇性问题
- 3.4.1捕获诊断数据
- 3.5 其他剖析工具
- 3.6总结
- 第四章 Schema与数据类型优化
- 4.1 选择优化的数据类型
- 4.1.1 整数类型
- 4.1.2 实数类型
- 4.1.3 字符串类型
- VARCHAR
- CHAR
- 4.1.4日期和时间类型
- DATETIME
- TIMESTAMP
- 4.2加快ALTER TABLE操作的速度
- 4.2.1只修改.frm文件
- 4.3 总结
- 五.创建高性能索引
- 5.1 基本定义
- 5.2 b+tree的数据结构
- 5. 2.0 为什么要选择b+树?
- 5.2.0.1 二叉搜索树
- 5.2.0.2 AVL(二叉平衡树)
- 5.2.0.3 红黑树(也称为平衡二叉树)
- 5.2.1 重要! b+tree索引生效的条件
- 5.2.1.1 为什么要遵循最左前缀原则?
- 5.2.2 下面是一些关于B+Tree索引的限制
- 5.3 哈希索引
- 5.4 空间数据索引(R+Tree)
- 5.5 全文索引
- 5.6 聚簇(聚集)索引
- 5.6.1为什么InnoDB表必须建主键,并且推荐使用整型的自增主键?
- 5.7哪些情况需要建立索引
- 5.8哪些情况不要建索引
- 5.9 索引的优劣
- 5.10 采用逻辑删除的原因
- 六. mysql高级实践技能
- 6.1 sql性能下降的原因
- 6.2 查询性能优化
- 6.2.1常见瓶颈
- 6.2.2 explain
- 6.3 索引优化
- 6.3.1 小表驱动大表(join)
- 6.3.2 避免索引失效
- 6.3.3 其他问题
- 6.3.3.1.什么是回表
- 6.3.3.2.解决like%字符串%时索引不被使用的方法?
- 6.3.3.3.覆盖索引为什么可以不遵循最左前缀查询?
- 6.3.3.4 注意: and表是并列关系.只要and中有最左前缀索引(带头大哥).那么无论顺序如何.都会被mysql查询优化器优化,变成正常的索引序列.但范围之后依然全失效
- 6.3.3.5 mysq表关联底层机制
- 6.4 count()函数
- 6.5 查询优化
- 6.5.1 小表驱动大表
- 6.5.2 order by排序优化
- 6.5.3 group by排序
- 6.6 慢查询日志
- 6.7 show profile
- 6.8 全局查询日志
前言
作者刚刚研读学习了Mysql的高性能优化和架构设计.写这篇文章为了日后复习巩固和帮助后来者提炼mysql精华! 还请各位读者及时勘误联系作者.本章节将持续更新!阅读本文章,需要有一定的数据库基础.为了避免重复造轮子,本章筛选了各位领域大佬的文章并注明了出处.目的只有两个复习和总结知识共同学习. 笔者主要参考文献为mysql官方文档,<<mysql高性能>>,<<innodb技术内幕>>,<<java开发手册华山版>>,<<MySQL是怎样运行的:从根儿上理解MySQL>>,“尚硅谷MySQL数据库高级”,“DBA高级实战进阶班 MySQL8.0 姜承尧-腾讯数据库总监”,“MySQL数据库教程天花板,mysql安装到mysql高级,强!硬!”.
mysql8.0 比mysql5.0性能提高10~100+倍
1.影响性能考虑点包括:【这里可以从访问顺序来作为链路进行性能调优】数据库、应用程序、中间件( tomact、gateway、Nginx、)、网络(带宽)和操作系统等方面2.首先考虑自己的应用属于CPU密集型还是Io密集型,根据jvisualvm查看应用健康情况CPU:计算、排序、过滤、整合【集群】IO:网络、磁盘、数据库、redis【内存+缓存+固态+提高网卡的传输效率】3.监控执行时中间件CPU、内存使用量
docker stats:查看cpu占用、内存使用量、
提示:以下是本篇文章正文内容,下面案例可供参考
一、java开发之路的基石mysql组件的架构简介
1.1.1 Mysql的逻辑架构
MySQL的最重要,最与众不同的特性:存储引擎架构.
这种架构的设计将查询处理及其他系统任务和数据的存储/提取相分离.这种架构模式我们可以在不同环境,不同需求下自由选择数据存储的方式.
1.1.2 连接管理与安全
MySQL高性能及性能优化技巧---更适合开发人员相关推荐
- MySQL 性能优化技巧
原文地址:MySQL 性能优化技巧 博客地址:www.extlight.com 一.背景 最近公司项目添加新功能,上线后发现有些功能的列表查询时间很久.原因是新功能用到旧功能的接口,而这些旧接口的 S ...
- 高性能Mysql之查询性能优化
高性能Mysql之查询性能优化 为什么查询速度会慢 慢查询基础:优化数据访问 重构查询的方式 MySQL查询优化器的局限性 优化特定类型的查询 即使我们设计了一个最优的库表结构,建好了最好的索引,如果 ...
- mysql 优化配置 大批量数据插入_php导入大量数据到mysql性能优化技巧
本文实例讲述了php导入大量数据到mysql性能优化技巧.分享给大家供大家参考.具体分析如下: 在mysql中我们结合php把一些文件导入到mysql中,这里就来分享一下我对15000条记录进行导入时 ...
- MySQL数据库访问性能优化
MYSQL应该是最流行的WEB后端数据库.大量应用于PHP,Ruby,Python,Java 等Web语言开发项目中,无论NOSQL发展多么快,都不影响大部分架构师选择MYSQL作为数据存储. MYS ...
- SQL性能优化技巧,常见优化10经验,数据库查询好慢,还能怎么办
我熟练应用ctrl c和ctrl v 开发curd代码好多年了. mysql查询为什么会慢,关于这个问题,在实际开发经常会遇到,而面试中,也是个高频题. 遇到这种问题,我们一般也会想到是因为索引. 那 ...
- Java性能优化技巧
Java性能优化技巧 参考了些书籍,网络资源整理出来,适合于大多数Java应用 在JAVA程序中,性能问题的大部分原因并不在于JAVA语言,而是程序本身.养成良好的编码习惯非常重要,能够显著地提升程序 ...
- oracle 测试sql执行时间_从 TPCH 测试学习性能优化技巧
一. 目标 TPCH是由TPC(Transaction Processing Performance Council)事务处理性能委员会公布的一套针对数据库决策支持能力的测试基准,通过模拟数据库中与业 ...
- oracle 考试技巧,从 TPCH 测试学习性能优化技巧
一.目标 TPCH是由TPC(Transaction Processing Performance Council)事务处理性能委员会公布的一套针对数据库决策支持能力的测试基准,通过模拟数据库中与业务 ...
- 揭秘 Vue.js 九个性能优化技巧
gitHub 源码:https://github.com/Akryum/vue-9-perf-secrets 这篇文章主要参考了 Vue.js 核心成员 Guillaume Chau 在 19 年美国 ...
最新文章
- 硬核!一文梳理经典图网络模型
- 留意TCP/IP筛选和IP安全策略
- 科沃斯旺宝与阿里云联合参加通信展
- 写作—开启技术成长之路
- nfs服务启动失败:Failed to start NFS status monitor for NFSv2/3 locking..
- java jinternalframe_JInternalFrame的使用
- 你可能需要了解一下的中台
- 工作总结8:关于Vue中的slot-scope=“scope“
- 阿里99大促 | 模型识别背后的样本生成
- 【2016年第5期】数据科学人才的需求与培养
- threejs 绘制球体_Three.js 第一篇:绘制一个静态的3D球体
- maven工程启动时报“Cannot resolve XXX:XXX:xx.xx.xx”错误的问题
- C语言计算圆周率PI的代码
- c语言中波浪线scanf,~scanf 波浪线
- Word文档转/打印成PDF图片模糊问题解决
- windows meson ,ninja安装以及vs2017编译 libnice
- C#WinForm实现雷速网站比赛MQTT逆向采集
- Java,设计,功能权限和数据权限,用户、角色、权限和用户组
- L1正则化降噪,对偶函数的构造,求解含L1正则项的优化问题,梯度投影法
- expect hope wish区别