一、优化你的sql和索引(Innodb索引比Myisam索引慢,因为一个是聚集索引一个是非聚集索引)
二、加缓存,memcached,redis,命中缓存就可以不用查询数据库。
三、就做主从复制或主主复制,读写分离。
四、垂直拆分,其实就是根据你模块的耦合度,将一个大的系统分为多个小的系统,也就是分布式系统。
五、水平切分,针对数据量大的表,这一步最麻烦,最能考验技术水平,要选择一个合理的sharding key,为了有好的查询效率,表结构也要改动,做一定的冗余,应用也要改,sql中尽量带sharding key,将数据定位到限定的表上去查,而不是扫描全部的表。
数据库的最左查询,MySQL采用b+树原理查询,每次查询复合字段从左到右的属性,依次查询。
例如在没有优化的情况下。 数据表student根据id和score建立复合索引为id _score,现在使用以下查询结果为
(id,score) 可以查询到
(score,id) 不能查询到
如果有优化,那么数据库引擎可以把(score,id)优化为(id,score),从而支持查询。