MySql
文章平均质量分 93
空指针异常1
这个作者很懒,什么都没留下…
展开
-
【MySql进阶】索引详解(三):索引的使用和创建原则、索引失效、索引优化
从MySQL 8.x开始支持 隐藏索引(invisible indexes) ,只需要将待删除的索引设置为隐藏索引,使查询优化器不再使用这个索引(即使使用force index(强制使用索引),优化器也不会使用该索引),确认将索引设置为隐藏索引后系统不受任何影响,就可以彻底删除索引。上面这个语句对于这个联合索引来说,查找顺序是,先找到code = 1的一串记录,此时因为对于code相等的值,再根据num排序,所以这串记录直接就是根据num排序好的,可以只回表一次,因此这个语句就是走索引的。原创 2022-08-23 14:36:44 · 466 阅读 · 0 评论 -
【MySql进阶】索引详解(二):Mysql InnoDB索引原理、B+树、聚簇索引、二级索引、联合索引
比如,表中的数据经常被增删改,则不适合添加索引,索引能够加快查询效率,却降低了增删改的效率。1、数据量庞大2、该字段很少进行DML操作3、该字段经常出现在查询的where字句中B树:B+树:innoDB构造索引储存数据的单位是页,叶子节点储存的是真实数据,为数据页,非叶子节点储存的是真实数据的索引,为目录页。innoDB的一个数据页至少可以存放两条数据默认情况下,一个数据页大小为16KB假设每个叶子节点能够储存100条关键字,非叶子节点可以储存1000条关键字,那么:4层就能够储存相当多的数据了,所以一般情原创 2022-08-05 14:21:21 · 532 阅读 · 0 评论 -
【MySql进阶】索引详解(一):索引数据页结构
InnoDB 为了不同的目的而设计了许多种不同类型的 页 ,比如存放表空间头部信息的页,存放 Insert Buffer信息的页,存放 INODE 信息的页,存放 undo 日志信息的页等。而用来存放用户保存数据的页就是 innoDB的基本储存结构:索引页。(即数据页)。它是 InnoDB 管理存储空间的基本单位,刷盘(从内存到硬盘)、读取操作,都是每次一页。页面最大为16KBinnoDB的索引数据结构为B+树,而树的每个节点则为“页”,B+树同一层级的页为双向链表连接。一张数据页会包含以上的部分,其中,(原创 2022-07-05 16:31:01 · 719 阅读 · 0 评论 -
【MySql进阶】行格式详解:COMPACT、Dynamic
概述我们平时是以记录为单位来向表中插入数据的,这些记录在磁盘上的存放方式也被称为 行格式 或者 记录格式 。 InnoDB 到现在为止设计了4种不同类型的 行格式 ,分别是 Compact 、 Redundant 、Dynamic 和 Compressed 行格式。mysql5.0之后的默认行格式为Compact , 5.7之后的默认行格式为dynamicCOMPACT行格式变长字段长度列表我们知道 MySQL 支持一些变长的数据类型,比如 VARCHAR(M) 、 VARBINARY(M) 、原创 2022-06-10 09:27:25 · 9353 阅读 · 4 评论 -
【MySql进阶】锁详解:共享锁、排他锁、行级锁、表级锁、间隙锁
锁概述共享锁、排他锁、行级锁、表级锁、间隙锁,这些名字并不一定单独指某一个锁,而是某个锁可能拥有的特性。Mysql并发事务访问读-读读取允许并发操作写-写即两个事务同时操作一条数据在这种情况下会发生 脏写 的问题,任何一种隔离级别都不允许这种问题的发生。所以在多个未提交事务相继对一条记录做改动时,需要让它们 排队执行 ,这个排队的过程其实是通过 锁 来实现的。这个所谓的锁其实是一个 内存中的结构 ,在事务执行前本来是没有锁的,也就是说一开始是没有 锁结构 和记录进行关联的。当一个事务想对这原创 2022-05-24 17:10:45 · 2137 阅读 · 0 评论 -
【MySql进阶】MVCC详解:MVCC原理、快照读、版本链、ReadView
MVCC文章目录MVCC概述版本链当前读和快照读ReadView读已提交和可重复读的区别概述MVCC(Multi-Version Concurrency Control): 多版本并发控制mysql通过其实现了读已提交、可重复读两种隔离级别,其也只在 可重复读 读已提交 两个级别下工作。MVCC可以理解为行级锁的一个变种,很多情况下避免了加锁,性能更优( 是乐观锁的一种实现 )。版本链我们知道,mysql事务的隔离级别有四种,其中:读未提交和串行化分别是最低和最高的隔离级别,读未提交是指可原创 2022-05-07 16:42:32 · 654 阅读 · 0 评论 -
【MySql进阶】undo日志详解:undo日志结构、undo日志链表、回滚段、undo log原理
undo日志本文为阅读《MySql是怎样运行的》的笔记,供大家参考。文章目录undo日志概述undo日志数据结构insert 对应的undo logdelete 对应的undo logupdate 对应的undo log不更新主键的操作更新主键的操作undo log 页面通用结构undo log 页面链表first undo pageUndo Log Segment HeaderUndo Log Headerundo页面重用回滚段概述从回滚段中申请Undo页面链表多个回滚段undo log的写入过程概原创 2022-04-18 17:11:08 · 4197 阅读 · 1 评论 -
【MySql进阶】redo日志详解:redo日志结构、lsn、checkpoint、mysql事务日志、mysql崩溃恢复
redo日志本文为阅读《MySql是怎样运行的》的笔记,供大家参考。文章目录redo日志概述redo数据结构通用结构redo日志类型redo日志组Mini-Transactionredo日志写入内存redo log bufferredo log blockredo log 写入redo日志写入磁盘redo日志刷盘时机redo日志文件组redo日志文件格式Log Sequeue Number全局LSNflushed_to_disk_lsnflush链表中的LSNcheckpointinnodb_flush原创 2022-04-06 14:24:44 · 2014 阅读 · 0 评论