首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MySQL索引(深入浅出

B+树,正是MySQL的InnoDB引擎选用的数据结构,其实B+树和跳表很相似。 InnoDB为什么会选择B+树索引呢? 每个节点可以存放多条数据,这样可以有效的控制树的高度。...InnoDB的索引 MySQL的索引是在引擎层实现的,我们只介绍下InnoDB引擎下的索引。 根据主键创建的索引,我们称为主键索引或者聚簇索引;非主键创建的索引我们称为非主键索引或者二级索引。...你可能会说有些表没有主键,这个你不用担心,即使你不定义主键MySQl也会自动给每一行数据生成一个唯一ID。 每创建一个索引就对应一颗B+树。下面分别是主键索引和二级索引的示意图。...这也是MySQL的server层在选择是否使用某个索引时的一个评估点。 3....参考资料: 《高性能MySQL》 《MySQL是怎样运行的》 MySQL官网(https://dev.mysql.com/doc/refman/5.7/en/)

38820
您找到你想要的搜索结果了吗?
是的
没有找到

深入浅出MySQL crash safe

一、前言 MySQL 主从架构已经被广泛应用,保障主从复制关系的稳定性是大家一直关注的焦点。MySQL 5.6 针对主从复制稳定性提供了新特性: slave 支持 crash-safe。...就是把 SQL thread 执行事务和更新 mysql.slave_replay_log_info 的语句合并为同一个事务,由 MySQL 系统来保障事务的原子性。...绿色的代表实际业务的事务,蓝色的是开启 MySQL 执行的更新 slave_replay_log_info 相关位点信息的 sql ,然后将这两个 sql 合并在一个事务中执行,利用 MySQL 事务机制和...所以还得修改成 innodb,如下: ALTER TABLE mysql.slave_master_info ENGINE=InnoDB; ALTER TABLE mysql.slave_relay_log_info...参考文章 https://hackmongo.com/post/crash-safe-mysql-replication-a-visual-guide/ http://dev.mysql.com/doc

66220

深入浅出MySQL复制--MySQL的核心科技

前言 MySQL复制是MySQL成功的最重要原因之一,前东家某公司内网上有相关资料,低下评论戏称"核心科技",今天将核心科技分享给大家 一 MySQL复制简介 复制:从一个MySQL数据库实例(称为源端...)复制到一个或多个MySQL数据库实例(称为副本,或者目标端) 复制方式:异步复制、半同步复制、组复制 范围:所有数据库、选定的数据库、选定的表 过程: 1、在主库上把数据更改事件记录到二进制日志中 2...复制示意图 解决方案:扩展读负载、提供高可用性、地理冗余(同城双活、异地备份)、备份、提供分析业务 图2 MySQL复制提供解决方案 二...5.7版本 基于Group Commit的并行复制、LOGICAL_CLOCK并行复制-->8.0 版本基于WriteSet的并行复制 五 参考文章来源 1、GreatSQL社区--《组复制技术架构 | 深入浅出...areaSource=&traceId= 3、阿里内核月报--《MySQL · 特性分析 · 8.0 WriteSet 并行复》http://mysql.taobao.org/monthly/2018/

41940

深入浅出 MySQL 索引(一)

本文目录如下: 一、前言 最近在梳理 MySQL 核心知识,刚好梳理到了 MySQL 索引相关的知识,我的文章风格很多都是原理 + 实战的方式带你去了解知识点,所以本篇也是。...MySQL 中的索引,就相当于图书馆的检索目录,它是帮助 MySQL 系统快速检索数据的一种存储结构。...B+树动图演示 四、MySQL 索引的优缺点 优点 优点1:降低数据库的 I/O 成本 这里其实就是减少数据库读写数据的花费的时间。...总结 本篇讲解了 MySQL 的索引是什么,优缺点,MySQL 索引分类,以及如何通过脚本创建 MySQL 索引,最后通过演示不同类型的索引如何加速查询。...下一篇 MySQL 文章我们接着聊 MySQL 索引。 - END -

59720

深入浅出MySQL crash-safe

一 前言 MySQL主从架构已经被广泛应用,保障主从复制关系的稳定性是大家一直关注的焦点。MySQL 5.6针对主从复制稳定性提供了新特性:slave支持crash-safe。...就是把SQL thread执行事务和更新 mysql.slave_replay_log_info 的语句合并为同一个事务,由MySQL系统来保障事务的原子性。...绿色的代表实际业务的事务,蓝色的是开启MySQL执行的更新slave_replay_log_info 相关位点信息的sql ,然后将这两个sql合并在一个事务中执行,利用MySQL事务机制和InnoDB...所以还得修改成innodb,如下: ALTER TABLE mysql.slave_master_info ENGINE=InnoDB; ALTER TABLE mysql.slave_relay_log_info...dev.mysql.com/doc/refman/5.7/en/replication-solutions-unexpected-slave-halt.html [3] http://dev.mysql.com

90730

深入浅出后端开发(MySQL篇)

LAMP环境搭建 [MySQL学习笔记(基础篇)]稍后更新 [MySQL学习笔记(基础篇)]稍后更新 [PHP&MySQL学习笔记(实际应用篇)] 稍后更新 本文阅读建议 1.一定要辩证的看待本文...First PHP&MySQL PHP和MySQL Web开发 PHP+MySQL 开发实战(可以当工具书) 进阶向 高性能MySQL(第3版) MySQL排错指南 深入理解MySQL核心技术...MySQL技术内幕(第4版) MySQL技术内幕 InnoDB存储引擎 第2版 MySQL运维内参:MySQL、Galera、Inception核心原理与最佳实践 数据库索引设计与优化 快速浏览...MySQL5.7从入门到精通 网站:MySQL官方网站 网站:MySQL手册 ---- MySQL介绍及其概念 MySQL介绍 高性能 低成本 易于配置和学习 可移植性 源代码可用 支持可用...在学习MySQL时,推荐大家最好买一本工具书,在自己熟练运用MySQL之前,可以多次翻阅查询工具书,进行练习. ---- 理解MySQL数据存储 根据实践MySQL的SQL语句进行数据库的增删改查操作,

1.5K180

MySQL实战之深入浅出索引(下)

1.前言 在上一篇文章中,我们介绍了InnoDB索引的数据结构模型,今天我们再继续聊一下跟MySQL索引有关的概念。...在介绍之前,我们先看一个问题: 表初始化语句 mysql> create table T ( ID int primary key, k int NOT NULL DEFAULT 0, s varchar...需要注意的是,在引擎内部使用覆盖索引在索引k上其实读取了三个记录,但是对于MySQL的server层来说,它就是找引擎拿到了两条记录,因此MySQL认为扫描行数是2....反过来说,单独为一个不频繁的请求创建一个(身份证号,地址)的索引又感觉有点浪费,mysql应该怎么做呢? 我们先说结论,B+树这种索引结构,可以利用索引的最左前缀,来定位记录。...在MySQL5.6之前,只能从ID3开始一个个回表。到主键索引上找出数据行,在对比字段值。

33300

深入浅出解析——MYSQL|触发器

触发器具有MySQL语句在需要时才被执行的特点,即某条(或某些)MySQL语句在特定事件发生时自动执行,本文主要介绍一下MYSQL中六种触发器的案例。...触发器具有MySQL语句在需要时才被执行的特点,即某条(或某些)MySQL语句在特定事件发生时自动执行。例如: ●每当增加一个客户到数据库的客户基本信息表时,都检查其电话号码的格式是否正确。...具体而言,触发器就是MySQL响应INSERT、UPDATE和DELETE语句而自动执行的一条MySQL语句(或位于BEGIN和END语句之间的一组MySQL语句)。...需要注意的是,其他MySQL语句是不支持触发器的。...效果展示 效果6.png 5.触发器的删除 在MYSQL中,删除触发器的一般语句是: DROP TRIGGER [IF EXISTS] trigger_name 其中:各参数介绍如下 [IF EXISTS

57720

深入浅出MySQL MRR(Multi-Range Read)

其中之一就是MySQL的多范围读取(Multi-Range Read, MRR)。 这种技术为我们提供了在处理大量数据时提高查询效率的强大手段。...回表是MySQL在执行查询时的一个步骤,它通常发生在使用索引进行搜索之后。...当MySQL在索引中找到了需要的数据,但这些数据并不完全满足查询需求时(比如,索引没有包含所有需要的列),MySQL就需要回到主表中去获取完整的行数据,这个过程就被称为"回表"。...在没有MRR的情况下,MySQL会按照索引顺序来访问行数据,而索引顺序并不一定与磁盘上的物理存储顺序一致,这就可能产生大量的随机磁盘I/O。...当启用MRR后,MySQL会先按照索引扫描记录,但并不立即去获取行数据,而是将每个需要访问的行位置(例如主键)保存到一个缓冲区中。

18310

深入浅出MySQL MRR(Multi-Range Read)

其中之一就是MySQL的多范围读取(Multi-Range Read, MRR)。 这种技术为我们提供了在处理大量数据时提高查询效率的强大手段。...回表是MySQL在执行查询时的一个步骤,它通常发生在使用索引进行搜索之后。...当MySQL在索引中找到了需要的数据,但这些数据并不完全满足查询需求时(比如,索引没有包含所有需要的列),MySQL就需要回到主表中去获取完整的行数据,这个过程就被称为"回表"。...在没有MRR的情况下,MySQL会按照索引顺序来访问行数据,而索引顺序并不一定与磁盘上的物理存储顺序一致,这就可能产生大量的随机磁盘I/O。...当启用MRR后,MySQL会先按照索引扫描记录,但并不立即去获取行数据,而是将每个需要访问的行位置(例如主键)保存到一个缓冲区中。

17110

深入浅出MySQL - MyISAM有趣的那些“锁”事儿

小伙伴想精准查找自己想看的MySQL文章?喏 → MySQL江湖路 | 专栏目录   MyISAM是MySQL5.5版之前默认数据库引擎,也算是老一辈存储引擎代表,由早期的ISAM所改良。...- 通过系统变量配置 - 在SQL语句中配置 2、并发插入 总结 一、MySQL表级锁的几种模式   MySQL的表级锁有两种模式:表共享读锁(Table Read Lock)和表排他写锁(Table...MySQL“锁”事系列文章汇总与《MySQL江湖路 | 专栏目录》,后事如何,敬请期待!...原创 | 面试让HR都能听懂的MySQL锁机制,欢声笑语中搞懂MySQL锁 原创 | 正了吧经深入聊聊MyISAM存储引擎的那些“锁”事儿 原创 | 正了吧经深入聊聊Innodb存储引擎的那些“锁”...事儿 原创 | MySQL的死锁到底有多坑人?!

55320

大白话mysql深入浅出索引原理 - 下

索引覆盖 在之前大白话mysql深入浅出索引原理 - 上这篇文章中提到过,mysql 的 innodb 引擎通过搜索树方式实现索引,索引类型分为主键索引和二级索引(非主键索引),主键索引树中,叶子结点保存着主键即对应行的全部数据...mysql 中使用 ADD KEY (column_name (prefix_length)) 为字段创建前缀索引。 合适的前缀索引长度 前缀索引设计的好坏在于选择合适的前缀索引长度。...明显的,第二种方式需要回表查询的全行数据比较少,这就是 mysql 的索引下推,在索引遍历过程中,对索引中包含的字段先做判断,直接过滤掉不满足条件的记录,减少回表次数。...索引下推特性是 mysql5.6 引入的,默认启用,我们也可以通过修改系统变量 optimizer_switch 的 index_condition_pushdown 标志来控制 SET optimizer_switch

32420
领券