网站建设制作设计营销 中山,运营策划方案模板,北京网站建设公司兴田德润电话,深圳微信网站建设MySQL调优常见的回答如何回答效果更好业务层的优化如果只能用mysql该如何优化代码层的优化SQL层面优化总结常见的回答
SQL层面的优化——创建索引#xff0c;创建联合索引#xff0c;减少回表。再有就是少使用函数查询。
回表指的是数据库根据索引#xff08;非主键#…
MySQL调优常见的回答如何回答效果更好业务层的优化如果只能用mysql该如何优化代码层的优化SQL层面优化总结常见的回答
SQL层面的优化——创建索引创建联合索引减少回表。再有就是少使用函数查询。
回表指的是数据库根据索引非主键找到了指定的记录所在行后还需要根据主键再次到数据块里获取数据。
如何回答效果更好
我们把SQL优化分为四层 1、业务上的优化 2、代码层的优化 3、sql层面的优化包含索引优化 4、硬件层优化
硬件层的优化其实都是运维所以硬件层的优化是由团队其他成员完成的。
业务层的优化
表里面十多亿的数据这里我们进行了分库分表和集群。索引什么的已经优化到最好。
vip 1级可以看多少数据5级可以看全部的数据
查数据其实肯定都是分页查分页的下面是有一个count
我不用mysql了我直接上es。这是一个办法。
我可以一页一页的来缓存。也是一个办法。
es。我们就一周的开发周期。这块已经是外包开发完了但是做接口压测时候接口不通因为数据太多服务器直接卡住了一个sql可以查询几十秒。
es。我们为什么不上es第一点就是时间短第二点就是因为不是我们写的代码业务不熟悉没法直接改外包的代码。第三点就是外包人员技术参差不齐。对es不太熟悉。
如果只能用mysql该如何优化
首先就是可以业务上的优化可以说跟产品经理交流比如默认级的用户上来访问直接让他默认就带一些查询条件这时候他的查询就会筛选过滤。这样再查数据的话就会比较的快。
其次因为这里count我们就必须给他改了。count我们单独给他写出来。
如果这时count依然是十几亿的数据那只能从代码层面进行优化了。
代码层的优化
数据库上的设计层面。
我们当时是单独建立了一张表然后这个表存储了数据表名称主键count数。
如果是加数据的话我们会异步的往这个表去1数据。然后就是查询的时候count值直接查询这个表里面count这个列就能把数据查询出来了。
count的问题就解决了。
SQL层面优化
最简单最直接的其实就是创建联合索引。减少回表也就是说所有数据直接在这一个索引树下就查询出来了。
连表查询连表查的比较多了比较慢了这时候索引怎么建用处都不太明显了。这时可以代码层面做优化写两个sql查询出来数据做拼装。
总结
我们面试的时候sq优化问你了你要如何去说 首先一定要结合自身的项目来谈优化根据你项目的数据量并发高的部分来谈如何优化而不是上来直接 说优化的话就是创建联合索引尽量别使用函数查询。 其次就是跟面试官谈具体的优化经过比如慢查询警报例如企业微信发警报日志或者发短信提醒。根据日志去查询慢查询的sql。
查询出来了可以结合代码根据实际情况去修改。
参考资料全网讲的最好面试被问到mysql调优如何回答