MySQL学习笔记
文章平均质量分 96
只会简单的写SQL语句,对MySQL进行使用是远远不够的,本专栏是对MySQL的底层知识的一个学习总结
小朱小朱绝不服输
这个作者很懒,什么都没留下…
展开
-
MySQL面试突击
MySQL相关面试问题的整理总结。文章目录一、基础知识篇1. Mysql中的MyISAM与InnoDB的区别?2. InnoDB存储引擎的四大特性?3. 什么是视图?视图的使用场景有哪些?4. 数据库三大范式?5. 非关系型数据库和关系型数据库区别,优势比较?6. 什么是 内连接、外连接、交叉连接、笛卡尔积等?7. SQL语言分类二、事务1. 什么是事务?2. 数据库事务的四大特性?3. InnoDB如何保证事务的四大特性?4. MySQL数据库提供的四种隔离级别?5. 不考虑事务的隔离性,会发生几种问题原创 2022-02-16 11:22:26 · 3111 阅读 · 0 评论 -
MySQL学习:为什么我的MySQL会“抖”一下?
在平时的工作场景中,有时会发现,一条 SQL 语句,正常执行的时候特别快,但是有时也不知道怎么回事,它就会变得特别慢,并且这样的场景很难复现,它不只随机,而且持续时间还很短。看上去,这就像是数据库“抖”了一下。1.你的 SQL 语句为什么变“慢”了在MySQL学习:一条SQL语句的执行过程第二节一条SQL更新语句是怎么执行的(日志系统)中学习了WAL机制(关键点就是先写日志,再写磁盘)。现在知道了,InnoDB 在处理更新语句的时候,只做了写日志这一个磁盘操作。这个日志叫作 redo log(重做日志)原创 2020-09-30 15:12:19 · 1885 阅读 · 1 评论 -
MySQL学习:怎样选择普通索引还是唯一索引?
在MySQL学习:深入浅出索引中学习了MySQL普通索引和唯一索引。了解了普通索引与唯一索引的区别。普通索引:最基本的索引,没有任何限制。唯一索引:与普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。今天学习在不同的业务场景下,应该选择普通索引,还是唯一索引?假设在维护一个市民系统,每个人都有一个唯一的身份证号,而且业务代码已经保证了不会写入两个重复的身份证号。如果市民系统需要按照身份证号查姓名,就会执行类似这样的 SQL 语句:select n原创 2020-09-29 22:12:35 · 1905 阅读 · 0 评论 -
MySQL学习:事务到底是隔离的还是不隔离的?
在学习事务隔离级别的时候 MySQL学习:事务的隔离 提到过,如果是可重复读隔离级别,事务 T 启动的时候会创建一个视图 read-view,之后事务 T 执行期间,即使有其他事务修改了数据,事务 T 看到的仍然跟在启动时看到的一样。也就是说,一个在可重复读隔离级别下执行的事务,好像与世无争,不受外界影响。在学习行锁的时候 MySQL学习:行锁,怎样减少对性能的影响? 又提到,一个事务要更新一行,如果刚好有另外一个事务拥有这一行的行锁,它又不能这么超然了,会被锁住,进入等待状态。问题是,既然进入了等待状原创 2020-09-25 16:12:02 · 1438 阅读 · 0 评论 -
MySQL学习:行锁,怎样减少对性能的影响?
根据加锁的范围,MySQL 里面的锁大致可以分成全局锁、表级锁和行锁三类。另一个博客学习了全局锁和表级锁MySQL学习:全局锁和表锁。本博客继续学习另一个锁:行锁。MySQL 的行锁是在引擎层由各个引擎自己实现的。但并不是所有的引擎都支持行锁,比如 MyISAM 引擎就不支持行锁。不支持行锁意味着并发控制只能使用表锁,对于这种引擎的表,同一张表上任何时刻只能有一个更新在执行,这就会影响到业务并发度。InnoDB 是支持行锁的,这也是 MyISAM 被 InnoDB 替代的重要原因之一。InnoDB与My原创 2020-09-10 18:56:21 · 1607 阅读 · 0 评论 -
MySQL学习:全局锁和表锁
数据库锁设计的初衷是处理并发问题。作为多用户共享的资源,当出现并发访问的时候,数据库需要合理地控制资源的访问规则。而锁就是用来实现这些访问规则的重要数据结构。锁是用于多用户并发控制的。用途:是用来解决多用户并发冲突的。(产生并发冲突,将出现错误的数据)缺点:会引起多用户的死锁和阻塞,影响效率。使用锁的原则:(在解决了多用户并发冲突的条件下)尽可能减少锁引起的阻塞。尽可能避免锁引起的死锁(本质上也是由相互阻塞引起)最大程度的并发执行根据加锁的范围,MySQL 里面的锁大致可以分成全局锁原创 2020-09-09 09:46:43 · 1623 阅读 · 0 评论 -
MySQL学习:深入浅出索引
索引是数据库中用于存放表中每一条记录的位置的对象,其目的是为了加快数据的读取速度和完整性检查。索引可以拥有独立的存储空间,并且可以通过设置存储参数控制索引段的盘区管理方式。一句话简单来说,索引的出现其实就是为了提高数据查询的效率,就像书的目录一样。一本 500 页的书,如果你想快速找到其中的某一个知识点,在不借助目录的情况下,那我估计你可得找一会儿。同样,对于数据库的表而言,索引其实就是它的“目录”。一、索引的常见模型索引的出现是为了提高查询效率,但是实现索引的方式却有很多种,所以这里也就引入了索引模原创 2020-09-04 13:19:42 · 2198 阅读 · 0 评论 -
MySQL学习:事务的隔离
简单来说,事务就是要保证一组数据库操作,要么全部成功,要么全部失败。在 MySQL 中,事务支持是在引擎层实现的。MySQL 是一个支持多引擎的系统,但并不是所有的引擎都支持事务。比如 MySQL 原生的 MyISAM 引擎就不支持事务,这也是 MyISAM 被 InnoDB 取代的重要原因之一。一、事务数据库事务(Database Transaction):一组具有ACID属性的SQL命令组成的单个逻辑工作单元,称为数据库事务。事务是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割原创 2020-09-01 21:32:50 · 2871 阅读 · 0 评论 -
MySQL学习:一条SQL语句的执行过程
最近在学习MySQL的一些底层知识,光会使用数据库是远远不够的,在面试过程中,这些底层核心知识更受面试官欢迎。学习了MySQL实战45讲,写的非常好,特此做一些笔记。本博客主要是讲一条SQL语句的执行过程,主要涉及的是两方面知识:一是查询语句涉及的基础架构;二是更新语句涉及的日志系统。一、一条SQL查询语句是怎么执行的(基础架构)首先,需要了解一下MySQL的逻辑架构,当执行一条SQL语句时,我们知道它的执行过程,可以对MySQL有更深入的了解,在出现异常,错误的时候,可以更快速的定位问题所在。下面原创 2020-08-30 22:27:49 · 1762 阅读 · 0 评论