MySQL 数据库 处理高并发业务

高并发大多数瓶颈在后台,MySQL正常优化方案如下:

  • 优化SQL语句
  • 优化数据库字段、索引
  • 加缓存:redismemcache
  • 分区表
  • 主从、读写分离
  • 垂直拆分
  • 解耦模块
  • 水平切分

方案分析:

  • 优化SQL语句优化数据库字段、索引是最简单,也是提升效率最快的方式。因为每条语句都命中了索引,是最高效的。但是如果是为了使SQL达到最优而去建索引,那么索引就泛滥了,对于千万级以上的表来说,维护索引的成本大大增加,反而增加了数据库的内存的开销。
  • 数据库字段的优化:一个日期类型被设计为varchar类型,不规范的同时也无法对写入数据校验,做索引的效率也有差别。
  • 缓存适合读多写少,更新频度相对较低的业务场景,否则缓存异议不大,命中率不高。缓存通常来说主要为了提高接口处理速度,降低并发带来的db压力以及由此产生的其他问题。
  • 分区不是分表,结果还是一张表,只不过把存放的数据文件分成了多个小块。在表数据非常大的情况下,可以解决无法一次载入内存,以及大表数据维护等问题。
  • 垂直拆分将表按列拆成多表,常见于将主表的扩展数据独立开,文本数据独立开,降低磁盘io的压力。
  • 水平拆,水平拆分的主要目的是提升单表并发读写能力(压力分散到各个分表中)和磁盘IO性能(一个非常大的.MYD文件分摊到各个小表的.MYD文件中)。如果没有千万级以上数据,为什么要拆,仅对单表做做优化也是可以的;再如果没有太大的并发量,分区表也一般能够满足。所以,一般情况下,水平拆分是最后的选择,在设计时还是需要一步一步走。
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 创作都市 设计师:CSDN官方博客 返回首页