第一阶段:
语句上的优化,详见文章
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缓存服务器技术
閱讀更多 我是大陳老師 的文章