优化时机:
一般单表超过500万左右,或明显感觉到性能下降时,需要优化.。
优化方案:
1.添加索引
2.读写分离
3.使用缓存,如Memcached 或Redis 等
4.使用搜索引擎,如ElasticSearch 或Solr 等
5.分库分表
详细说明:
1.索引这步是第一步就去做的事情,在建表的时候,就要去考虑索引的事情,加索引是很简单又有效的做法,如果通过增加索 引,减少在查询数据表时全表搜索,保证实时高的热点搜索都可以命中索引2.读写分离很容易实现,建议在一开始做,不必等到性能下降时发现性能下降时可做。比如有一张500万大表,不可能缓存全 表,只能缓存热点数据,所以需要有一个监控热点数据的功能。
3.像缓存整个大表或者数据量很大可以用搜索引擎,搜索引擎是文件存储,适合高效查找,但不对插入修改、事务等支持。
4.使用搜索引擎的话需要定时把mysql的数据同步给它,同样的数据需要预留2倍磁盘,虽然搜索引擎可能可以压缩。
5.分库分表其实可以在第二步做,但实现较复杂;分表后必然涉及要读取多个表的问题,但对开发是透明的,在应用开发与数 据库中间需要研发一个平台,自动hash索引到分表后的表。举个例子,假设有一张600万的表,可以分为两张表,按时间 分,时间点A以前的分一张,500万;另一张表100万,后续的都插入到该表。