本文介绍如何调整实例的loose_optimizer_switch参数,以便进行实例调优。
背景
查询优化器是MySQL内部的一个功能模块,负责优化查询语句,它可以在执行查询之前,生成并选择最优的执行计划,从而提高查询效率。loose_optimizer_switch参数是RDS MySQL的一个系统变量,用于控制相关的查询优化器行为是否启用。
阿里云针对社区版MySQL的各个版本的optimizer_switch参数项做了适配,在RDS MySQL 5.7和RDS MySQL 8.0版本,loose_optimizer_switch参数引入了新的参数项,帮助您更好地进行实例调优,提高数据库的性能。
注意事项
-
请了解每个参数项的含义和作用后再修改参数项,以免产生非预期的结果,详情请参见MySQL官方文档optimizer_switch。
-
请根据实际情况调整参数项,例如数据量大小、业务压力、实例规格和配置等。
-
需逐个尝试修改参数项,观察查询性能的变化,直至找到最优配置。
-
不同版本的MySQL可能存在不同的loose_optimizer_switch参数项,需根据具体版本进行调整。
loose_optimizer_switch参数项与RDS MySQL版本对应关系
您可以参考版本对应关系修改对应版本的参数项。loose_optimizer_switch参数项均向高版本兼容,即高版本支持低版本参数项。
RDS MySQL 8.0新增参数项
参数项名称 |
新增参数项的小版本 |
use_invisible_indexes={on|off} |
rds_20190601 |
duplicateweedout={on|off} |
|
condition_fanout_filter={on|off} |
|
derived_merge={on|off} |
|
skip_scan={on|off} |
|
hash_join={on|off} |
rds_20200331 |
subquery_to_derived = {on|off} |
rds_20201231 |
prefer_ordering_index={on|off} |
|
derived_condition_pushdown={on|off} |
RDS MySQL 5.7新增参数项
参数项名称 |
新增参数项的小版本 |
condition_fanout_filter={on|off} |
rds_20190915 |
derived_merge={on|off} |
|
duplicateweedout={on|off} |
|
prefer_ordering_index={on|off} |
rds_20211231 |
RDS MySQL 5.6支持的参数项
参数项名称 |
支持参数项的小版本 |
batched_key_access={on|off} |
任意小版本均支持 |
block_nested_loop={on|off} |
|
engine_condition_pushdown={on|off} |
|
firstmatch={on|off} |
|
index_condition_pushdown={on|off} |
|
index_merge={on|off} |
|
index_merge_intersection={on|off} |
|
index_merge_sort_union={on|off} |
|
index_merge_union={on|off} |
|
loosescan={on|off} |
|
materialization={on|off} |
|
mrr={on|off} |
|
mrr_cost_based={on|off} |
|
semijoin={on|off} |
|
subquery_materialization_cost_based={on|off} |
|
use_index_extensions={on|off} |
说明
在MySQL 5.6新增了loose_optimizer_switch参数,MySQL 5.6的任意小版本均支持上述参数项。
操作步骤
请参见设置实例参数。
内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家
阿里云企业补贴进行中: 马上申请
腾讯云限时活动1折起,即将结束: 马上收藏
同尘科技为腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠
转转请注明出处:https://www.yunxiaoer.com/156148.html