08.29 MySQL如何处理亿级数据,三个阶段的思路,MySQL的分区、分表

第一阶段:

语句上的优化,详见文章

1,一定要正确设计索引

2,语句避免SQL语句全表扫描

3,尽量避免 limit 10000000,20 这样的查询

4、尽量避免无意义的查询语句以及字段

第二阶段:

1,采用mysql分区技术

a):横向分区:

b):纵向分区:

range 分区,list分区,hash分区, key分区。特别按时间产生的数据特别适合用RANGE分区。

删除历史字段也特别快

2,采用分表技术(大表分小表)

a)垂直分表:将部分字段分离出来,设计成分表,根据主表的主键关联

b)水平分表:将相同字段表中的记录按照某种Hash算法进行拆分多个分表

也可以采用一些中间件来搭建数据库,如前面说到的mycat。

目前做到的产品一个爬取微博微信数据的平台。每天爬取并且命中敏感词 关键产生文章的数据大概在110万左右。用到了11台机子部署数据库,用mycat部署的。目前2亿没有压力

第三阶段(服务器方面):

1,采用redis,等nosql分担压力,memcached之类的内存对象缓存系统,减少数据库读取操作

2,采用主从数据库设计,分离数据库的读写压力

3,采用Squid之类的代理服务器和Web缓存服务器技术


分享到:


相關文章: