9月17-MySQL性能优化
2018-09-17 本文已影响3人
麦克劳林
MySQL性能优化策略
1、MySQL内核架构
2、索引原理与查询优化
- 加速MySQL高效查询数据的数据结构
- 二分查找(binary search)
- 二叉树查找(binary tree search)
- MyISAM引擎和InnoDB使用Balance+Tree作为索引结构
3、内存引擎类型
- MyIsam速度快,响应快。表级锁是致命问题
- Innodb目前主流存储引擎
1)行级锁
务必注意影响结果集的定义是什么
行级锁会带来更新的额外开销,但是通常情况下是值得的
2)事物提交
对I/O效率提升的考虑
对安全性的考虑 - HEAP内存引擎
1)频繁更新和海量读取情况下仍会存在锁定状况 - 索引优化-MyISAM VS InnoDB
MyISAM索引文件(.MYI)、数据文件(MYD)
1)所有的索引都是对等的
2)KEY
4、内存使用考量
5、分布式缓存Cache
- Redis、Memcached是最流行的分布式缓存
- MySQL支持缓存同步数据
1)命中率是第一要评估的数据
2)善于利用内存,请注意数据存储的格式及压缩算法
3)相关评估类似于热点数据表的介绍,热点数据,静态不变
6、性能与安全性
7、分布式架构
8、主从复制、读写分离
- 主从复制
1)读写分离对负载的减轻远远不如分库分表来的直接
2)写压力会传递给从表,只读从库一样有写压力,一样会产生读写锁
3)负载均衡主要使用分库方案,主从主要用于热备和故障转移 - MySQL Cluster:高可用
1)同步复制
2)自动故障切换
3)自我修复
4)无共享架构,无单点故障
5)跨地域复制
9、分库分表、分片Sharding策略
- 分片Sharding策略,MySQL集群与Sharding存储机制
1)自动将表分片(或分区)到不同节点上,使数据库可以在低成本的商用硬件上横向扩展,支持读写和写入密集型负载,并且可通过sql或者直接通过NoSQL API访问。
2)分片对应用程序完全透明,这样应用程序便可连接至集群中任何节点,查询操作会自动访问所需的正确片区。
10、硬件策略
- 高并发,高可用
- 增加磁盘并发IO数量
- 使用SSD磁盘
- 日志文件独立磁盘驱动器
- 使用RAID磁盘阵列
- 使用多核CPU
- 使用大量内存和缓存