性能优化算是老生常谈的话题了,不管项目大小,一旦上线,或多或少都会遇到性能问题。有些性能问题是随着时间的积累慢慢产生的,比如系统刚上线,数据量很小的时候,没啥问题,等到数据积累到一定程度,问题就暴露出来了;也有些问题是由于访问量的波动造成的,比如系统平时没问题,一到搞促销活动时就挂。因此,性能问题就如同一颗定时炸弹,只要数据量和访问量一上来,早晚会炸。
何时开始性能优化
既然性能问题早晚会炸,那我们什么时候开始呢?一定要等到系统上线出问题以后再来解决吗?还是说在编码时就尝试各种性能优化手段?
在项目开发的初期,如果过于在意性能优化,可能会让我们疲于应付实际并不会发生的问题,还会影响到开发进度,说不定还会带来新的问题。
注意这里说的是,不要过于在意性能优化,并不是说不要在意。我们还是有很多方法来保证代码质量以提高系统性能的,比如:
- 利用设计模式来解决多变的业务问题
- 使用合理的数据结构和算法,比如,同样是列表,LinkedList就比ArrayList的插入性能高很多
- 多线程环境下合理选择锁的类型和使用场景
- 编写高效SQL、合理使用索引和事务来提升数据库性能
你的脑袋里应该有一大堆这样的手段,在开发过程中,可以尽情发挥。但有一点需要着重强调:不要使用任何你不知道背后原理的优化技巧。最近小编肝到凌晨终于把这份高效存储让项目性能起飞的性能优化的资源库给大家码出来了,包含Redis,MongoDB,Mysql性能优化,解决你在项目开发过程中的困惑以及面试时的焦虑。
第一份笔记:MySQL高级调优笔记
关于这份 性能优化的资源库,我只能在文章中展示部分的章节内容和核心截图,如果你需要完整的pdf版本看下面RedisMongoDBMysql性能优化宝藏库docs.qq.com
第一部分 : MySQL 常用对象
- Linux系统安装
- MySQL
- 素引
- 视图
- 存储过程和函数
- 触发器
索引
B+TREE 结构
第二部分 : MySQL体系结构,存储引擎及SQL优化
- Mysq的体系结构概览
- 存储引擎
- 优化SQL步骤
- 索引的使用
- SQL优化
第三部分 : MySQL缓存,参数调整及锁
- 应用优化
- Mysq|中查询缓存优化
- Mysq|内存管理及优化
- Mysq|并发参数调整
- Mysq|锁问题
- 常用SQL技巧
第四部分 : MySQL 常用工具、主从复制及综合案例
- Mysql中常用工具
- Mysql日志
- Mysq|复制
- 综合案例
第二份笔记:Redis:核心原理和应用实战
基础部分
- Redis基础数据结构
- 容器型数据结构的通用规则
应用部分
- 分布式锁
- 延时队列
- 位图
- 布隆过滤器
- 简单限流
- 漏斗限流
原理部分
- 线程 IO模型
- 通信协议
- 持久化
- 管道
- 事务
- PubSub
- 小对象压缩
- 主从同步
集群部分
- Sentinel
- Codis
- Cluster
拓展部分
- Stream
- Info 指令
- 再谈分布式锁
- 过期策略
- LRU
- 懒惰删除
- 优雅地使用 Jedis
- 保护 Redis
- Redis 安全通信
源码部分
- 「字符串」内部结构
- 「字典」内部
- 「压缩列表」内部
- 「快速列表」内部
- 「跳跃列表」内部结构
- 「紧凑列表」内部
- 「基数树」内部
第三份笔记:MongoDB入门到熟练笔记
MongoDB快速上手
- MongoDB相关概念
- 单机部署
- 基本常用命令,查看当前正在使用的数据库命令
- 索引
- 文章评论实战案例
MongoDB-集群安全
- 副本集-Replica Sets
- 分片集群Sharded Cluster
- 安全认证