MySQL
漫步夕阳下
临渊羡鱼,不如退而结网
展开
-
b+树图文详解
转载自:伯乐专栏作者/玻璃猫,微信公众号 - 梦见漫画:什么是b+树这一次我们来介绍 B+ 树。一个m阶的B树具有如下几个特征:1.根结点至少有两个子女。2.每个中间节点都包含k-1个元素和k个孩子,其中 m/2 <= k <= m3.每一个叶子节点都包含k-1个元素,其中 m/2 <= k <= m4.所有的叶子结点都位于同一层。...转载 2019-05-20 09:30:24 · 402 阅读 · 0 评论 -
mysql like 索引问题
下面使用的mysql官方测试库测试当索引是字符型且是主键时:departments表:可以看到,只有d后面有%时,type是range也就是索引范围查询,通过索引字段范围获取表中部分数据记录。当d前面有%时,走的是全索引扫描,和ALL类型类似,只不过ALL类型是全表扫描,而index类型则仅仅扫描所有的所有,而不扫描数据。当索引是字符型表中只有索引字段...原创 2019-04-03 15:06:52 · 8122 阅读 · 1 评论 -
mysql官方测试库Employees Sample Database下载与windows下安装
下载:git地址:https://github.com/datacharmer/test_db由于网不行,git尝试多次下不下来,多亏有好心博主qq邮箱发了一份。git下不下来的可以从百度云下载:链接:https://pan.baidu.com/s/1lESVy8YJhTtvjSHjDbHGYw提取码:hgb5如果链接失效,给我留言邮箱,给你们发邮箱安装:windo...原创 2019-04-03 08:41:22 · 1788 阅读 · 9 评论 -
MySQL order by、group by底层实现及优化(非常详细)
在Innodb引擎下Order by实现:在MySQL中order by有两种排序方式:1.利用有序索引获取有序数据2.文件排序通过explain分析查询时,利用有序索引获取有序数据显示Using index。而文件排序显示Using filesortusing index:所需的数据在index中即可全部获得,无需再到表中取数据,如果是主键索引,数据直接从表中得到。usi...原创 2019-04-02 22:58:35 · 9851 阅读 · 4 评论 -
mysql join底层实现
两个表join底层实现:5.5 版本之前,MySQL本身只支持一种表间关联方式,就是嵌套循环(Nested Loop Join)。如果关联表的数据量很大,则join关联的执行时间会非常长。在5.5以后的版本中,MySQL通过引入BNLJ算法来优化嵌套执行。mysql底层join实现只支持一种算法:嵌套循环连接(Nested-Loop Join),nested-Loop-Join有三种变种:...原创 2019-04-02 21:30:10 · 2411 阅读 · 3 评论 -
MySQL explain详解
转载自:https://segmentfault.com/a/1190000008131735explain各列代表的含义:ID:执行计划中查询的序列号select_type:所使用的查询类型table:显示这一步所访问的数据库的表的名称type:对表所使用的访问方式possible_keys:查询可以利用的索引,如果没有任何索引可以使用,就会显示null,这项内容对于优化...转载 2019-04-02 15:07:53 · 129 阅读 · 1 评论 -
mysql共享锁 排他锁 意向锁
mysql锁机制分为表锁和行锁,其中行锁又包括了共享锁与排他锁。共享锁:又称为读锁(S锁),当有多个事务时,多个事务对于同一数据可以共享一个锁,都能访问到数据,但是其他事务只能读不能写。排他锁又称为写锁(X锁),当有多个事务时,排他锁不能与其他锁并存,一个事务获取了一行数据的排他锁,其他事务就不能再获取该行的其他锁,包括共享锁与排他锁。 但是获取排他锁的事务是可以对数据进行读取和...原创 2019-04-01 13:34:36 · 1519 阅读 · 1 评论 -
mysql架构与存储引擎 (Myisam与Inoodb)
mysql抽象架构:可以分为SQL Layer和Storage Engine Layermysql的engine层是基于表的,不是基于库的,创建表的语句可以指定engineSQL Layer:初始化模块:mysqlserver启动时,初始化模块会加载默认参数,分配buffer多大内存,cache多大等等连接管理模块:mysql当有请求进来时,通过连接管理模块接...原创 2019-03-26 21:48:40 · 521 阅读 · 1 评论 -
BTree与B+Tree详解
首先B-tree树即B树,B即Balanced,平衡的意思。因为B树的原英文名称为B-tree,而国内很多人喜欢把B-tree译作B-树,其实,这是个非常不好的直译,很容易让人产生误解。如人们可能会以为B-树是一种树,而B树又是另一种树。而事实上是,B-tree就是指的B树B+树索引时B+树在数据库中的一种实现,是最常见也是数据库中使用最频繁的一种索引。B+树中的B代表平衡(balance)...原创 2019-05-20 09:17:48 · 1304 阅读 · 0 评论