在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
如何获取有性能问题的SQL 1、通过用户反馈获取存在性能问题的SQL 使用慢查询日志获取有性能问题的SQL 首先介绍下慢查询相关的参数 1、slow_query_log 启动定制记录慢查询日志 2、slow_query_log_file 指定慢查询日志的存储路径及文件 3、long_query_time 指定记录慢查询日志SQL执行时间的阈值 4、log_queries_not_using_indexes 是否记录未使用索引的SQL 5、log_output 设置慢日志查询的保存格式(如果需要保存为文件请修改成FILE) 慢查询使用日志中记录的信息
使用慢查询获取有性能问题的SQL 常使用的慢查询日志分析工具(mysqldumpslow)
慢查询日志实例 慢查询的相关配置设置 命令行执行参数查看分析的结果
常使用的慢查询日志分析工具(pt-query-digest) 使用工具前,需要先安装该工具,如果已有,可略过下面的安装步骤 3、安装工具包 执行命令分析慢查询日志 ]# pt-query-digest --user=root --password=redhat --host=127.0.0.1 slow-mysql > slow.rep MySQL服务器处理查询请求的整个过程
查询缓存对SQL性能的影响
查询缓存的优化参数 query_cache_type 设置查询缓存是否可用 注意:DEMAND表示只有在查询语句中使用SQL——CACHE和SQL_NO_CACHE来控制是否需要缓存 query_cache_size 设置查询缓存的内存大小 query_cache_limit 设置查询缓存可用存储的最大值 query_cache_wlock_invalidate 设置数据表被锁后是否返回缓存中的数据(默认是关闭的,建议也是关闭的此选项) query_cache_min_res_unit 设置查询缓存分配的内存块最小的值 会造成MySQL生成错误的执行计划的原因
MySQL优化器可优化的SQL类型 1、重新定义表的关联顺序 2、将外链接转换成内连接 3、使用等价变换规则 4、优化count(), min()和max() 5、将一个表达式转换为常数表达式 6、使用等价变换规则 7、子查询优化 8、对in()条件进行优化 如何确定查询处理各个阶段所消耗的时间 使用profile set profiling = 1; show profile for query N; 查询的每个阶段所消耗的时间 使用profile查看语句所消耗的时间 特定的SQL查询优化 1、利用主从切换的原理进行大表的表结构修改,例如,现在从服务器上修改,修改完毕以后,进行主从切换,再在原来老的主上进行大表的修改,存在一定的风险。
使用pt-online-schema-change命令来修改大表,具体操作如下图所示 上图的参数解释
原创作品,转载请注明出处 |
请发表评论