mysql高并发的解决方法有:优化SQL语句,优化数据库字段,加缓存,分区表,读写分离以及垂直拆分,解耦模块,水平切分等。
对于mysql如何处理高并发,今天爱可生小编就来介绍下几个优化方案。
高并发大多的瓶颈在后台,在存储mysql的正常的优化方案如下:
(1)代码中sql语句优化
(2)数据库字段优化,索引优化
(3)加缓存,redis/memcache等
(4)主从,读写分离
(5)分区表
(6)垂直拆分,解耦模块
(7)水平切分
方案分析:
1、方法1和方法2是最简单、提高效率最快的方法。因为每个句子都命中了索引,效率最高。但是,如果索引是为了让sql达到最佳,索引就会泛滥。对于1000万以上的手表,维护索引的成本大大增加,反而增加了数据库内存的成本。
2、优化数据库字段。有一次,一位高级程序员发现表中字段的设计,一个日期类型,被设计成 varchar类型,在不规范的情况下,无法对写入数据进行校验,索引的效率也不同。
3、缓存适合读多写少,更新频度相对较低的业务场景,否则缓存异议不大,命中率不高。缓存通常来说主要为了提高接口处理速度,降低并发带来的db压力以及由此产生的其他问题。
4、分区不是分表,结果还是一张表,只不过把存放的数据文件分成了多个小块。在表数据非常大的情况下,可以解决无法一次载入内存,以及大表数据维护等问题。
5、垂直拆分将表按列拆成多表,常见于将主表的扩展数据独立开,文本数据独立开,降低磁盘io的压力。
6、横向分割,横向分割的主要目的是提高单张表格的并发读写能力(将压力分散到单个表格中)和磁盘 IO性能(将一个非常大的. MYD文件分摊到单个小表格的. MYD文件中)。假如没有超过千万级的数据,为什么要拆分,只对单个表进行优化也是可以的;如果没有太大的扩展,分区表通常也能满足要求。因此,一般情况下,水平拆分是最后的选择,在设计上还是需要一步一步的。
下一篇: 数据库云服务的特点都有哪些