面对大数据量的优化
0. mysql基础
http://youyu4.iteye.com/admin/blogs/2330441
http://youyu4.iteye.com/admin/blogs/2333291
1. 优化sql和索引
优化sql:
http://youyu4.iteye.com/admin/blogs/2331378
优化索引:
http://youyu4.iteye.com/admin/blogs/2331664
http://youyu4.iteye.com/admin/blogs/2331902
2. 选择合适的存储引擎
http://youyu4.iteye.com/admin/blogs/2332458
http://youyu4.iteye.com/admin/blogs/2333122
3. 加缓存,memcached、redis
4. 主从数据库,读写分离
5. 表分区,用MySQL自带的表分区,但是sql语句是需要针对分区表做优化的,sql条件中要带上分区条件的列,从而使查询定位到少量的分区上,否则就会扫描全部分区。
分区表的坑
6. 垂直拆分,将一个大系统拆分成多个小系统,怎么拆根据模块的耦合度而定,形成分布式系统。
适用场景:主要要看应用类型是否合适这种拆分方式,如系统可以分为,订单系统,商品管理系统,用户管理系统业务系统比较明的,垂直拆分能很好的起到分散数据库压力的作用。
垂直拆分可以将系统拆分,但不一定能解决压力,如果订单系统有2000W条数据,压力还是很大的,所以才需要水平拆分。
7. 水平拆分,针对数据量大的表,拆分成多个小表,也可以将表分别放到不同的server上
参考:
http://blog.csdn.net/iloveyin/article/details/39996831
http://www.zhihu.com/question/19719997