mysql改进_mysql 5.6 改进一

mysql 5.6 改进:

(1)online DDL

相关变量:

mysql> show global variables  like  '%alter%';

+----------------------------------+-----------+

| Variable_name                    | Value     |

+----------------------------------+-----------+

| innodb_online_alter_log_max_size | 134217728 |

| old_alter_table                  | OFF       |

+----------------------------------+-----------+

innodb_online_alter_log_max_size:alter缓存区,默认为128M

old_alter_table:是否启用online DDL

语法:

alter table  t_name  add  index indx01(col),

algorithm = {default|inplace|copy},

lock ={default | none | share | exclusive}

原理:

从源表中cp数据到新表,并且记录下源表的所有数据变动,最后应用日志,更改表明。

note:开启online DDL 后 并不是所有的alter都能按照inplace方式进行,比如,change .

(2).MRR

相关变量:

mysql> show global variables  like  '%switch%'\G  ;

*************************** 1. row ***************************

Variable_name: optimizer_switch

Value: index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on,index_condition_pushdown=on,mrr=on,mrr_cost_based=on,block_nested_loop=on,batched_key_access=off,materialization=on,semijoin=on,loosescan=on,firstmatch=on,subquery_materialization_cost_based=on,use_index_extensions=on

和mrr相关的参数有

mrr:开启mrr

mrr_cost_based:基于开销由mysql自己决定是否使用mrr

read_rnd_buffer_size:随机读缓存大小。

作用:

<1>将非顺序io转变为顺序io

<2>.拆分查询

(3).ICP

将数据的过滤放在存储引擎层。

在mysql 5.6 之前 ,mysql使用索引添加查询后,会通过索引查询到的数据读取到内存中,然后在内存中(server层)通过where的其他字段

过滤掉不需要的数据.

在mysql 5.6 中,在进行索引条件查询时 , mysql 会尝试把where的条件放在存储引擎层过滤,然后再把数据读取到server层,

这样大大降低了不必要的io操作,提高性能

参考资料:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值