- 浏览: 7854821 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (2425)
- 软件工程 (75)
- JAVA相关 (662)
- ajax/web相关 (351)
- 数据库相关/oracle (218)
- PHP (147)
- UNIX/LINUX/FREEBSD/solaris (118)
- 音乐探讨 (1)
- 闲话 (11)
- 网络安全等 (21)
- .NET (153)
- ROR和GOG (10)
- [网站分类]4.其他技术区 (181)
- 算法等 (7)
- [随笔分类]SOA (8)
- 收藏区 (71)
- 金融证券 (4)
- [网站分类]5.企业信息化 (3)
- c&c++学习 (1)
- 读书区 (11)
- 其它 (10)
- 收藏夹 (1)
- 设计模式 (1)
- FLEX (14)
- Android (98)
- 软件工程心理学系列 (4)
- HTML5 (6)
- C/C++ (0)
- 数据结构 (0)
- 书评 (3)
- python (17)
- NOSQL (10)
- MYSQL (85)
- java之各类测试 (18)
- nodejs (1)
- JAVA (1)
- neo4j (3)
- VUE (4)
- docker相关 (1)
最新评论
-
xiaobadi:
jacky~~~~~~~~~
推荐两个不错的mybatis GUI生成工具 -
masuweng:
(转)JAVA获得机器码的实现 -
albert0707:
有些扩展名为null
java 7中可以判断文件的contenttype了 -
albert0707:
非常感谢!!!!!!!!!
java 7中可以判断文件的contenttype了 -
zhangle:
https://zhuban.me竹板共享 - 高效便捷的文档 ...
一个不错的网络白板工具
一、什么是MRR
MMR全称是Multi-Range Read,是MYSQL5.6优化器的一个新特性,在MariaDB5.5也有这个特性。优化的功能在使用二级索引做范围扫描的过程中减少磁盘随机IO和减少主键索引的访问次数。将随机IO转换为顺序IO
二、MRR和没有MRR的区别
给出一个简单的例子,在innodb表执行下面的查询:
SELECT non_key_column FROM tbl WHERE key_column=x
在没有MRR的情况下,它是这样得到结果的:
1. select key_column, pk_column from tb where key_column=x order by key_column ---> 假设这个结果集是t
2. for each row in t ; select non_key_column from tb where pk_column = pk_column_value。(在oracle里第2步叫回表)
在有MRR的情况下,它是这样执行的:
1. select key_column, pk_column from tb where key_column = x order by key_column ---> 假设这个结果集是t
2. 将结果集t放在buffer里面(直到buffer满了),然后对结果集t按照pk_column排序 ---> 假设排序好的结果集是t_sort
3. select non_key_column fromtb where pk_column in (select pk_column from t_sort)
两者的区别主要是两点:
1. 没有MRR的情况下,随机IO增加,因为从二级索引里面得到的索引元组是有序,但是他们在主键索引里面却是无序的,所以每次去主键索引里面得到non_key_column的时候都是随机IO。(如果索引覆盖,那也就没必要利用MRR的特性了,直接从索引里面得到所有数据)
2. 没有MRR的情况下,访问主键索引的次数增加。没有MRR的情况下,二级索引里面得到多少行,那么就要去访问多少次主键索引(也不能完全这样说,因为mysql实现了BNL),而有了MRR的时候,次数就大约减少为之前次数t/buffer_size。
二 BKA
Batched Key Access (BKA) 提高表join性能的算法。当被join的表能够使用索引时,就先排好顺序,然后再去检索被join的表,听起来和MRR类似,实际上MRR也可以想象成二级索引和 primary key的join
如果被Join的表上没有索引,则使用老版本的BNL策略(BLOCK Nested-loop)
BKA原理
对于多表join语句,当MySQL使用索引访问第二个join表的时候,使用一个join buffer来收集第一个操作对象生成的相关列值。BKA构建好key后,批量传给引擎层做索引查找。key是通过MRR接口提交给引擎的(mrr目的是较为顺序)MRR使得查询更有效率。
大致的过程如下:
BKA使用join buffer保存由join的第一个操作产生的符合条件的数据
然后BKA算法构建key来访问被连接的表,并批量使用MRR接口提交keys到数据库存储引擎去查找查找。
提交keys之后,MRR使用最佳的方式来获取行并反馈给BKA
BNL和BKA都是批量的提交一部分行给被join的表,从而减少访问的次数,那么它们有什么区别呢?
BNL比BKA出现的早,BKA直到5.6才出现,而NBL至少在5.1里面就存在。
BNL主要用于当被join的表上无索引
BKA主要是指在被join表上有索引可以利用,那么就在行提交给被join的表之前,对这些行按照索引字段进行排序,因此减少了随机IO,排序这才是两者最大的区别,但是如果被join的表没用索引呢?那就使用NBL
BKA和BNL标识
Using join buffer (Batched Key Access)和Using join buffer (Block Nested Loop)
相关参数
BAK使用了MRR,要想使用BAK必须打开MRR功能,而MRR基于mrr_cost_based的成本估算并不能保证总是使用MRR,官方推荐设置mrr_cost_based=off来总是开启MRR功能。打开BAK功能(BAK默认OFF):
SET optimizer_switch='mrr=on,mrr_cost_based=off,batched_key_access=on';
复制代码
BKA使用join buffer size来确定buffer的大小,buffer越大,访问被join的表/内部表就越顺序。
BNL默认是开启的,设置BNL相关参数:
SET optimizer_switch=’block_nested_loop’
复制代码
支持inner join, outer join, semi-join operations,including nested outer joins
BKA主要适用于join的表上有索引可利用,无索引只能使用BNL
三 设置
SET global optimizer_switch='mrr=on,mrr_cost_based=off,batched_key_access=on';
发表评论
-
让 InnoDB 多任务运行
2018-09-06 16:06 746今天偶然看到的一招,记录下 如果服务器上的参数 innodb_ ... -
mysql中查询连接工作状态
2018-05-31 15:13 640#!/bin/bash while true do mysql ... -
MYSQL BACKUP的SHELL相关语句
2018-05-25 20:33 507#!/bin/bash ###############Basi ... -
MySQL This function has none of DETERMINISTIC, NO SQL...错误1418 的原因分析及解决方法
2018-05-08 11:17 574MySQL开启bin-log后,调用存储过程或者函数以及触发器 ... -
NUMA的选择
2018-04-24 09:52 1348现在的机器上都是有 ... -
关于MYSQL 5.7线程池的好文收集
2018-03-27 10:57 1479来自腾讯工程师的好文: https://www.jianshu ... -
MYSQL 的审计日志插件
2017-11-30 10:19 1234MYSQL 的审计日志插件,可惜目前只是LINUX用: 来自M ... -
(转)MySQL InnoDB缓冲池配置详解
2017-10-09 16:55 3993一、InnoDB缓冲池 InnoDB维护一个称为缓冲池的内存 ... -
(转)MySQL 5.7默认SQL模式带来的问题总结
2017-10-05 18:46 1824http://www.ywnds.com/?p=8865 在 ... -
(转)MySQL 5.7默认ONLY_FULL_GROUP_BY语义介绍
2017-10-05 18:45 1142http://www.ywnds.com/?p=8184 ON ... -
MySQL 5.6 新功能之 Index Condition Pushdown (ICP)
2017-10-05 15:52 746http://www.cnblogs.com/zhoujiny ... -
(收藏)万字总结:学习MySQL优化原理,这一篇就够了!
2017-09-30 23:37 1146http://dbaplus.cn/news-155-1531 ... -
(转)MySQL中NULL和空值的区别
2017-09-23 15:57 2189MySQL中NULL和空值的区别 http://www.yw ... -
mysql 5.7中关于count(*)的优化
2017-09-20 19:15 2305在mysql 5.7中,对于select count(*) f ... -
MySQL 索引设计概要
2017-09-12 21:12 473<<MySQL 索引设计概要>>,不错 ... -
10分钟学会理解和解决MySQL乱码问题
2017-07-22 18:21 503http://cenalulu.github.io/mysql ... -
MySQL的or/in/union与索引优化
2017-07-22 08:29 901https://mp.weixin.qq.com/s/ZWez ... -
MYSQL中查看某个表或库的大小语句
2017-04-02 09:12 1910在information_schema.tables中有相关记 ... -
(收藏)MYSQL大表方案
2017-01-09 19:58 1395https://segmentfault.com/a/1190 ... -
(转)MySQL 特性分析之内部临时表
2016-11-28 22:54 820MySQL中的两种临时表 外部临时表 通过CREATE TEM ...
相关推荐
第一步 先根据where条件中的辅助索引获取辅助索引与主键的集合,结果 第二步 通过第一步获取的主键来获取对应的值 第一步 先根据where条件中的辅助索引获取
BKA和ATP处理对龙眼果实采后贮藏效果.zip
BKA和ATP处理对龙眼果实采后贮藏效果.doc
RIS-BKA用法$ npm install // In your project import the 'ris-bka' modulevar RisBka = require ( 'ris-bka' ) ;// Use this object to execute methods (listed below)方法getVersion: RisBka.getVersion(cbOk, ...
因此,NFIQ 2 的开发始于 2011 年,由 NIST 与德国联邦信息安全办公室 (BSI) 和联邦刑事警察局 (BKA)以及研发实体MITRE、 Fraunhofer IGD、Hochschule Darmstadt (h_da )和Secunet。 NFIQ 2 在 [0-100] 范围内提供...
24名男性中有24名(57.1%),而女性则有18名(42.9%)。 平均年龄为58.3岁(SD = 12.0)。 15人中,有15人(35.7%)拥有中学,15人(35.7%)拥有高等教育,而3人(7.1%)和9人(21.4%)分别没有学历和初等...
标签版本Kanjur/ , Tanjur/和Tantra/文件夹的xml文件中使用的标签是: <rkts> (分别为rktst和rktsg ),指示文本是内核中文本的体现/表达。 例如<rkts>1在Kanjur/derge.xml指示在德格版文字是用ID的文本的表现1在...
下面是我用JSP和数据库做的购物车的源程序:注意:1、重新计费部分还没有做好,大家自己动手吧!2、下一版本将用session做。//shop_cart.jsp<%@ page contentType=text/html;charset=gb2312%><%@ page...
//页数和商品类型参数,可以在“继续购物”时返回到上次购物的页面 if (request.getParameter("curpage")==null){ curpage=1; }else{ curpage=java.lang.Integer.parseInt(request.getParameter("curpage")); } //...
and Federal Office for Information Security (BSI) and Federal Criminal Police Office (BKA) in Germany as well as research and development entities, MITRE, Fraunhofer IGD, Hochschule Darmstadt (HAD) ...
@ page language=”java” import=”java.sql.*” %> id=”bka” scope u201dpage” class=”shop.bka” /><%String product_type;String action;int product_id;int curpage;//商品类型i
BKA / Generalstaatsanwaltschaft法兰克福缉获主页 由分叉。 特征 移动优先:自动调整屏幕尺寸 辅助功能:与屏幕阅读器和盲文显示器完全兼容。 指示 抓住隐藏的服务 将index.html和banner.jpg复制到webroot LKA...
曲线 Go的crypto/elliptic软件包的椭圆曲线。 crypto/elliptic附加椭圆曲线。 使用*elliptic.CurveParams实现曲线。... 在Brainpool曲线中,由于crypto / elliptic的限制,仅实现brainpoolP * t1变
考虑一类具有连续变量的...y≥yo-τ,x≠k, A(xk +τ,y) +A(xk,y +τ) -A(xk,y) =bkA(xk,y), ∨y∈ [Yo-τ,∞),k∈N(1).其中P(x,y)≥0是[xo,∞)X[yo-τ,∞)上的非负连续函数,τ>0,bk是常数,r和l是正整数,0≤ xo
习题解答代码实现 ,或者可以查看:包括交叉验证(cv)和自助法(bootstrap) : ,:文献统计小伙子AOS 日本航空航天局JRSS BKA 百分比3 1个0 3 0 4/14 4 0 0 0 0 0/7 5 0 0 0 1个1/11 7 4 6 2 0 12/23 8 1个4 1个0...