索引

b树,以及b+树的构建,以及mysql底层索引的原理

 ̄綄美尐妖づ 提交于 2020-03-05 18:07:56
B-Tree: M阶的Btree的几个重要特性: 1.节点最多含有m颗子树(指针),m-1个关键字(数据)(m>=2); 2.除根节点和叶子节点外,其他每个节点至少有ceil(m/2)个子结点(子树),ceil为向上取整,5/2=3取整,分裂的时候从中间分开,分成两个子树 3.若根节点不是叶子节点,则至少有两颗子树。 Btree有个非常重要的操作:当一颗树不满足以上性质的时候会干嘛?红黑树大家已经知道了会左旋右旋变颜色。而是 Btree的分裂。 分裂过程如图: b树减少了磁盘IO的,增加了查询效率。最重要的是分裂过程构建b树。 缺点是:不能解决范围查询,以及所有点都存数据造成空间浪费,所以MySQL最终选择了b+树 b+树: b+树的3个性质: 1.叶子结点通过双向链表连接 2.非叶子结点不存放数据 3.数据和节点一样多 通过图可以看出b+树和b树的区别: MySQL底层索引: MySQL底层索引就是采用b+树的结构,大量减少磁盘IO次数,充分存储了数据。 通过双向链表解决了索引的范围查询 节点存储多个索引,符合了联合索引的左原则。 通过索引关键字的个数及大小,以及页面大小(一次IO查询的数据量),可以计算b+树的阶数 b+树的特点总结: 总结: 来源: CSDN 作者: FunnySour 链接: https://blog.csdn.net/qq_36767214/article

Mysql Explain 关键字

有些话、适合烂在心里 提交于 2020-03-05 17:51:15
在日常工作中,我们会有时会开慢查询去记录一些执行时间比较久的SQL语句,找出这些SQL语句并不意味着完事了,些时我们常常用到explain这个命令来查看一个这些SQL语句的执行计划,查看该SQL语句有没有使用上了索引,有没有做全表扫描,这都可以通过explain命令来查看。所以我们深入了解MySQL的基于开销的优化器,还可以获得很多可能被优化器考虑到的访问策略的细节,以及当运行SQL语句时哪种策略预计会被优化器采用。 -- 实际SQL,查找用户名为Jefabc的员工 select * from emp where name = 'Jefabc'; -- 查看SQL是否使用索引,前面加上explain即可 explain select * from emp where name = 'Jefabc'; expain出来的信息有10列,分别是id、select_type、table、type、possible_keys、key、key_len、ref、rows、Extra 概要描述: id:选择标识符 select_type:表示查询的类型。 table:输出结果集的表 partitions:匹配的分区 type:表示表的连接类型 possible_keys:表示查询时,可能使用的索引 key:表示实际使用的索引 key_len:索引字段的长度 ref:列与索引的比较 rows

[Java面试十二]数据库概念相关

南楼画角 提交于 2020-03-05 12:54:02
1. 什么是存储过程?它有什么优点? 答:存储过程是一组予编译的 SQL 语句, 它的优点有: 允许模块化程序设计,就是说只需要创建一次过程,以后在程序中就可以调用该过程任意次。 允许更快执行,如果某操作需要执行大量 SQL 语句或重复执行,存储过程比 SQL 语句执行的要快。 减少网络流量,例如一个需要数百行的 SQL 代码的操作有一条执行语句完成,不需要在网络中发送数百行代码。 更好的安全机制,对于没有权限执行存储过程的用户,也可授权他们执行存储过程。 2. oracle的 存储过程和函数有什么区别? Oracle 中的函数与存储过程的 区别 : A: 函数必须有返回值 , 而过程没有 . B: 函数可以单独执行 . 而过程必须通过 execute 执行 . C: 函数可以嵌入到 SQL 语句中执行 . 而过程不行 . 其实我们可以将比较复杂的查询写成函数 . 然后到存储过程中去调用这些函数 . Oracle 中的函数与存储过程的 特点 : A. 一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。 B. 对于存储过程来说可以返回参数,而函数只能返回值或者表对象。 C. 存储过程一般是作为一个独立的部分来执行,而函数可以作为查询语句的一个部分来调用,由于函数可以返回一个表对象,因此它可以在查询语句中位于 FROM 关键字的后面。 3. 什么是事务? 答

总结一下m3u8格式相关问题

烈酒焚心 提交于 2020-03-05 05:34:28
1.m3u8格式解读 本小节摘自: m3u8视频文件详解 m3u8不是一种视频格式,而是一种纯文本文件。 m3u8视频文件格式中 存放了视频的基本信息 和 分段视频的索引地址 (将一整个视频分成了时长不同的很多小段)。当播放m3u8视频时,就是按顺序下载播放索引列表的视频,从而完成一部完整视频的播放。 维基百科对m3u8的定义 M3U8: m3u8 是一种纯文本文件,采用UTF-8编码,是一种Unicode版本的m3u文件。 M3U : m3u 是一种播放多媒体列表的文件格式,可以指定一个或多个多媒体文件的位置,它的设计初衷是为了播放音频文件。比如MP3,但是越来越多的软件现在用来播放视频文件列表。 M3U文件是记录了一个索引纯文本文件,打开它时播放软件并不是播放它,而是根据它的索引找到对应的音视频文件的网络地址进行在线播放。 HLS :m3u 和 m3u8 文件都是苹果公司使用的HLS (HTTP Live Streaming)格式的基础,这种格式可以在iPhone和Macbook等设备播放。——HLS 点播是常见的分段 HTTP 点播,就是将视频流分成不同的片段,客户端不断的去下载该片段,由于片段之间的分段间隔时间非常短,所以看起来是一条完整的播放流 2.m3u8格式怎么播放、播放原理 (1)只有m3u8文件的【链接】时,可以浏览器插件Native HLS Playback

向量空间模型 - 维基百科,自由的百科全书

老子叫甜甜 提交于 2020-03-05 04:57:24
向量空间模型 - 维基百科,自由的百科全书 向量空间模型 维基百科,自由的百科全书 跳转到: 导航 , 搜索 向量空间模型 (或者 词组向量模型 ) 作为 向量 的标识符(比如索引),是一个用来表示文本文件的代数模型。它应用于信息过滤、 信息检索 、 索引 以及关联规则。SMART是第一个使用这个模型的信息检索系统。 目录 [ 隐藏 ] 1 定义 2 应用 3 范例: tf-idf 权重 4 优点 5 局限 6 基于模型的以及扩展的向量空间模型 7 以向量空间模型为工具的软件 7.1 免费开放的软件资源 8 进一步参考 9 另见 10 参考文献 [ 编辑 ] 定义 文档和问题都用向量来表示。 每一维都相当于是一个独立的词组。如果这个术语出现在了文档中,那它在向量中的值就非零。已经有很多不同的方法来计算这些值,这些值叫做(词组)权重。其中一种广为人知的算法就是tf_idf权重(见下面的例子)。 我们是根据应用来定义 词组 的。典型的词组就是一个单一的词、 关键词 、或者较长的短语。如果字被选为词组,那么向量的维数就是出现在词汇表中不同字的个数。 向量运算能通过查询来比较各文档。 [ 编辑 ] 应用 通过文档相似度理论的假设,比较每个文档向量和原始查询向量(两个向量的类型是相同的)之间的角度偏差,使得在文档中搜索关键词的关联规则是能够计算的。 实际上

SAP ABAP DELETE用法

♀尐吖头ヾ 提交于 2020-03-04 23:57:38
4.1 要使用索引删除行 要使用索引删除行,请 使用有 INDEX 选项的 DELETE 语句,用法 如下: DELETE INDEX . 如果使用 INDEX 选项,则从 ITAB 中删除索引 为 的行。删除 行之后,下 面行的索引减1。 如果操作成 功,则将 SY-SUBRC 设置为0。否则,如果 不存在索引 为 的行,则 SY-SUBRC 包含 4。 DELETE ITAB INDEX: 2, 3, 4. 4.2 要删除邻近重复条目 DELETE ADJACENT DUPLICATES FROM [COMPARING ]. 系统从内表 中删除所有邻近重复条 目。 DATA IT_PRINT_001 LIKE 你的内表名 OCCURS 0 WITH HEADER LINE. IT_PRINT_001[] = 你的内表名[]. 排序:SORT IT_PRINT_001. 删除掉重复内容:DELETE ADJACENT DUPLICATES FROM IT_PRINT_001 COMPARING ALL FIELDS. 如果是想删除某个字段重复的行,可以用该字段名代替“ALL FIELDS”。 4.3 删除一组选定行 DELETE [FROM ] [TO ] [WHERE< condition>]. 用户必须至 少指定三个 选项之一。如果使用没 有 WHERE 选项的该语句,则系统

记录一次 MongoDB aggregate的性能优化经历

陌路散爱 提交于 2020-03-04 22:00:38
在一台配置为2核4G的阿里云服务器上,硬盘是普通的云盘(即SATA盘),除mongoDB外,运行了若干个java应用,单节点mysql和redis,mongo的实际可用内存在1.5G左右。单表数据200万条的时候,一个聚合函数响应时间约为6秒,页面端每秒请求一次,由于响应不够及时,页面刷新不及时,服务端堆积了大量的mongo aggregate请求,系统可用内存不足,直接导致了溢出,mongo服务被动shutdown。 mongod(ZN5mongo15printStackTraceERSo+0x41) [0x55bd3a2dd321] mongod(ZN5mongo29reportOutOfMemoryErrorAndExitEv+0x84) [0x55bd3a2dc954] mongod(ZN5mongo12mongoReallocEPvm+0x21) [0x55bd3a2d22b1] mongod(ZN5mongo11BufBuilderINS21SharedBufferAllocatorEE15growreallocateEi+0x83) [0x55bd38981833] mongod(ZN5mongo3rpc17OpMsgReplyBuilder22getInPlaceReplyBuilderEm+0x80) [0x55bd39d4b740] mongod(

Elasticsearch

风流意气都作罢 提交于 2020-03-04 20:37:09
0. 带着问题上路——ES是如何产生的? (1)思考:大规模数据如何检索? 如:当系 统数据量 上了10亿、100亿条的时候,我们在做系统架构的时候通常会从以下角度去考虑问题: 1)用什么数据库好?(mysql、sybase、oracle、达梦、神通、mongodb、hbase…) 2)如何解决单点故障;(lvs、F5、A10、Zookeep、MQ) 3)如何保证数据安全性;(热备、冷备、异地多活) 4)如何解决检索难题;(数据库代理中间件:mysql-proxy、Cobar、MaxScale等;) 5)如何解决统计分析问题;(离线、近实时) (2)传统数据库的应对解决方案 对于关系型数据,我们通常采用以下或类似架构去解决查询瓶颈和写入瓶颈: 解决要点: 1)通过主从备份解决数据安全性问题; 2)通过数据库代理中间件心跳监测,解决单点故障问题; 3)通过代理中间件将查询语句分发到各个slave节点进行查询,并汇总结果 (3)非关系型数据库的解决方案 对于Nosql数据库,以mongodb为例,其它原理类似: 解决要点: 1)通过副本备份保证数据安全性; 2)通过节点竞选机制解决单点问题; 3)先从配置库检索分片信息,然后将请求分发到各个节点,最后由路由节点合并汇总结果 另辟蹊径——完全把数据放入内存怎么样? 我们知道,完全把数据放在内存中是不可靠的,实际上也不太现实

ElasticSearch学习日志——了解ElasticSearch

我的梦境 提交于 2020-03-04 15:52:35
文章目录 ElasticSearch是什么? 了解Luence 搜索 数据的分类 顺序扫描 全文搜索 Luence是怎么实现全文搜索 应用场景 ElasticSearch核⼼概念 ElasticSearch高扩展 ElasticSearch高实时 ElasticSearch是什么? 是一个基于 Luence 的 全文搜索引擎 ,基于RESTful web接口 ElasticSearch 是一个 分布式 、 高扩展 、 高实时 的 搜索 与 数据分析 引擎 了解Luence Lucene是一套用于 全文检索 和搜寻的开源程序库。其主要 目的就是解决全文搜索 。 那么全文搜索能有什么问题? 那我们先看看搜索 搜索 搜索:把数据找出来。对数据进行搜索,那就不得不提数据分类。 数据的分类 结构化数据 :具有 固定格式 或者 固定长度 的数据。对于结构化数据我们一般都是存储在关系型数据库table中;那么对于结构化数据搜索,一般是建立索引,通过B-tree等数据结构快速搜索。 非结构化数据 : 指没有 固定格式 或 不定长 的数据。如文章。那么对于非结构化数据我们怎么进行搜索呢?主要有两种方法:顺序扫描法,全文搜索法 顺序扫描 顺序扫描 :从头到尾扫描 一边,标记要搜索的关键词;这样的方法无疑效率是很低的。 全文搜索 全文搜索 :扫描非结构化数据,对每一个词建立一个索引