![](https://img-blog.csdnimg.cn/20210114000458920.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
MySQL
文章平均质量分 85
MySQL学习笔记
湘水友独
coding
展开
-
InnoDB存储引擎——锁
锁介绍原创 2021-02-01 12:25:46 · 102 阅读 · 0 评论 -
InnoDB存储引擎——MVCC机制
what:什么是MVCC,用来解决什么问题when:在哪些场景会用到where:哪里会用到MVCCwhy:为什么要用MVCCwho:mysql 的 innodb存储引擎how:mysql是怎么实现mvcc 的how much:用了mvcc提升了多少性能========================什么是mvcc,解决什么问题问题是怎么背景mvcc是怎么解决的,通过什么原理用了mvcc会带来新的问题吗,能解决幻读不背景多事务并发的时候会有4种并发场景:读读,读写,写读,写写;最早的原创 2021-01-28 18:01:07 · 233 阅读 · 0 评论 -
binlog简介
概念binlog 用于记录数据库执行的写入性操作信息,以二进制的形式保存在磁盘上。binlog 是 MySQL 的逻辑日志,由 Server 层记录,使用任何存储引擎都会记录binlog日志逻辑日志:可以简单理解为记录的就是SQL语句物理日志:MySQL 最终的数据都存在数据页中,物理日志记录的就是数据页的变更binlog 通过追加的方式写入,可以通过 max_binlog_size 参数配置binlog文件的大小,当文件大小达到给定的定值后,会生成新的文件来保存日志使用场景主从复制:在原创 2021-01-27 18:09:40 · 1887 阅读 · 0 评论 -
InnoDB存储引擎——redo log
redo log 作用事务有一个重要特性:持久性,意思是说,只要事务提交成功,那么对数据库的修改就被永久保存了下来。怎么来保证持久性呢?简单的做法是在每次事务提交的时候,将该事务涉及到的数据页全刷回磁盘,但是这么做会导致严重的性能问题,主要体现在以下两点:InnoDB 中是以页为单位进行磁盘IO的,一个事务的修改可能只是修改数据页里的几个字节,这时候将整个数据页全部刷磁盘的话,太浪费资源了一个事务的修改可能涉及多个数据页,并且这些数据页在物理上并不连续,使用随机IO写入性能差为了解决这些问题,原创 2021-01-27 17:06:06 · 339 阅读 · 0 评论 -
InnoDB存储引擎——索引
二叉查找树左子树比根节点小右子树比根节点大通过中序遍历,得到从小到大的排序数据查找方式,如查询 5 的记录,先找根节点 8,8大于5;查找8的左子树,找到4,4小于5;查找4的右子树,找到5;一共找了3次二叉查找树可以任意构造,极端情况下会退化成链表,如图所示如果想要查询9,需要遍历整个链表,查询6次,查询效率就低了。这时候就需要这棵树是平衡的,于是就有了平衡二叉树,也叫AVL树平衡二叉树(AVL树)首先,满足二叉查找树定义其次,所有节点的左右子树最大高度差不超过1平原创 2021-01-22 22:22:26 · 161 阅读 · 0 评论 -
InnoDB存储引擎——undo log
什么是undo log,有什么作用数据回滚(1)当执行一条 insert、update、delete 操作的SQL语句时,会生成一条 undo log,可以称其为重做日志或回滚日志。(2)记录数据更新之前的样子,当需要回滚时,依据 undo log 恢复。(3)undo log是逻辑日志,只是将数据库逻辑的恢复到原来的样子(恢复缓冲池中的数据)(4)如果执行的是insert操作,undo log记录对应的delete操作;(5)如果执行的是delete操作,undo log记录对应的 ins原创 2021-01-20 11:20:21 · 629 阅读 · 0 评论 -
InnoDB存储引擎——Buffer Pool缓冲池
概念存储结构Free 链表Flush 链表LRU 链表冷热隔离问题刷磁盘策略原创 2021-01-18 22:54:08 · 182 阅读 · 0 评论 -
MySQL存储引擎简介
简介MySQL存储引擎负责数据的存储和读取,每个存储引擎都有自己的特点,MySQL 服务器通过API与存储引擎进行通信。MySQL体系结构中,支持了很多存储引擎:InnoDB,MyISAM,Memory,NDB Cluster等InnoDB支持事务,行锁,外键,使用多版本并发控制(MVCC)来获得高并发,实现了4种隔离级别,默认为 Repeatable 级别。使用一种被称为 next-key locking 的策略来避免幻读现象的产生。高性能和高可用功能:插入缓冲、二次写、自适应哈希索引、预读原创 2021-01-18 00:03:58 · 107 阅读 · 0 评论 -
MySQL事务隔离级别
事务特性MySQL数据库InnoDB存储引擎的事务完全符合事务ACID的特性。A:原子性(Atomicity)例如:A向B转账,A账户扣除100块,B账户增加100块,这2个操作要么都成功,要么都失败,如果有一个操作执行成功,一个执行失败,执行成功的操作需要回滚。C:一致性(Consistency)一致性指事务将数据从一种状态转变为下一种一致的状态。在事务开始之前和事务结束之后,数据库的完整性约束没有被破坏。应用系统从一个正确的状态到另一个正确的状态,ACID就是说事务能够通过AID来保证这个原创 2021-01-13 22:42:07 · 80 阅读 · 0 评论 -
MySQL是如何存储数据的
InndoDB 逻辑存储结构建了一张 tb_user 表,就对应了一个名为 tb_user.ibd 的表空间文件为了保证顺序IO,表空间被划分为多个连续的数据区,256个连续的数据区称为一个数据区组,一个数据区又由64个连续的数据页组成,数据页包含数据行。一个数据页大小为 16 KB一个数据区大小为 64 * 16 KB = 1 MB一个数据区组大小为 256 * 1 MB = 256 MB在 InnoDB 中有个参数 innodb_file_per_table ,默认值为 on,表示每张表的原创 2021-01-12 18:38:41 · 5316 阅读 · 0 评论 -
MySQL是如何执行SQL语句的
通过这篇文章,我们一起来了解一下, Java 程序执行下面这条 SQL 语句去查询 MySQL 数据,会经历些什么。select * from tb_user where id = 1;我们要和 MySQL 通信,首先得跟 MySQL 建立网络连接,在 Java 程序中使用 mysql-connector-java 驱动包与数据库建立连接。我们知道在并发场景下频繁的创建网络连接开销很大,于是就有了数据库连接池(Druid,C3P0,DBCP),平常工作中就是那么干的,与之相对的数据库这边也有对应的原创 2021-01-09 18:24:36 · 510 阅读 · 1 评论 -
数据库索引原理及优化
摘要本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为这是平常使用MySQL时主要打交道的索引,至于哈希索引和全文索引本文暂不讨论。常见的查询算法及数据结构为什么这里...转载 2019-08-07 23:37:42 · 89 阅读 · 0 评论