MySQL学习笔记:在进行表设计时,没有设置自增id会有什么影响?

发布于 2020-08-30

背景(基于innodb引擎)总所周知,即使表设计时,没有设置自增id,数据行也会有一个隐藏的row_id代行其责;那么这么做会有一个怎么样的后果呢?分析如果创建的InnoDB表没有指定主键,那么InnoDB会给你创建一个不可见的,长度为6个字节的row_id。注意,row_id的长度是6个字节,这也

0 条评论
53 热度

MySQL学习笔记:count的用法(基于 InnoDB 引擎)

发布于 2020-08-30

背景在写sql中,会有以下几种常见的count用法:count(*)、count(主键id)、count(字段)和count(1);不同的用法是存在不同的形成差异的。分析对于count(主键id)来说,InnoDB引擎会遍历整张表,把每一行的id值都取出来,返回给server层。server层拿到i

0 条评论
53 热度

MySQL学习笔记:给字符串类型的字段添加索引

发布于 2020-08-10

背景在一些业务场景下,我们可能需要给字符串类型的字段添加索引,例如:在学校中,一些用学生的编号进行登录的管理系统;一些支持邮箱登录的网站等。在登录验证过程中,我们势必要通过编号、邮箱来进行查询;那么,在数据量特别大的时候,为了不对表进行全局扫描,给这些字段加上索引,是非常有必要的。创建索引的方法以及

0 条评论
66 热度

MySQL学习笔记:普通索引和唯一索引的选择

发布于 2020-07-26

问题:在字段满足唯一性的情况下,应该选择普通索引还是唯一索引?下面分别从查询语句以及更新语句对性能进行分析。一、查询语句的比较查询语句示例:select*fromtable_1wherecolumn_1=*;1.如果采用“普通索引”,会去找到第一条满足where条件的记录,并且继续查找,直到出现第一

0 条评论
84 热度

MySQL学习笔记:乐观锁、悲观锁、死锁

发布于 2020-07-13

一、死锁1.死锁是什么?死锁是指两个或两个以上的进程在执行过程中,由于竞争资源而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去,进入无限等待的状态。2.示例死锁示例事务2等待事务1释放字段0=1的行锁,事务1等待事务2字段0=2的行锁,进入死锁状态。3.解决策略A.等待直到超时;可通过in

0 条评论
78 热度

MySQL事务和锁的机制

发布于 2020-07-11

一、支持事务的存储引擎在MySql中,只有InnoDB和BDB支持事务;myIsam等是不支持事务的。二、事务的四大特性ACID1.原子性Atomicity表示我们对数据库的一系列操作,要么全部成功,要么都是失败;有一个失败,就要回滚,使得前面的操作全部失败。实现方式:undolog2.一致性Con

0 条评论
95 热度

MySQL索引相关学习

发布于 2020-07-11

一、什么是索引?索引(Index)是帮助MySQL高效获取数据的数据结构。本质上是一个文件,文件中按照特定的顺序记录数据字段(可能是主键,可能是其他字段,可能是rowid,也可能是好几个字段)和实际数据存储位置。有了索引,我们只需要在索引里去检索这条数据就行了,找到数据存放在的磁盘地址后,就能找到相

0 条评论
87 热度

MySQL更新语句的执行过程

发布于 2020-07-11

(以innodb存储引擎为例)一、几个基本知识介绍1.InnoDB有一种缓冲池的技术,将磁盘读到的页放到一块内存区域中。我们读取数据时,并不是只将满足条件的数据加载到内存中,而是一块数据(局部性原理,我们需要的数据的附近的数据也有可能在未来会被读取),也就是数据页;页是一个存储引擎从磁盘读取数据到内

1 条评论
77 热度

MySQL查询语句的执行过程

发布于 2020-07-11

一、执行流程总览此图来源:https://www.cnblogs.com/GeekHuman/p/9982940.html二、详细分析1.查询缓存如果命中缓存,直接返回结果。MySql有一个缓存模块,默认是关闭的,并且在mysql8.0的版本中,已被移除;这个缓存模块应用场景非常有限,可以说是“鸡肋

0 条评论
73 热度

客户端和mysql服务端的通信

发布于 2020-07-11

[toc](环境:mysql8.0)1.通信类型长连接或短连接(mysql都支持,一般为长连接,放在连接池中)查看连接:showfullprocesslist查看连接参数:showglobalstatuslike'Thread%'(MySql中的参数有session和global两个级别:sessi

0 条评论
73 热度