咱们考虑的状况是在你的数据量很大的状况下,千万级别的数据量。不要当咱们的请求响应时间已经让我没法忍受的时候,再来想起来优化,可能有点迟了。由于可能会丢失不少潜在的价值客户。因此,在咱们当初设计表,或者由于咱们的业务的变化而致使的状况下,就要多多考虑去优化咱们的MySQL了。redis
一、在咱们的开发中,请务必注意咱们的sql书写,可能你的一个sql致使全站挂掉了。因此要优化好咱们的sql,这其中不得不说,索引。SQL 的优化和索引 密不可分。优化SQL 一部分是业务逻辑的优化,一部分就是索引的优化。至于怎么优化,网上太多了。也能够看我其余文章有介绍。sql
二、当咱们以为上面的作的很不错了,仍是访问慢,考虑下加缓存把。这里的缓存能够是 A文件缓存 B MySQL的buffer C Nginx或者Apace的缓存设置 D客户端浏览器的缓存 E 更重要的是NOSQL类型的缓存,增长memcache 和 redis。确实好,基于内存的读写天然比操做硬盘快把浏览器
三、咱们的数据量还在增长,咱们就考虑下MySQL的读写分离了,进而涉及到主从复制等状况,不过这里须要对SQL 语句进行稍微改动下。要不怎么知道读哪台服务器,写哪台。缓存
四、接下来,咱们考虑咱们的业务了,随着并发量不断增长,老板这时候开心坏了。这都是钱啊。那就分表把。100万条记录的表,分5张 10张都行。不过前提须要按照必定的规则的,比方id为1的在member1表,2的在member表,一次类推;或者啊id在1-100的在1表,101-200的2表,以此类推。意思就是这样的。不过须要咱们在sql的时候,写好读哪一个表,写那个表的规则。其实也简单。服务器
五、区分热表和冷表。也就是垂直切分表了。顾名思义,热表表明常常更新的,操做比较频繁的,冷表,则相反。并发
这其中咱们须要考虑如下问题优化
表引擎的选择。在几年前默认就是Mysiam,如今你再看看,默认是innodb类型的。设计
服务器的配置状况。索引