
MySQL
文章平均质量分 87
哪里的船迷醉了夕阳
这个作者很懒,什么都没留下…
展开
-
MySQL学习总结
文章目录1、三大范式2、数据库四大特性:ACID3、数据库中的组件4、查询语句经过组件流程5、更新语句的执行情况6、MySQL中的四种隔离级别7、数据库索引:8、聚集索引和非聚集索引:9、索引的注意事项以及优缺点:10、索引有效和失效场景11、Binlog、redolog、undolog12、MVCC:基于“数据版本”对并发事务进行访问的。13、MySQL中的锁:全局锁、表级锁、行锁、间隙锁14、当前读和快照读15、乐观锁和悲观锁:16、InnoDB和MyISAM的区别:1、三大范式第一范式:确保每列原创 2022-02-10 19:37:17 · 1256 阅读 · 0 评论 -
union和union all的区别
文章目录今天在做题的时候发现了union all的题,突然想到了之前有看过的面试题问这二者的区别,记录一下菜鸟教程UNION用于连接两个以上的select语句的结果组合到一个结果集合中。多个select语句会删除重复的数据。基本语法SELECT expression1, expression2, ... expression_nFROM tables[WHERE conditions]UNION [ALL | DISTINCT]SELECT expression1, expressi原创 2022-01-12 21:05:21 · 178 阅读 · 0 评论 -
事务是否需要隔离
文章目录1、前言2、快照在MVCC是如何工作的学习来源:mysql45讲1、前言事务的隔离级别为可重复读这个级别下,事务T启动的时候回创建一个视图read-view,之后事务T执行期间,即便其他事务修改了数据,事务T看到的仍然和启动的时候看到的一样。但是在行锁的时候,如果两个事务要对同一行进行更新,那么第二个事务会被锁住,进入等待状态。那么既然进入等待状态,等到这个事务自己获取到行锁要更新数据的时候,读到的值又会是什么?举例:mysql> CREATE TABLE `t` ( `id`原创 2021-11-22 17:56:42 · 1521 阅读 · 0 评论 -
MySQL全局锁、表锁、行锁
文章目录1、前言2、全局锁2.1、只读的危险2.2、为什么备份要加锁3、表级锁3.1、元数据锁(MDL)3.1.1、安全给小表加字段学习来源:MySQL45讲1、前言数据库锁设计的初衷是处理并发问题的。根据加锁范围可以分为三类:全局锁、表级锁、行锁。2、全局锁全局锁就是对整个数据库实例加锁。提供加全局读锁命令:Flush tables with read lock(FTWRL)。当需要让整个库处于只读的状态,可以使用上述命令,之后其他线程的语句将会被阻塞:数据库更新(增删改)、数据库定原创 2021-11-20 18:38:30 · 986 阅读 · 0 评论 -
聚集索引和非聚集索引
文章目录前言1、聚集索引2、非聚集索引3、举例前言InnoDB的索引数据结构是B+树,主键索引叶子结点的值存储的是MySQL的数据行,普通索引的叶子结点的值存储的是主键值。1、聚集索引可以根据索引找到需要的数据,这个索引就是聚集索引,主键就是聚集索引。2、非聚集索引索引的存储和数据的存储是分离的,即:通过索引没有找到数据,需要根据索引上的值再次回表查询。3、举例create table student ( id bigint, no varchar(20) ,原创 2021-11-15 22:09:00 · 1036 阅读 · 0 评论 -
MySQL索引
文章目录1、索引是什么?1.1、哈希表1.1.1、优缺点1.1.2、结论1.2、有序数组1.2.1、优缺点1.2.2、结论1.3、二叉搜索树1.4、N叉树2、索引模型2.1、InnoDB的索引模型2.1.1、基于主键索引和普通索引的查询区别2.1.2、索引维护3、小结mysql45讲1、索引是什么?索引的出现就是为了提高数据查询的效率,可以理解为书的目录一样。用于提高读写效率的数据结构有很多,45讲介绍三种常见且简单的数据结构:1、哈希表;2、有序数组;3、搜索树1.1、哈希表是key-v原创 2021-11-12 15:00:48 · 947 阅读 · 0 评论 -
B树、B+树
文章目录1、为什么需要B树和B+树?2、B树2.1、B树特点2.2、图例2.3、查询3、B+树3.1、B+数特点3.2、图例3.3、卫星数据3.4、查询3.4.1、单行查询3.4.2、范围查询3.5、对比B树学习来源:博客1、博客2、可视化数据结构1、为什么需要B树和B+树?二叉搜索树的时间复杂度为O(logn)O(log_n)O(logn),查找效率已经很高了。但是问题出现了磁盘IO上。IO的效率是很低的,有大量数据的时候,查询不能一下将所有的数据加载到内存中,只能逐一加载磁盘页,每个磁盘页对原创 2021-11-10 22:34:49 · 101 阅读 · 0 评论 -
MySQL外键
文章目录1、基本概念2、使用条件3、外键好处4、使用方法5、相关操作6、外键删除和增加1、基本概念键和索引定义相同,所以外键和主键一样也是一种索引。MySQL会自动为所有表的主键进行索引,外键字段比武由用户进行明确的索引。用于外键关系的字段必须在所有的参照表中进行明确索引。外键可以是一对一的,即:一个表的记录只能与另外一个表的一条记录连接;也可以是一对多的,即:一个表的记录与另外一个表的多条记录连接。如果一个表的某个字段指向另一个表的主键,就称为外键。被指向的表称为父表,负责指向的表称为子表。原创 2021-11-07 18:25:31 · 1198 阅读 · 0 评论 -
MySQL事务隔离
文章目录1、什么是事务?2、隔离性与隔离级别2.1、隔离级别演示2.2. 视图2.2.1、可重复读的场景2.3、事务隔离的实现2.3.1、回滚日志学习地址1、什么是事务?简单的说,事务就是要保证一组数据库的操作,要么全部成功,要么全部失败。在MySQL中,事务支持是在引擎层实现的。MyISAM是不支持事务的,InnoDB支持事务。事务的四大特性:原子性(A):指事务包含的所有操作要么全部成功,要么全部失败回滚。一致性(C):指事务必须使数据库从一个一致性状态变为另一个一致性状态。隔离性(原创 2021-11-07 17:45:28 · 343 阅读 · 0 评论 -
MySQL关于varchar长度设置
文章目录1、MySQL的字段类型1.1、数值类型1.4、文本类型1.5、二进制数据类型1.6、日期类型2、varchar长度设置2.1、结论2.2、varchar(n)的最大值字符数2.3、varchar(n)需要1-2个额外字节记录长度n的值2.3.1 关于内存对齐的问题1、MySQL的字段类型MySQL列类型就是MySQL的数据类型1.1、数值类型1字节是8bit。BIT(M):位类型,M指定位数,默认值为1,范围是1-64。TINYINT[UNSIGNED]:占1个字节,带符号范原创 2021-11-07 17:03:38 · 10995 阅读 · 1 评论 -
MySQL中更新语句的执行情况
文章目录1、更新过程2、redo log重做日志(物理日志)3、binlog归档日志(逻辑日志)3.1、binlog与redo log区别4、执行器和InnoDB引擎在执行update内部流程5、恢复以及两阶段提交5.1、恢复5.2、为什么需要两阶段提交?学习来源1、更新过程建表语句:mysql> create table T(ID int primary key, c int);更新语句:mysql> update T set c=c+1 where ID=2;回顾原创 2021-11-06 16:11:26 · 268 阅读 · 0 评论 -
MySQL查询语句的执行情况
文章目录1、MySQL基本结构1.1、Server层1.2、存储引擎2、MySQL中的组件2.1、连接器2.2、查询缓存2.3、分析器1、MySQL基本结构可以分为Server层和存储引擎两个部分1.1、Server层Server层包括连接器、查询缓存、分析器、优化器、执行器等。涵盖MySQL的大多数核心功能。所有跨存储引擎的功能都在这一层实现,比如:存储过程、触发器、视图等。1.2、存储引擎负责数据的存储和提取。支持InnoDB、MyISAM、Memory等多个存储引擎。现原创 2021-11-06 09:37:37 · 495 阅读 · 0 评论