MySQL高并发的解决方法有:优化SQL语句 , 优化数据库字段 , 加缓存 , 分区表 , 读写分离以及垂直拆分 , 解耦模块 , 水平切分等 。
【mysql如何处理高并发】
文章插图
高并发大多的瓶颈在后台 , 在存储mysql的正常的优化方案如下:
(1)代码中sql语句优化
(2)数据库字段优化 , 索引优化
(3)加缓存 , redis/memcache等
(4)主从 , 读写分离
(5)分区表
(6)垂直拆分 , 解耦模块
(7)水平切分
方案分析:
1、方法1个方法2是最简单 , 也是提升效率最快的方式 。因为每条语句都命中了索引 , 是最高效的 。但是如果是为了使sql达到最优而去建索引 , 那么索引就泛滥了 , 对于千万级以上的表来说 , 维护索引的成本大大增加 , 反而增加了数据库的内存的开销 。
2、数据库字段的优化 。曾经发现一高级程序员在表字段的设计上 , 一个日期类型 , 被设计为varchar类型 , 不规范的同时 , 无法对写入数据校验 , 做索引的效率也有差别
3、缓存适合读多写少更新频度相对较低的业务场景 , 否则缓存异议不大 , 命中率不高 。缓存通常来说主要为了提高接口处理速度 , 降低并发带来的db压力以及由此产生的其他问题 。
4、分区不是分表 , 结果还是一张表 , 只不过把存放的数据文件分成了多个小块 。在表数据非常大的情况下 , 可以解决无法一次载入内存 , 以及大表数据维护等问题 。
5、垂直拆分将表按列拆成多表 , 常见于将主表的扩展数据独立开 , 文本数据独立开 , 降低磁盘io的压力 。
6、水平拆 , 水平拆分的主要目的是提升单表并发读写能力(压力分散到各个分表中)和磁盘IO性能(一个非常大的.MYD文件分摊到各个小表的.MYD文件中) 。如果没有千万级以上数据 , 为什么要拆 , 仅对单表做做优化也是可以的;再如果没有太大的并发量 , 分区表也一般能够满足 。所以 , 一般情况下 , 水平拆分是最后的选择 , 在设计时还是需要一步一步走 。
推荐阅读
- 关于垃圾处理的方法有哪些 油漆桶属于什么垃圾分类
- 如何正确安装使用路由器?
- MySQL核心:索引结构原理
- MySQL全局锁表锁&行锁
- 如何做高并发架构设计!
- 详解Oracle与Mysql在主键、索引、分页、组函数和单引号的区别
- 如何选购无线WIFI路由器?
- 剖腹产后如何运动瘦身呢
- 如何短时间内运动减肥呢
- 如何锻炼减肚子上的赘肉啊