前言
小郑最近在准备面试题,通过github和b站等各种学习网站上学习八股文,并且整理出自己觉得面试可能会问到的知识点,希望通过做笔记的方式来巩固自己的知识点,并且也希望可以帮助到大家在面试的时候更加得心应手一些,那么从现在开始,和我一起加入八股学习之旅吧!
对于低性能的SQL语句的定位,最重要也是最有效的方法就是使用执行计划,MySQL提供了explain命令来查看语句的执行计划。对于查询语句,最重要的优化方式就是使用索引。 而执行计划,就是显示数据库引擎对于SQL语句的执行的详细情况,其中包含了是否使用索引,使用什么索引,使用的索引的相关信息等。
有些SQL语句写法不合理,可能导致查询性能低下。
解决方法:重写SQL语句,让优化器可以以更优的方式执行查询。
排查过程:
(1)使用top命令观察,确定是mysqld导致还是其他原因。
(2)如果是mysqld导致的,show processlist,查看session情况,确定是不是有消耗资源的sql在运行。
(3)找出消耗高的sql,看看执行计划是否准确,索引是否缺失,数据量是否太大。
处理:
(1)kill掉这些线程(同时观察cpu使用率是否下降),
(2)进行相应的调整(比如说加索引,改sql,改内存参数)
(3)重新跑这些sql.
其他情况:
有可能是每个sql消耗资源并不多,但是突然之间,有大量的session连进来导致cpu飙升,这种情况就需要跟应
用一起来分析为何连接数会激增,再做出相应的调整,比如说限制连接数等。
在 MySQL 中进行性能调优的经验涉及多个方面,从数据库设计到查询优化,再到服务器配置等。以下是一些常见的 MySQL 调优技巧:
INT
而不是 VARCHAR
存储数字。SELECT id, name FROM users WHERE id = ?
,如果有 id
和 name
的联合索引,就可以直接从索引中获取数据而不需要读取表。EXPLAIN
关键字来分析查询执行计划,找出性能瓶颈。OFFSET
,可以使用延迟关联或子查询来优化。innodb_buffer_pool_size
:设置为物理内存的 70%-80%,用于缓存数据和索引。innodb_log_file_size
:适当调整日志文件大小,提高写入性能。innodb_flush_log_at_trx_commit
:根据需求调整为 0、1 或 2,以平衡数据安全和性能。max_connections
和 thread_cache_size
,根据并发需求设置合适的值。❤️❤️❤️小郑是普通学生水平,如有纰漏,欢迎各位大佬评论批评指正!???
???如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!? ? ?
Copyright © 2019- zgxue.com 版权所有 京ICP备2021021884号-5
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务