Mysql处理海量数据架构优化

前言

Mysql处理海量数据的优化可以从一下四个方面入手。

业务优化: 业务分流,Sql语句优化
架构优化: 分表分库,读写分离,数据缓存
硬件优化: 硬件配置
数据库优化: 引擎选择,逻辑改造,索引

上面每一个块都有很多内容,目前也有很多成熟的解决方案。

本篇文章主要从架构层面讲解Mysql处理海量数据。也是比较基本的内容,偏向理论。

适用数据级别:百万级

Mysql处理海量数据架构优化三大方法:分表分库,读写分离,数据缓存

一,分表分库

概念:分表分库就是根据某些条件把大数据分割成多个块,把每个块存放在不同的数据库(数据表中)。该方法是提高性能的最有效的方法。

1,根据业务拆分(垂直拆分)

模拟情景:做一个系统,该系统包括 资讯,博客,论坛

那么可以这样分库。

  1

问题:后来论坛数据猛增,访问压力开始变大。

解决:把存放论坛数据的数据库进行分库。

  2

问题:后来论坛帖子数量继续增长。访问吃力

解决:继续将存放帖子的数据库进行拆分。

2,水平拆分

把帖子数据拆分成12个数据库,把每3个数据存放到一台数据库服务器中。

 4  

问题:单个数据库db1中单表数据量过大。

解决:db1中进行分表。

5

概念:

垂直拆分:垂直才分也叫行拆分(Row Splitting),就是把组成一行的多个列分开放到不同的数据库(数据表)中,这些表具有不同的结构。垂直分表就是“业务拆分”。

水平拆分:水平拆分就是把一个表分成多个表,每个表的结构一样,但是储存的数据不一样。

二,读写分离

看看上面的例子中最后的结果。

6

下面对存放帖子的数据库服务器Server2_1_1进行读写分离。

7

Mysql的读写分离是通过Mysql代理实现的,Mysql代理是介于Mysql客户端和Mysql服务器之间的简单程序,用来分析或者传输他们之间的通讯,最大的优点就是:读写分离。

三,数据缓存

到现在论坛已经可以很好地支持海量数据的存储了。但是我们发现系统的资讯模块有访问吃力。我们在资讯模块添加缓存服务器。

8

访客首先访问缓存服务器,因为缓存服务器的数据都是在内存当中所以速度会很快,如果缓存中找不到数据再去Server1中查找数据,并且把数据缓存到缓存服务器中。

总结:

该文章是本人对Mysql数据库在处理海量数据时的架构思路。本人觉得在处理百万级量的数据,上述的架构绰绰有余,够用了。在大的数据量,千万级,十亿级,很多大的公司都有很好的解决方案。参考一下

相关文章
相关标签/搜索