MySQL中普通索引和唯一索引的区别详解

本篇文章介绍了mysql普通索引唯一索引区别,讲解很详细,希望对学习mysql的朋友有帮助!

MySQL中普通索引和唯一索引的区别详解

MySQL中普通索引和唯一索引的区别详解

一、查询和更新上的区别

这两类索引在查询能力上是没差别的,主要考虑的是对更新性能的影响。建议尽量选择普通索引。

(免费学习视频教程推荐:mysql视频教程)

1.1 MySQL 的查询操作

■ 普通索引

查找到第一个满足条件的记录后,继续向后遍历,直到第一个不满足条件的记录。

■ 唯一索引

由于索引定义了唯一性,查找到第一个满足条件的记录后,直接停止继续检索。

普通索引会多检索一次,几乎没有影响。因为 InnoDB 的数据是按照数据页为单位进行读写的,需要读取数据时,并不是直接从磁盘读取记录,而是先把数据页读到内存,再去数据页中检索。

一个数据页默认 16 KB,对于整型字段,一个数据页可以放近千个 key,除非要读取的数据在数据页的最后一条记录,就需要再读一个数据页,这种情况很少,对CPU的消耗基本可以忽略了。

因此说,在查询数据方面,普通索引和唯一索引没差别。

1.2 MySQL 的更新操作

更新操作并不是直接对磁盘中的数据进行更新,是先把数据页从磁盘读入内存,再更新数据页。

■ 普通索引

将数据页从磁盘读入内存,更新数据页。

■ 唯一索引

将数据页从磁盘读入内存,判断是否唯一,再更新数据页。

由于 MySQL 中有个 change buffer 的机制,会导致普通索引和唯一索引在更新上有一定的区别。

change buffer的作用是为了降低IO 操作,避免系统负载过高。change buffer将数据写入数据页的过程,叫做merge。

如果需要更新的数据页在内存中时,会直接更新数据页;如果数据不在内存中,会先将更新操作记入change buffer,当下一次读取数据页时,顺带merge到数据页中,change buffer也有定期merge策略。数据库正常关闭的过程中,也会触发merge。

对于唯一索引,更新前需要判断数据是否唯一(不能和表中数据重复),如果数据页在内存中,就可以直接判断并且更新,如果不在内存中,就需要去磁盘中读出来,判断一下是否唯一,是的话就更新。change buffer是用不到的。即使数据页不在内存中,还是要读出来。

change buffer 用的是 buffer pool 里的内存,因此不能无限增大。change buffer 的大小,可以通过参数 innodb_change_buffer_max_size 来动态设置。这个参数设置为 50 的时候,表示 change buffer 的大小最多只能占用 buffer pool 的 50%。

结论:唯一索引用不了change buffer,只有普通索引可以用。

二、change buffer 和 redo log的区别

2.1 change buffer 的适用场景

change buffer 的作用是降低更新操作的频率,缓存更新操作。这样会有一个缺点,就是更新不及时,对于读操作比较频繁的表,不建议使用 change buffer。

纳米搜索 纳米搜索

纳米搜索:360推出的新一代AI搜索引擎

纳米搜索 30 查看详情 纳米搜索

因为更新操作刚记录进change buffer中,就读取了该表,数据页被读到了内存中,数据马上就merge到数据页中了。这样不仅不会降低性能消耗,反而会增加维护change buffer的成本。

适用于写多读少的表。

2.2 change buffer 和 redo log 区别

我们举一个例子用来理解 redo log 和 change buffer。我们执行以下 SQL 语句:

mysql> insert into t(id,k) values(id1,k1),(id2,k2);

假设,(id1,k1) 在数据页 Page 1 中,(id2,k2) 在数据页 Page 2 中。并且 Page 1 在内存中,Page 2 不在内存中。

执行过程如下:

直接向 Page 1 中写入 (id1,k1);

在change buffer 中记下”向 Page 2 中写入(id2,k2)”这条信息;

将以上两个动作记入redo log。

做完上面这些,事务就可以完成了。执行这条更新语句的成本很低,就是写了两处内存,然后写了一处磁盘(两次操作合在一起写了一次磁盘),而且还是顺序写的。

这条更新语句,涉及了四个部分:内存、redo log(ib_log_fileX)、 数据表空间(t.ibd)、系统表空间(ibdata1)。

1.png

如果要读数据的话,过程是怎样的?

mysql> select * from t where k in (k1, k2);

假设读操作在更新后不久,此时内存中还有 Page 1,没有 Page 2,那么读操作就和 redo log 以及 ibdata1 无关了。

从内存中获取到 Page 1 上的最新数据 (id1,k1);

将数据页 Page 2 读入内存,执行merge 操作,此时内存中的 Page 2 也有最新数据(id2,k2);

2.png

需要注意的是:

redo log中的数据,可能还没有 flush 到磁盘,磁盘中的 Page 1 和 Page 2 中并没有最新数据,但我们依然可以拿到最新数据(内存中的 Page 1 就是最新的,Page 2 虽然不是最新的,但是从磁盘读到内存中后,执行了merge操作,内存中的 Page 2 就是最新的了。)

如果此时 MySQL 异常宕机了,比如服务器异常掉电,change buffer 中的数据会不会丢?

change buffer 中的数据分为两部分,一部分是已经merge到ibdata1中的数据,这部分数据已经持久化,不会丢失。另一部分数据,还在 change buffer 中,没有merge 到ibdata1,分 3 种情况:

(1)change buffer 写入数据到内存,redo log 也已经写入(ib-log-filex),但是未 commit,binlog中也没有fsync到磁盘,这部分数据会丢失;

(2)change buffer 写入数据到内存,redo log 也已经写入(ib-log-filex),但是未 commit,binlog 已写入到磁盘,这部分不会多丢失,异常重启后会先从 binlog 恢复 redo log,再从 redo log 恢复 change buffer;

(3)change buffer 写入数据到内存,redo log 和 binlog 都已经fsync,直接从redo log 恢复,不会丢失。

redo log 主要节省的是随机写磁盘的 IO 消耗(转成顺序写),而 change buffer 主要节省的则是随机读磁盘的 IO 消耗

更多MySQL相关教程,请关注PHP中文网!

以上就是MySQL中普通索引和唯一索引的区别详解的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/365367.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月6日 04:59:27
下一篇 2025年11月6日 05:00:12

相关推荐

  • 瑞波币的RLUSD稳定币:这是金融的未来吗?

    ripple 的 rlusd 稳定币引发热议,携手 amina 银行挑战 swift。这是否是一款值得关注的稳定币? Ripple 的 RLUSD 稳定币:金融新纪元的开端? Ripple 推出的 RLUSD 稳定币正迅速吸引市场目光,它试图在全球金融系统中占据一席之地。通过建立战略性合作关系并强调…

    2025年12月8日
    000
  • AVAX、RUVI 和人工智能预测:发现下一个大型加密货币机会

    错过了雪崩(avax)的早期爆发?ruvi ai(ruvi)将区块链与人工智能深度融合,为投资者开辟了实现指数级增长的新路径,业内分析人士预测其潜在回报率或达66倍。 AVAX、RUVI与AI浪潮:探寻下一个重磅加密货币机会 加密市场如同惊险过山车,波动剧烈,寻找下一个“黑马”项目犹如大海捞针。随着…

    2025年12月8日
    000
  • 白银与比特币:现代金融工具的对决

    探索白银与比特币作为金融工具之间不断演变的动态关系。了解投资策略和市场趋势的见解。白银与比特币:它们是竞争还是互补? 白银 vs. 比特币:现代时代的金融工具对决 在持续变化的金融资产环境中,传统贵金属与加密货币之间的讨论始终吸引着投资者的目光。当比特币开辟新天地的同时,白银这一常被忽视的金属正展现…

    2025年12月8日
    000
  • Aldi购物车热门技巧:25分硬币妙招还是基本礼仪?

    解锁阿尔迪25美分购物车系统的秘密:这个爆红单技巧让你无需投币! 你打算在阿尔迪超市来一场大采购,却突然发现自己没带25美分硬币来解锁购物车?这种情况相信很多人都遇到过!最近网络上流传着一个“阿尔迪购物车25美分硬币”的妙招,据说可以轻松绕过这个限制。但这个方法真的有效吗?还是说它其实体现了一种良好…

    2025年12月8日
    000
  • 超级佩佩预售第三阶段:不只是另一个模因币,你知道的?

    超级佩佩第三阶段预售正式启动,这证明它已经超越了网络热梗的范畴。了解投资者为何对它充满期待,以及它在竞争激烈的加密市场中脱颖而出的原因。 嘿,加密世界的小伙伴们!“超级佩佩”、“预售”、“第三阶段”——这些关键词正在圈内广泛传播。但这波热潮是短暂的炒作,还是蕴含真实价值?我们一起来揭开这股风潮背后的…

    2025年12月8日
    000
  • LayerZero与Wormhole争霸跨链通信赛道,谁将成为Web3桥梁之王?

    本文将深入探讨两大主流跨链通信协议——LayerZero与Wormhole。通过剖析它们的技术架构、安全模型和生态系统,我们将对比分析两者的核心差异,并探讨在激烈的Web3跨链赛道竞争中,谁更有可能成为未来的领导者,从而解答标题中关于“谁将成为Web3桥梁之王”的问题。 2025主流加密货币交易所官…

    2025年12月8日
    000
  • 币安生态稳居龙头,中心化平台还能支撑Web3发展吗?

    本文将分析以币安为代表的中心化平台在当前Web3浪潮中的定位,并详细阐述它们如何通过自身优势,从资金、技术、用户教育等多个维度,为去中心化的Web3世界提供关键支撑,从而解答标题中的疑问。 2025主流加密货币交易所官网注册地址推荐: 欧易OKX: Binance币安: Gateio芝麻开门: 火币…

    2025年12月8日
    000
  • Jeep Wagoneer Super:没有豪华价格标签的豪华车?

    jeep wagoneer super 欲以奢华气质吸引目光,但其售价是否真比豪华品牌更具吸引力?我们来一探这款备受瞩目的新车。 Jeep 推出全新 Wagoneer Super 版本,标榜“精致而奢华”,却又宣称避免了“豪华品牌的高昂价格”。那么,它真的兑现了这一承诺吗?让我们用纽约式的直率来看个…

    2025年12月8日
    000
  • 到2040年HBAR价格能否达到100美元?Hedera社区热议

    hedera(hbar)能在2040年达到100美元吗?探讨其上涨逻辑、社群情绪与长期增长前景 HBAR价格将在2040年突破百元?Hedera社群热议不断 HBAR是否真有可能在2040年攀升至100美元?CryptoXAiMan提出的这一激进预测点燃了加密社区的讨论热情。本文将深入分析围绕Hed…

    2025年12月8日
    000
  • Neo Pepe Coin:2025年主导加密模因币市场

    neo pepe coin($neop)正在以全新的理念和社区主导的治理模式在模因币市场中崭露头角,成为2025年最具话题性的加密资产之一。 整个加密圈都在热议Neo Pepe Coin($NEOP),它正站在行业风口浪尖。这不仅是一种模因币,更是一场象征自由与去中心化的潮流运动。接下来,我们将一起…

    2025年12月8日
    000
  • 揭开以太坊区块链的神秘面纱|智能合约是如何运作的?

    以太坊区块链不仅仅是记录交易的账本,它的核心在于其强大的智能合约功能。本文将带您了解以太坊区块链的神秘之处,重点阐述智能合约是如何运作的,解答标题中的疑问,帮助您理解这一创新技术的工作原理。 以太坊官网:ethereum.org 什么是智能合约? 智能合约可以理解为存储在区块链上的一段代码,它定义了…

    2025年12月8日
    000
  • Coinbase Ventures支持、Binance上线,Omni能否走向下一阶段?

    本文将围绕Omni项目展开探讨,分析在获得Coinbase Ventures的支持以及成功上线Binance之后,它是否具备了迈向下一发展阶段的动力。 2025主流加密货币交易所官网注册地址推荐: 欧易OKX: Binance币安: Gateio芝麻开门: 火币htx:[ Omni的技术基石 Omn…

    2025年12月8日
    000
  • 去中心化交易所和中心化交易所有啥区别

    中心化交易所和去中心化交易所在资产托管方式、安全性、交易速度、流动性及用户体验等方面存在显著差异。 在数字资产交易领域,存在着两种主要的平台类型:中心化交易所和去中心化交易所。它们在运作模式、安全性、用户控制权以及用户体验等方面存在显著差异。理解这些不同点对于选择适合自身需求的交易平台至关重要。 2…

    2025年12月8日
    000
  • 去中心化稳定币有哪些 去中心化有什么用

    去中心化金融(defi)的兴起带来了新的金融工具和理念,其中去中心化稳定币是重要组成部分,它们旨在提供价值相对稳定的数字资产,同时避免依赖单一中心化实体。这种对中心化控制的规避体现了去中心化技术的核心价值:减少对第三方的信任需求,增强用户主权和系统的抗风险能力。在加密资产交易领域,这种中心化与去中心…

    2025年12月8日
    000
  • NALA币属于山寨币吗_NALA币是山寨币吗

    【权威推荐】2025主流%ignore_a_1%平台合集 Binance币安 官网直达: 安卓安装包下载: 欧易OKX ️ 官网直达: 安卓安装包下载: Huobi火币️ 官网直达: 安卓安装包下载: NALA币属于山寨币吗?NALA币是山寨币吗? NALA币近年来在市场中逐渐获得关注,很多投资者会…

    2025年12月8日
    000
  • 比特币、以太坊和其他加密资产的区别

    选择安全可靠的加密货币交易平台需综合考量多个维度,本文推荐币安、欧易、Gate.io、火币和KuCoin五大交易所。1. 币安交易量最大,产品丰富,适合各类投资者;2. 欧易以合约交易和多元金融产品著称,移动端体验佳;3. Gate.io上币种类多,适合挖掘潜力项目。 选择一个安全可靠的加密货币交易…

    2025年12月8日
    000
  • 一文说清楚比特币、以太坊和Solana的区别

    比特币、以太坊和Solana在技术架构、核心目标和生态系统上存在显著差异。1. 比特币采用PoW机制,专注于价值存储,交易速度慢但安全性高;2. 以太坊通过智能合约支持dApps,使用PoS机制,生态成熟但Gas费较高;3. Solana结合PoH与PoS,追求高性能与低费用,适用于高频交易但去中心…

    2025年12月8日
    000
  • 稳定币是什么 和比特币有什么区别

    稳定币与比特币的根本区别在于价值稳定性与用途不同。1. 稳定币与法币挂钩,价值稳定,主要用于交易和保值;2. 比特币具有高波动性和稀缺性,适合作为投资品和价值储存手段;3. 稳定币由中心化机构发行,而比特币通过去中心化产生。 本文将清晰阐述稳定币与比特币之间的根本区别,帮助您理解这两种主流加密资产的…

    2025年12月8日
    000
  • 实用代币与安全代币是什么?有什么区别?

    目录 什么是实用代币?实用代币示例加密货币中的安全令牌是什么?安全令牌示例实用型代币与安全型代币:主要区别目的:获取途径与投资监管:宽松监管 vs. 严格合规法律框架:豪威测试的实际应用流动性:交易便利性与限制法规如何定义实用型代币与证券型代币如何识别代币的类型?探索加密世界中的代币 实用型代币、安…

    2025年12月8日
    000
  • 佩佩预售热潮:第五阶段及迷因币世界的狂野未来

    小佩佩(little pepe)第五阶段预售正在火热进行中,技术革新与社区热度正共同推动其发展。这枚迷因币是否会成为下一个爆点? 加密圈的玩家们注意了!小佩佩($LILPEPE)正在迅速升温。随着第五轮预售正式开启,我们一起来看看究竟是什么在推动它的热潮。 小佩佩:不只是普通的迷因币 让小佩佩脱颖而…

    2025年12月8日
    000

发表回复

登录后才能评论
关注微信