首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
MySQL
HigginCui
创建于2023-08-21
订阅专栏
基于MySQL实战45讲的学习笔记
等 1 人订阅
共21篇文章
创建于2023-08-21
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
21 | 为什么我只改一行的语句,锁这么多?
间隙锁在可重复读隔离级别下才有效,所以本篇文章默认都是可重复读隔离级别。 间隙锁加锁规则里面,包含 2个"原则"+ 2个“优化”+ 1个“bug”: 原则1:加锁的基本单位是next-key lock
20 | 幻读是什么,幻读有什么问题?
幻读是什么 先创建一张表,并插入6个数据。 插入6条数据 session A里执行了3次查询,分别是Q1,Q2,Q3,他们SQL相同,都是"select * from t where d =5 for
19 | 为什么我只查询一行的语句,也会执行这么慢
先构造一个表t,在其中插入10W条数据。 第一类:查询长时间不返回 执行如下SQL,长时间不返回。 出现这种情况,大概率表t被锁住了。一般是先执行一下show processlist命令,查看当前语句
18 | 为什么SQL语句逻辑相同,性能差异巨大?
案例一:条件字段函数操作 有一个交易表tradelog,包含交易流水号(tradeid)、交易员id(operator)、交易时间(t_modified)等字段。 这个表记录了2016-2018年的所
17 | 如何正确地显示随机消息
从表中随机取数需要如何处理?直接使用order by rand() 比如这个语句:select word from words order by rand() limit 3;
16 | "order by"是怎么工作的
全字段排序 查询的SQL如下: 在city字段加上索引后,用explain命令查看执行情况: Extra中的"Using filesort"表示:需要排序。 MySQL为每个线程分配一块内存用于排序,
15 | 前期问题梳理(日志+索引)
日志和索引相关问题 奥术大师大多adad阿达奥术大师大多adad阿达奥术大师大多adad阿达奥术大师大多adad阿达奥术大师大多adad阿达奥术大师大多adad阿达奥术大师大多adad阿达奥术大师大多
14 | count(*)慢,如何处理
count(*)的实现方式 在不同的存储引擎中,无过滤条件的count(*)有不同的实现方式: MyISAM引擎:把表的总行数存在磁盘上,因此执行count(*)直接返回这个数,效率很高。 InnoD
13 |为什么表数据删除一半,表文件大小不变
InnoDB表结构存放 一个InnoDB的表包含2部分: 表结构的定义 数据 不同版本的区别: MySQL8.0版本之前:表结构是存在以fm为后缀的文件里。 MySQL8.0版本之后:允许把表结构定义
12 | 为什么我的MySQL会“抖”一下?
现象 执行一条SQL语句,正常执行的时候很快,但是有时不知怎么回事,它就会变得特别慢,并且这样的场景很难复现,它不只随机,而且持续时间很短,看上去就像是数据库“抖”了一下。 SQL语句为什么变“慢”了
11 | 怎么给字符串字段加索引?
假设现在维护一个邮箱登录系统,用户表的定义如下: 由于使用邮箱登录,业务查询代码如下: 如果email这个字段上没有索引,那么这个语句只能做全表扫描。 MySql支持前缀索引,可以定义字符串的一部分作
10 | MySQL为什么有时候会选错索引?
先建一个简单的表: 然后往表 t 中插入 10 万行记录,取值按整数递增,即:(1,1,1),(2,2,2),(3,3,3) 直到 (100000,100000,100000)。 使用存储过程插入数据
09 | 普通索引和唯一索引,应该怎么选择
查询过程 假设一个ID为主键的表,表中还有一列k,k上有索引。 查询的语句为: 表中 R1~R5 的 (ID,k) 值分别为 (100,1)、(200,2)、(300,3)、(500,5) 和 (60
08 | 事务到底是隔离的还是不隔离的?
事务获取到行锁时,读到的数据是什么? 事务A要更新一行,假设此时事务B拥有这一行的行锁,那么事务A会被锁住,进入等待状态,事务A等到自己获取到行锁时,读到的值是什么? 示例表: 此时有3个事务在执行:
07 | 行锁功过:怎么减少行锁对性能的影响?
MySQL的行锁是引擎层自己实现的,但是MyISAM引擎不支持行锁,不支持行锁意味着只能使用表锁,InnoDB是支持行锁的,也是使用InnoDB代替MyISAM的主要原因之一。 从两阶段说起 id是表
01 | MySQL基础架构:一条查询SQL如何执行
MySQL逻辑架构图 MySQL可分为Server层和存储引擎层两部分。 Server层:包括连接器、查询缓存、分析器、优化器、执行器等,涵盖MySQL的大多数核心服务功能,以及所有的内置函数。 存储
02 | 日志系统:一条SQL更新语句是如何执行的?
重要的日志模块:redo log MySQL里常说的WAL技术(Write-Ahead Logging),关键点就是先写日志,再写磁盘。 具体来说,当有一条记录需要更新时,InnoDB引擎会先把记录写
03 | 事务隔离
隔离性与隔离级别 ACID A:Atomicity,原子性; C:Consistency,一致性; I:Isolation,隔离性; D:Durability,持久性; 当数据库有多个事务同时执行,可
04 | 深入浅出索引(上)
索引的常见模型 索引的出现就是为了提高数据查询的效率。 用于提高读写效率的数据结构有很多,常见的几种:哈希表、有序数组、搜索树。 哈希表 哈希表是一种以 键-值(key-value)存储数据的结构,哈
05 | 深入浅出索引(下)
如果执行下面语句,需要执行几次树的操作,会扫描多少行? 当前表的建表语句如下: 插入数据如下 看下当前这条select * from T where k between 3 and 5;的SQL语句执
下一页