mysql⾼并发解决⽅案
mysql⾼并发的解决⽅法有:
优化SQL语句,优化数据库字段,加缓存,分区表,读写分离以及垂直拆分,解耦模块,⽔平切分等。
⾼并发⼤多的瓶颈在后台,在存储mysql的正常的优化⽅案如下:
(1)代码中sql语句优化
(2)数据库字段优化,索引优化
(3)加缓存,redis/memcache等
(4)主从,读写分离
(5)分区表
(6)垂直拆分,解耦模块
(7)⽔平切分
sql语句优化方式⽅案分析:
1、⽅法1个⽅法2是最简单,也是提升效率最快的⽅式。因为每条语句都命中了索引,是最⾼效的。但是如果是为了使sql达到最优⽽去建索引,那么索引就泛滥了,对于千万级以上的表来说,维护索引的成本⼤⼤增加,反⽽增加了数据库的内存的开销。
2、数据库字段的优化。曾经发现⼀⾼级程序员在表字段的设计上,⼀个⽇期类型,被设计为varchar类型,不规范的同时,⽆法对写⼊数据校验,做索引的效率也有差别
3、缓存适合读多写少更新频度相对较低的业务场景,否则缓存异议不⼤,命中率不⾼。缓存通常来说主要为了提⾼接⼝处理速度,降低并发带来的db压⼒以及由此产⽣的其他问题。
4、分区不是分表,结果还是⼀张表,只不过把存放的数据⽂件分成了多个⼩块。在表数据⾮常⼤的情况下,可以解决⽆法⼀次载⼊内存,以及⼤表数据维护等问题。
5、垂直拆分将表按列拆成多表,常见于将主表的扩展数据独⽴开,⽂本数据独⽴开,降低磁盘io的压⼒。
6、⽔平拆,⽔平拆分的主要⽬的是提升单表并发读写能⼒(压⼒分散到各个分表中)和磁盘IO性能(⼀个⾮常⼤的.MYD⽂件分摊到各个⼩表的.MYD⽂件中)。如果没有千万级以上数据,为什么要拆,仅对单
表做做优化也是可以的;再如果没有太⼤的并发量,分区表也⼀般能够满⾜。所以,⼀般情况下,⽔平拆分是最后的选择,在设计时还是需要⼀步⼀步⾛。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。