优化顺序:选择适当的引擎和表结构和数据类型建立索引,优化sql。增加缓存,redis、memcache。主从、主主,读写分离。mysql自带分区表根据业务耦合垂直拆分,分布式数据库水平拆分,选择合理的sharding key。
Extra:额外信息 only index 信息只需要从索引中查出,可能用到了覆盖索引,查询非常快 using where 如果查询没有使用索引,这里会在server层过滤再使用 where来过滤结果集 impossible where 啥也没查出来 using filesort ,只要没有通过索引来排序,而是使用了其他排序的方式就是 filesort using temporary一般来说这种情况都是进行了DISTINCT、排序、分组 using index condition 索引下推,上文讲过,就是把server层这个过滤操作下推到引擎层。
分库分表技术的使用,主要是数据库产生了瓶颈,如单库的并发访问或单表的查询都超出了阈值。通过分库分表技术来解决此类问题,但正因为使用此技术,会产生ACID一系列的问题,各类中间件解决此类问题各有各的优势。
说来惭愧,这是耽误了将近1年的工作,一直零零散散拖着没做完,昨天总算是卯着劲出了一个版本。最初是打算更新一版MySQL开发规范,把一些新的技术栈和思路都更新迭代,与时俱进,但是做了一段时间,发现这件事情比自己想得要复杂。