Mysql
文章平均质量分 92
Mysql
松myth
这个作者很懒,什么都没留下…
展开
-
数据库索引,到底是什么做的?-- 转自沈剑公众号
问题1. 数据库为什么要设计索引?图书馆存了1000W本图书,要从中找到《架构师之路》,一本本查,要查到什么时候去?于是,图书管理员设计了一套规则:(1)一楼放历史类,二楼放文学类,三楼放IT类…(2)IT类,又分软件类,硬件类…(3)软件类,又按照书名音序排序…以便快速找到一本书。与之类比,数据库存储了1000W条数据,要从中找到name=”shenjian”的记录,一条条查,要查到什么时候去?于是,要有索引,用于提升数据库的查找速度。问题2. 哈希(has转载 2021-08-17 20:04:27 · 216 阅读 · 0 评论 -
MySql 缓冲池(buffer pool) 和 写缓存(change buffer)
应用系统分层架构,为了加速数据访问,会把最常访问的数据,放在缓存(cache)里,避免每次都去访问数据库。 操作系统,会有缓冲池(buffer pool)机制,避免每次访问磁盘,以加速数据的访问。 MySQL作为一个存储系统,同样具有缓冲池(buffer pool)机制,以避免每次查询数据都进行磁盘IO。 今天,和大家聊一聊InnoDB的缓冲池。InnoDB的缓冲池缓存什么?有什么用? 缓存表数据与索引数据,把磁盘上的数据加载到缓冲池,避免每次访问都进行磁盘IO,起到加速访..转载 2021-08-17 19:51:39 · 1253 阅读 · 0 评论 -
数据库事务的四大特性、隔离级别、传播行为、锁机制
数据库事务概念数据库事务( transaction)是访问并可能操作各种数据项的一个数据库操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位作用一个数据库事务通常包含了一个序列的对数据库的读/写操作。它的存在包含有以下两个目的:为数据库操作序列提供了一个从失败中恢复到正常状态的方法,同时提供了数据库即使在异常状态下仍能保持一致性的方法。 当多个应用程序在并发访问数据库时,可以在这些应用程序之间提供一个隔离方法,以防止彼此的操作互相干扰。当事务被提交给了DBMS.转载 2021-08-17 16:05:55 · 524 阅读 · 0 评论 -
事务的4种隔离级别
当多个线程都开启事务操作数据库中的数据时,数据库系统要能进行隔离操作,以保证各个线程获取数据的准确性,所以,对于不同的事务,采用不同的隔离级别会有不同的结果。如果不考虑事务的隔离性,那么会发生下表所示的3种问题:不可重复读是由于事务并发修改同一条记录导致的,要避免这种情况,最简单的方法就是对要修改的记录加锁,这会导致锁竞争加剧,影响性能。另一种方法是通过MVCC可以在无锁的情况下,避免不可重复读。幻读是由于并发事务增加记录导致的,这个不能像不可重复读通...转载 2021-08-17 16:02:26 · 8872 阅读 · 1 评论 -
MySQL的锁机制 - 记录锁、间隙锁、临键锁
记录锁(Record Locks)记录锁是封锁记录,记录锁也叫行锁,例如:SELECT * FROM `test` WHERE `id`=1 FOR UPDATE;它会在 id=1 的记录上加上记录锁,以阻止其他事务插入,更新,删除 id=1 这一行。记录锁、间隙锁、临键锁都是排它锁,而记录锁的使用方法跟之前的一篇文章共享/排它锁里的排它锁介绍一致,这里就不详细多讲。间隙锁(Gap Locks)(重点)间隙锁是封锁索引记录中的间隔,或者第一条索引记录之前的范围,又或者...转载 2021-08-17 15:45:55 · 3456 阅读 · 1 评论 -
MySQL索引背后的数据结构及算法原理
摘要本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为这是平常使用MySQL时主要打交道的索引,至于哈希索引和全文索引本文暂不讨论。文章主要内容分为三个部分。第一部分主要从数据结构及算法理论层面讨论MySQL数据库索引的数理基础。第二部分结合MySQL数据库中MyIS转载 2021-08-13 17:47:59 · 91 阅读 · 0 评论 -
MySQL索引B+树数据结构原理(绝对好文)
索引!可谓是重中之重。面试可谓是必问内容,当然了,平时开发对于SQL的优化也是很重要的而当实践SQL优化不能盲目的操作,理论是支撑实践的基础索引的意义索引的本质就是一种排好序的数据结构。这个肯定都明白,自然而言就联想到字典中的目录在详细讲解下面的索引数据前补充一句:通过不断缩小想要获取数据的范围来筛选出最终想要的结果,同时把随机的事件变成顺序事件,也就是说,有了这种索引机制,总是用同一种方式来锁定数据索引分类1.普通索引 index:加速查找2.唯一索引 主键索引:转载 2021-08-13 17:37:07 · 2968 阅读 · 0 评论 -
MySQL中innoDB和myisam对比及索引原理区别
InnoDB和MyISAM是很多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,5.7之后就不一样了1、事务和外键InnoDB具有事务,支持4个事务隔离级别,回滚,崩溃修复能力和多版本并发的事务安全,包括ACID。如果应用中需要执行大量的INSERT或UPDATE操作,则应该使用InnoDB,这样可以提高多用户并发操作的性能MyISAM管理非事务表。它提供高速存储和检索,以及全文搜索能力。如果应用中需要执行大量的SELECT查询,那么MyISAM是更好的选择2、全文索引Inn转载 2021-08-13 16:08:20 · 387 阅读 · 0 评论 -
浅谈MySQL存储引擎-InnoDB&MyISAM
存储引擎在MySQL的逻辑架构中位于第三层,负责MySQL中的数据的存储和提取。MySQL存储引擎有很多,不同的存储引擎保存数据和索引的方式是不同的。每一种存储引擎都有它的优势和劣势,本文只讨论最常见的InnoDB和MyISAM两种存储引擎进行讨论。本文中关于数据存储形式和索引的可以查看图解MySQL索引MySQL逻辑架构图:InnoDB存储引擎#InnoDB是默认的事务型存储引擎,也是最重要,使用最广泛的存储引擎。在没有特殊情况下,一般优先使用InnoDB存储引擎。1️⃣、数据存储形式转载 2021-08-13 15:50:56 · 141 阅读 · 0 评论 -
Mysql索引会失效的几种情况分析
使用explain select * from table 语句查看是否使用索引查看索引使用情况show status like 'Handler_read%';handler_read_key:这个值越高越好,越高表示使用索引查询到的次数handler_read_rnd_next:这个值越高,说明查询低效索引并不是时时都会生效的,比如以下几种情况,将导致索引失效:1.如果条件中有or,即使其中有条件带索引也不会使用(这也是为什么尽量少用or...转载 2020-06-29 11:24:16 · 199 阅读 · 0 评论