![](https://img-blog.csdnimg.cn/5672bea4eb4446d8903b77e01f81bb61.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
MySQL
文章平均质量分 83
Salute-Y
这个作者很懒,什么都没留下…
展开
-
MySQL~锁内存结构与监控策略
文章目录锁结构锁的监控锁结构对一条数据加锁的本质就是创建一个锁结构与其关联如果一个事务要获取10000条记录的锁,不会生成10000个锁结构,而是会将相同类型记录的锁放到一个锁结构中,只要符合以下条件:加锁记录在同一个事务加锁记录在同一个页面中加锁类型和等待状态相同具体结构每一层是干啥的锁所在事务信息:指针,指向事务更多信息索引信息:指针,加锁记录属于哪个索引表锁/行锁信息:如果是表锁,记录对哪个表如果是行锁,记录Spring ID表空间、PageNumber 所在页号原创 2022-05-13 16:04:34 · 550 阅读 · 0 评论 -
MySQL~锁的大集合(S锁、X锁、意向锁、自增锁、元数据锁、记录锁、间隙锁、临键锁、全局锁、死锁)
文章目录什么是锁机制并发的访问相同数据的情况读读写写读写/写读锁的分类共享锁(S锁)排他锁( X锁)表锁表级别的S、X锁.意向锁.自增锁元数据锁行锁记录锁间隙锁临键锁插入意向锁页锁其他锁全局锁死锁什么是锁机制锁是计算机协调多个进程或线程并发访问某一资源的控制.锁不仅仅限于数据库领域,在计算机中,当多个进程或线程并发的访问某个数据的时候,对于一些重要敏感的数据,为了保证数据的完整性和一致性,我们需要保证最多只有一个线程在访问,所以诞生了锁机制。锁机制的作用是对并发操作进行控制在MySQL中,锁保原创 2022-05-13 14:45:38 · 3484 阅读 · 0 评论 -
MySQL~Undo日志(作用、存储结构、生命周期/运行过程)
文章目录Undo日志作用存储结构生命周期/运行过程Undo日志Undo日志保证了事务原子性每次更新一条数据之前都会先写入一条undo日志在运行过程中,如果数据库宕机或是事务回滚,都需要把数据恢复成原来的样子,这个由Undo日志完成SELECT没有修改数据记录,不会产生Undo日志Undo日志每次记录的都是相反的操作,如果修改操作错误,可以通过执行这些相反操作把数据恢复回去。作用1.回滚数据(数据虽然回滚,但是只是逻辑上恢复了原装,物理存储上的改变无法恢复)2.实现MVCC存储结构原创 2022-05-12 12:51:26 · 697 阅读 · 0 评论 -
MySQL~Redo刷盘策略、LogBuffer缓存池和LogFile日志文件理解
文章目录刷盘策略不同刷盘策略演示Redo log buffer缓存区Redo log file日志文件总结刷盘策略Innodb在写Redo日志的时候,是先写入redo log buffer 中,然后再按照一定频率刷新到redo log file中。这里的 一定频率 有多个选择,这些选择对应的就是不同的刷盘策略.这里的刷盘不是指将内存中的数据刷新到磁盘,而是指从Redo日志位于内存中的缓冲区(redo log buffer)刷新到位于磁盘中的文件区(redo log file).redo原创 2022-05-11 22:34:11 · 2623 阅读 · 0 评论 -
MySQL~Redo日志和Undo日志理解、为什么要有Redo日志、Redo日志的组成、特点、运行流程
文章目录事务ACID特性是如何实现的事务ACID特性是如何实现的事务的四种特性大家都知道是原子性、一致性、隔离性和持续性,也就是ACID,那么这四种特性是如何实现的呢?隔离性由锁机制实现剩下的三种特性由事务的redo和undo日志实现:1.Redo Log是重做日志,可以再写入,恢复提交事务修改的数据页操作,来保证事务的持久性2.Undo Log是回滚日志,回滚行记录到某个保存点,来保证事务的原子性和一致性。redo log 是存储引擎层(innodb)生成的日志,记录的是物理层面的对原创 2022-05-11 17:12:09 · 3060 阅读 · 0 评论 -
MySQL~数据并发问题(脏写、脏读、不可重复读、幻读)与SQL隔离级别演示
文章目录数据并发问题脏写脏读不可重复读幻读MySQL中的隔离级别如何设置事务的隔离级别数据并发问题脏写脏读不可重复读幻读四个问题严重性从高到低:脏写、脏读、不可重复读、幻读MySQL中的隔离级别脏写的问题非常严重,不论是哪种隔离级别,都不允许脏写的问题发生查看默认的隔离级别:mysql> show variables like 'transaction_isolation';+-----------------------+-----------------+| Va原创 2022-05-10 16:47:56 · 1750 阅读 · 7 评论 -
MySQL~事务的ACID特性与事务的状态、显式与隐式事务
文章目录E-R模型关系类型E-R模型ER模型也叫实体关系模型ER模型三要素:实体、属性、关系实体:数据对象,抽象自现实生活个体属性:实体的特性,比如电话号码、地址、数量等关系:实体之间的关系可独立存在是实体,不可独立存在是属性关系类型...原创 2022-05-09 16:40:29 · 854 阅读 · 0 评论 -
MySQL~范式概述、12345范式+巴斯范式(BCNF)、反范式化
文章目录范式概述第一范式(1NF)第二范式(2NF)第三范式(3NF)巴斯范式(BCNF)第四范式(4NF)第五范式(5NF)了解即可反范式化范式概述范式:关系型数据库中,数据表设计的规则就是范式要想设计一张合理的数据表,必须满足某种范式范式分类:关系型数据库中,有6种:12345范式+巴斯范式(BCNF)从低到高阶:123+巴斯+45范式越高阶,冗余度越低高阶一定符合低阶要求满足最低要求的是第一范式,有更多规范要求的是第二范式,以此类推,越来越严格实际开发中,一般都是3NF,原创 2022-05-09 14:59:44 · 876 阅读 · 1 评论 -
MySQL~索引设计原则:适合创建索引的11种情况、不适合创建索引的7种情况
文章目录数据的准备适合创建索引不适合创建索引数据的准备#1. 数据的准备CREATE DATABASE atguigudb1;USE atguigudb1;#1.创建学生表和课程表CREATE TABLE `student_info` ( `id` INT(11) AUTO_INCREMENT, `student_id` INT NOT NULL , `name` VARCHAR(20) DEFAULT NULL, `course_id` INT NOT NULL , `clas原创 2022-05-09 12:24:58 · 2043 阅读 · 0 评论 -
MySQL~索引分类和向表中添加删除索引、8.0版本新特性:降序和隐藏
文章目录索引分类普通索引唯一性索引主键索引单列索引多列索引全文索引索引分类按照功能划分,可以分为普通、唯一、主键、全文按照物理实现,可以分为聚集、非聚集按照字段个数,可以分为单列、多列普通索引没有任何的限制条件,单纯用来提高查询效率,非常普通的索引.这个索引可以用于任何的数据类型。索引值是否唯一和非空,由字段本身的约束决定唯一性索引限制该索引的值唯一,可以为空一张表里可以有多个唯一索引唯一约束通过唯一索引实现使用unique创建主键索引是特殊的唯一索引不可为空一张原创 2022-05-08 15:49:26 · 1445 阅读 · 0 评论 -
MySQL~不同数据结构对索引的友好程度(Hash、二叉搜索树、AVL树、B-树、B+树)
文章目录1. 选择标准2. 各种数据结构分析2.1 可以用Hash吗?2.1 可以用二叉搜索树吗?1. 选择标准索引选数据结构只有一个标准:磁盘IO次数,越少越好索引是存储在外部磁盘上的,对于关系型数据库,当数据量比较大的时候,索引有可能达到几个G甚至更多,不可能全部加载完,只能逐一加载,每次加载都会耗时,所以加载次数越少越好2. 各种数据结构分析2.1 可以用Hash吗?不可以Hash是通过某种确定的算法将输入变输出,相同的输入总会得到相同的输出Hash中像HashMap,增删查改的原创 2022-05-07 13:57:15 · 552 阅读 · 0 评论 -
MySQL~B+树索引(聚簇、非聚簇)和一些B+树索引的注意点
这里写目录标题聚簇索引非聚簇索引联合索引索引按照物理实现方式,索引可以分为2种:聚簇索引和非聚簇索引非聚簇索引又被称为二级索引或者辅助索引聚簇索引聚簇索引指的是一种数据的存储方式,即将所有的记录存储在叶子节点,就是索引即数据、数据即索引而聚簇是指数据行和相邻的键值存储在一起,就是索引和数据是一个整体的。特点:根据主键的大小进行记录和数据页的排序( 1.一个数据页内的多个记录是根据主键的大小排成一个单链表2.各个数据页也是根据主键的大小排成一个双链表3.每一层的数据页中也是根据主键的大小进行排原创 2022-05-06 20:20:47 · 1546 阅读 · 2 评论 -
MySQL~InnoDB中索引的底层数据结构--B+树如何存放数据
文章目录索引和数据储存Innodb中的索引---B+树B+树与数据页索引和数据储存数据在数据库中以表的形式存储,每个表中的数据可能有千万条,这些数据在底层存储的时候,是以数据页为基本单位进行存储。索引和数据页的关系,可以类比成图书馆里每个书架和书架的分类牌之间的关系,索引就是一个个的牌子,贴在书架上,写着“小说”“文学”“”“影视”等等,而数据页就是一个个的书架,里面的书就是具体的数据…在数据页中,每条记录之间通过单链表的形式进行连接,而数据页之间通过双向链表的形式进行连接,如下图:Innodb原创 2022-05-06 16:10:32 · 1819 阅读 · 2 评论 -
MySQL重点~为什么使用索引以及索引的优缺点
文章目录什么是索引、为什么使用索引索引的优缺点什么是索引、为什么使用索引什么是索引索引是一种数据结构,是存储引擎用来快速找到数据的一种数据结构。类似于课本的目录,通过目录就可以快速知道我们要找的内容大概在哪一个章节。在MySQL中进行数据查找时,我们可以先查找索引,然后通过索引来找到相关的记录,如果不符合索引,再进行一条一条的进行全表查找。为什么使用索引举个栗子如下图:在没有索引的情况下,数据分布在硬盘不同的位置,在查找数据时,需要在不同的位置来回找数据,非常耗时,即使是顺序放置,也需要原创 2022-05-06 14:09:08 · 839 阅读 · 1 评论 -
MySQL~存储引擎(如何查看、分类、innodb的优势、Innodb与MyIsam的对比、其他常见引擎)
文章目录事务必须满足的4个条件事务必须满足的4个条件原子性:一个事务中的所有操作,要么全完成,要么全不完成,不会结束在中间某个环节。如果事务在执行的过程中发生错误,会回滚(Rollback)到事务开始之前的状态,就好像这个事务从来没有执行过一样一致性:在事务开始之前和事务结束之后,数据库的完整性没有被破坏。隔离性:数据库允许多个并发事务同时对其数据进行修改和读写,隔离性可以有效防止多个事务并发执行时导致数据不一致。持久性:事务处理结束后,对数据的修改就是永久性的,即使系统故障也不会丢失。.原创 2022-05-06 12:49:53 · 966 阅读 · 1 评论 -
MySQL基础~NATURAL JOIN(自然连接) 和USING的使用(SQL99语法新特性)
文章目录NATURAL JOINUSING表的约束条件总结与规范SQL99标准了解NATURAL JOIN我们在查询两张表时,可能会将连接条件设为相同的字段,如下:比如我们想查询员工的id、姓名和所在部门,会从员工表和部门表中,根据部门id和管理id是否相等进行查询这里的连接条件是两张表中共有的字段:部门id和管理id,通过这两个字段是否分别相同来进行判断mysql> SELECT employee_id,last_name,department_name ->原创 2022-05-01 16:10:16 · 6556 阅读 · 3 评论 -
MySQL基础~使用SQL99实现7种JOIN操作(取并操作)
文章目录union 与 union all关键字7种JOIN操作的实现A∩B内连接左外连接&右外连接A - A∩BB-A∩B满外连接(A∪B)A∪B-A∩Bunion 与 union all关键字UNION的作用是合并查询的结果 ,去除重复的记录UNION ALL的作用是合并查询结果,不去掉重复的记录语法格式select 某列... from 表1union /union allselect 某列....from 表2优先使用:union 返回两个表的内容(并集),去重原创 2022-05-01 14:58:39 · 1355 阅读 · 1 评论 -
MySQL基础~多表查询分类与SQL92和99语法如何实现内连接和外连接
文章目录多表查询的分类等值连接 vs 非等值连接自连接 vs 非自连接内连接 vs 外连接SQL92和SQL99语法如何实现内外连接多表查询的分类这个分类是根据多表查询时的连接条件而划分的,即where语句后的内容,可以用三个角度进行划分:角度1:等值连接 非等值连接角度2: 自连接 非自连接角度3:内连接 外连接在多表查询时,需要注意一些问题:多表查询的正确方式:需要有连接条件。如果没有连接条件,就会出现笛卡尔积错误,即查询出两个表之间的所有的数据组合结果SELECT em原创 2022-05-01 13:29:31 · 674 阅读 · 1 评论 -
MySQL基础~数据约束primary key、unique、not null、default、foreign key
文章目录数据库约束主键唯一约束非空约束默认外键约束(重点)数据库约束约束可以进一步的对表中的数据进行限制,可以确保数据的正确性、有效性和完整性。约束的种类:PRIMARY KEY:主键UNIQUE:唯一NOT NULL:非空DEFAULT :默认FOREIGN KEY:外键主键在数据库中,有时候我们可能记录的数据一模一样,为了区分这种相同的数据,我们可以给所有的数据设置一个新的字段,这个字段用来区分数据。即主键的作用是用来唯一的标识记录.每一张表都有一个主键字段,每个数据都有一个主原创 2022-04-29 22:34:27 · 2868 阅读 · 3 评论 -
MySQL基础~排序查询、聚合函数查询、Group by分组查询、limit分页
文章目录数据库中的复杂查询排序聚合函数查询分组查询Having和Where的区别limit语句数据库中的复杂查询排序排序查询数据库中的数据,使用ORDER BY字句ASC:升序DESC:降序如果不指定,默认是升序ASC单列排序select*from 表1 where 字段=xxx order by 字段名 [asc/desc];组合排序:先按照第一个字段进行排序,如果相同,再按照第二个字段排序,以此类推SELECT 字段 FROM 表名 WHERE 字段=值 order原创 2022-04-29 19:20:51 · 988 阅读 · 1 评论 -
MySQL基础~总结一下几种常见的SQL语句(DDL、DML、DQL)
文章目录前言DDL操作数据库创建库查看库删除库使用/切换库DDL操作表创建表查看表删除表修改表DML语句操作表数据向表中插入数据蠕虫复制更新表中的数据DQL查询数据简单查询条件查询前言数据库的整体架构是在DBMS上有很多的分库,每个库里又有很多表。每个分库可以放一个系列的数据,比如库1放京东的数据,库2放淘宝的数据,每个库的表通过记录的形式一条一条的储存数据,比如库1的第一张表存放了京东的用户信息,第二张表存放了商品信息,第三张表存放了购买记录等等类似DDL操作数据库创建库直接创建:crea原创 2022-04-28 19:29:41 · 1454 阅读 · 2 评论