Mysql
文章平均质量分 93
mysql相关基础知识
small_engineer
把学习比作游戏是再合适不过了,学习到了一点新技术,就相当于学到了新的必杀技;刷LeetCode就像打怪,一个个打过去;写项目就像搭建城堡,先从地基打起,逐渐到高楼大厦
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
一文掌握MySQL中的锁
MySQL中锁的详细介绍解决并发事务带来的问题读-读情况写-写情况读-写或写-读情况解决并发事务带来的问题读-读情况并发事务同时对一条记录进行读取,本身不会对记录造成什么影响,所以允许这种情况的发生写-写情况并发事务同时对同一条记录进行修改的情况, 会造成脏写现象,任何一种隔离级别都不允许它的发生,所以使用加锁的方式,排队等待进行记录的修改。这个排队的实现,是通过加锁来进行实现的。这个锁结构是在内存中实现的,在事务执行前,锁并不存在。当一个事务对记录做改动时,需要先生成一个锁结构,然后在内存原创 2022-04-26 18:16:04 · 883 阅读 · 0 评论 -
一文解决MySQL事务并发问题和事务隔离级别及MVCC原理
事务并发产生的一致性问题脏写如果一个事务修改了另一个未提交事务的修改过的数据,则称发生了脏写现象。举个例子:假设数据库中有一个数据项为x=2;事务A修改了x=1;此时事务A并没有提交,事务B此时也来修改数据项x=0;此时事务A,B提交事务B修改了事务A未提交修改过的数据,所以发生了脏写的现象脏读如果一个事务读取了另一个事务未提交的数据,则称发生了脏读现象不可重复读如果一个事务A读取了x的值,然后事务B又修改了x的值并且提交,事务A再次读取x的值时,则会与第一次x的值不同,则称发生了不可原创 2022-04-21 14:04:17 · 1546 阅读 · 0 评论 -
MySQL日志之Undo日志
Undo日志redo log是事务持久性的保证,undo log是事务原子性的保证。在事务中 更新数据 的 前置操作 其实是要先写入一个 undo log 。如何理解Undo日志事务需要保证 原子性 ,也就是事务中的操作要么全部完成,要么什么也不做。但有时候事务执行到一半会出现一些情况,比如:情况一:事务执行过程中可能遇到各种错误,比如 服务器本身的错误 , 操作系统错误 ,甚至是突然 断电 导致的错误情况二:程序员可以在事务执行过程中手动输入 ROLLBACK 语句结束当前事务的执行。原创 2022-04-13 14:51:02 · 2337 阅读 · 0 评论 -
MySQL事务日志之redo日志
事务有4种特性:原子性、一致性、隔离性和持久性。那么事务的四种特性到底是基于什么机制实现呢?事务的隔离性由 锁机制 实现。事务的原子性,一致性,持久性由事务的redo日志和undo日志来保证redo log称为重做日志,提供再写入操作,恢复提交事务修改的页操作,用来保证事务的持久性undo log称为回滚日志,回滚行记录到某个特定版本,用来保证事务的原子性,一致性redo日志redo的组成重做日志缓存保存在内存中,是易失的重做日志文件保存在硬盘中,是持久的redo流程第1步:先将原创 2022-04-12 14:39:49 · 1715 阅读 · 0 评论 -
一条SQL语句在MySQL中的执行流程
MySQL的基础架构Server层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖MySQL的大多数核心服务 功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在 这一层实现,比如存储过程、触发器、视图等。存储引擎层负责数据的存储和提取。其架构模式是插件式的,支持InnoDB、MyISAM、 Memory等多个存储引擎。现在最常用的存储引擎是InnoDB,它从MySQL 5.5.5版本开始成为了 默认存储引擎。连接器在执行一条sql语句时:第一步,你会先连接到原创 2022-04-09 15:34:59 · 868 阅读 · 0 评论 -
Join关联查询优化及原理
采用左外连接下面开始 EXPLAIN 分析EXPLAIN SELECT SQL_NO_CACHE * FROM `type` LEFT JOIN book ON type.card = book.card;结论:type 有All添加索引优化ALTER TABLE book ADD INDEX Y ( card); #【被驱动表】,可以避免全表扫描 EXPLAIN SELECT SQL_NO_CACHE * FROM `type` LEFT JOIN book ON type.card = b原创 2022-04-04 18:20:48 · 1939 阅读 · 0 评论 -
索引失效的几种情况
索引失效案例表结构如下:全值匹配我最爱没有创建任何索引的情况下:explain select * from student_info where student_id=25 and name='jksf';发现它没有使用任何索引给前面一个字段建立索引create index X on student_info(student_id);explain select * from student_info where student_id=25 and name='jksf';发现它使原创 2022-04-02 18:01:05 · 3175 阅读 · 0 评论 -
索引的分类,创建与设计原则
索引的分类从功能逻辑上说,索引主要有4种,分别是普通索引、唯一索引、主键索引、全文索引。按照物理实现方式,索引可以分为2种:聚簇索引和非聚簇索引。按照作用字段个数进行划分,分成单列索引和联合索引。不同的存储引擎支持的索引类型也不一样lnnoDB:支持B-tree、Full-text等索引,不支持Hash索引;MylSAM ︰支持B-tree、Full-text等索引,不支持Hash索引;Memory :支持B-tree、Hash等索引,不支持Full-text索引;NDB:支持Has原创 2022-03-30 19:39:06 · 2421 阅读 · 0 评论 -
InnoDB数据存储结构
数据库的存储结构:页索引结构给我们提供了高效的索引方式,不过索引信息以及数据记录都是保存在文件上的,确切说是存储在页结构中。另一方面,索引是在存储引擎中实现的,MySQL服务器上的存储引擎负责对表中数据的读取和写入工作。不同存储引擎中存放的格式一般是不同的,甚至有的存储引擎,比如Memory都不用磁盘来存储数据由于InnoDB是MySQL的默认存储引擎,所以本章剖析InnoDB存储引擎的数据存储结构。磁盘与内存交互基本单位:页InnoDB将数据划分为若干个页,InnoDB中页的大小默认为16KB。原创 2022-03-30 13:33:47 · 3885 阅读 · 1 评论 -
mysql索引的数据结构
为什么使用索引我们假如不使用索引的话,就像我们左边的这样,造成全文索引加入索引的话,像我们右边的这样,那么它的速度就会快上很多。打个比方,假如我们需要查字典的话,索引就像我们的目录一样,没有索引,我们就只能一页一页去找。而加上索引之后,我们可以根据目录来快速查找我们所需要的东西对字段Col2添加了索引,就相当于在硬盘上为col 2维护了一个索引的数据结构,即这个二叉搜索树。二叉搜索树的每个结点存储的是(K,V)结构,key是Col 2,value是该key所在行的文件指针(地址)。比如:该二原创 2022-03-28 12:12:13 · 6711 阅读 · 2 评论
分享