随笔分类 -  数据库

摘要:1 前言 我们这节讨论下 记录锁+间隙锁可以防止删除操作而导致的幻读吗?答案是可以的哈。 2 什么是幻读 首先来看看 MySQL 文档是怎么定义幻读(Phantom Read)的: The so-called phantom problem occurs within a transaction w 阅读全文
posted @ 2023-05-26 07:46 酷酷- 阅读(118) 评论(0) 推荐(0)
摘要:1 前言 我们这节讨论下 update 语句修改数据库数据的时候,where 条件没有带上索引,会导致锁表么,说个前提,接下来说的案例都是基于 InnoDB 存储引擎,且事务的隔离级别是可重复读。 2 为什么会发生这种现象 InnoDB 存储引擎的默认事务隔离级别是「可重复读」,但是在这个隔离级别下 阅读全文
posted @ 2023-05-26 07:03 酷酷- 阅读(2004) 评论(0) 推荐(0)
摘要:1 前言 上节我们看了MySQL有哪些锁,那么这节我们就来看看MySQL的加锁过程,什么样的操作下加了什么样的锁等。 我先在这里给大家补充一个知识点:比如我的主键有:1、3、5 1的间隙锁是:(-oo,1) 1的next-key锁也就是临键锁是:(-oo,1] 3的间隙锁是:(1,3) 3的next 阅读全文
posted @ 2023-05-25 16:46 酷酷- 阅读(708) 评论(0) 推荐(0)
摘要:1 前言 我们这节来看看MySQL中的锁,采用 Q&A 的形式,看起来会比较轻松。 2 锁的分类 在 MySQL 里,根据加锁的范围,可以分为全局锁、表级锁和行锁三类。 3 全局锁 3.1 全局锁是怎么用的? 要使用全局锁,则要执行这条命令: flush tables with read lock 阅读全文
posted @ 2023-05-25 10:13 酷酷- 阅读(92) 评论(0) 推荐(0)
摘要:1 前言 我们上节MySQL InnoDB 引擎的默认隔离级别虽然是「可重复读」,但是它很大程度上避免幻读现象(并不是完全解决了),解决的方案有两种: 针对快照读(普通 select 语句),是通过 MVCC 方式解决了幻读,因为可重复读隔离级别下,事务执行过程中看到的数据,一直跟这个事务启动时看到 阅读全文
posted @ 2023-05-24 10:40 酷酷- 阅读(391) 评论(0) 推荐(0)
摘要:1 前言 这节我们来看看 MySQL中的事务,比如我们生活中的转账,要保证转账业务里的所有数据库的操作是不可分割的,要么全部执行成功 ,要么全部失败,不允许出现中间状态的数据。数据库中的「事务(Transaction)」就能达到这样的效果。 我们在转账操作前先开启事务,等所有数据库操作执行完成后,才 阅读全文
posted @ 2023-05-24 10:19 酷酷- 阅读(111) 评论(0) 推荐(0)
摘要:1 前言 这节我们来看个小问题: 题目1:一个表有多个字段,其中 name 是索引字段,其他非索引,id 拥有自增主键索引。 题目2:一个表有2个字段,其中 name 是索引字段,id 拥有自增主键索引。 上面两张表,分别执行以下查询语句: select * from s where name li 阅读全文
posted @ 2023-05-24 07:13 酷酷- 阅读(192) 评论(0) 推荐(0)
摘要:1 前言 在工作中,如果我们想提高一条语句查询速度,通常都会想对字段建立索引。 但是索引并不是万能的。建立了索引,并不意味着任何查询语句都能走索引扫描。 稍不注意,可能你写的查询语句是会导致索引失效,从而走了全表扫描,虽然查询的结果没问题,但是查询的性能大大降低。 今天就来跟大家盘一盘,常见的 6 阅读全文
posted @ 2023-05-24 07:01 酷酷- 阅读(96) 评论(0) 推荐(0)
摘要:1 前言 作为在后端圈开车的多年老司机,是不是经常听到过: “MySQL 单表最好不要超过 2000W” “单表超过 2000W 就要考虑数据迁移了” “你这个表数据都马上要到 2000W 了,难怪查询速度慢” 这些名言民语就和 “群里只讨论技术,不开车,开车速度不要超过 120 码,否则自动踢群” 阅读全文
posted @ 2023-05-24 06:43 酷酷- 阅读(127) 评论(0) 推荐(0)
摘要:1 前言 这节我们来聊聊索引哈。 2 什么是索引 当你想查阅书中某个知识的内容,你会选择一页一页的找呢?还是在书的目录去找呢? 傻瓜都知道时间是宝贵的,当然是选择在书的目录去找,找到后再翻到对应的页。书中的目录,就是充当索引的角色,方便我们快速查找书中的内容,所以索引是以空间换时间的设计思想。 那换 阅读全文
posted @ 2023-05-23 15:24 酷酷- 阅读(93) 评论(0) 推荐(0)
摘要:1 前言 不知道大家有没有困惑,我们的每行记录里的NULL值都是如何存放的,一行能无限制的放数据么有没有大小边界呢?要想知道这些,就要来看看MySQL 一行记录的存储结构。 2 MySQL 的数据存放在哪个文件? 大家都知道 MySQL 的数据都是保存在磁盘的,那具体是保存在哪个文件呢? MySQL 阅读全文
posted @ 2023-05-23 11:05 酷酷- 阅读(141) 评论(0) 推荐(0)
摘要:1 前言 我们学习 SQL 的时候,大家肯定第一个先学到的就是 select 查询语句了,比如下面这句查询语句: // 在 product 表中,查询 id = 1 的记录 select * from product where id = 1; 但是有没有想过,MySQL 执行一条 select 查 阅读全文
posted @ 2023-05-23 10:17 酷酷- 阅读(130) 评论(0) 推荐(0)
摘要:1 前言 我们本节来看看计数功能,大家可能都有用过count(*) 、 count(1)或者count(某个字段)那么哪种好呢?我们来讨论讨论。 2 count理解 当我们对一张数据表中的记录进行统计的时候,习惯都会使用 count 函数来统计,但是 count 函数传入的参数有很多种,比如 cou 阅读全文
posted @ 2023-05-23 07:37 酷酷- 阅读(108) 评论(0) 推荐(0)
摘要:1 前言 我们本节来看看我们常说的索引下推。 2 什么是索引下推 索引下推(Index Condition Pushdown,简称ICP),是MySQL5.6版本的新特性,用于优化数据查询。 不使用索引条件下推优化时存储引擎通过索引检索到数据,然后返回给MySQL服务器,服务器然后判断数据是否符合条 阅读全文
posted @ 2023-05-23 06:59 酷酷- 阅读(140) 评论(0) 推荐(0)
摘要:1 前言 我们本节看一个小问题,就是我们平时用的varchar(n)能存储几个汉字。 2 一个中文汉字占多少字节与编码有关 在mysql中,一个中文汉字所占的字节数与编码格式有关:如果是GBK编码,则一个中文汉字占2个字节;如果是UTF8编码,则一个中文汉字占3个字节,而英文字母占1字节。 UTF8 阅读全文
posted @ 2023-05-23 06:38 酷酷- 阅读(1617) 评论(0) 推荐(0)
摘要:1 前言 我们本节放松放松,看些基础的东西,来回顾下MySQL的字段类型。MySQL中定义数据字段的类型对你数据库的优化是非常重要的。 MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。 主要包括以下五大类: 整数类型:BIT、BOOL、TINY INT、SMALL I 阅读全文
posted @ 2023-05-23 06:27 酷酷- 阅读(214) 评论(0) 推荐(0)
摘要:1 前言 我们都知道 MySQL 里 InnoDB 存储引擎是采用 B+ 树来组织数据的。但是大家知道 B+ 树里的节点里存放的是什么呢?查询数据的过程又是怎样的?那么这节我们从数据页的角度看 B+ 树,看看每个节点长啥样。 2 InnoDB 是如何存储数据的? MySQL 支持多种存储引擎,不同的 阅读全文
posted @ 2023-05-22 15:44 酷酷- 阅读(108) 评论(0) 推荐(0)
摘要:1 前言 本节我们来讨论讨论为什么MySQL 采用 B+ 树作为索引。 要解释这个问题,其实不单单要从数据结构的角度出发,我们要知道的是我们的数据都在哪里,是不是都在磁盘,那磁盘最大的瓶颈是不是就是IO次数,那我们想要的是不是就是经历最少的IO获取到我们想要的数据呢?是不是这个道理,那我们就一步步来 阅读全文
posted @ 2023-05-22 15:27 酷酷- 阅读(100) 评论(0) 推荐(0)
摘要:1 前言 最近看阿里云的RDS数据库的数据分析,发现人家统计信息很快,于是很好奇人家怎么收集的,其实就是调的PGSQL的语句来收集的,我们这节就来看看这些数据怎么来的哈。如下图RDS的收集信息: 2 数据收集 函数表 函数名返回类型描述 pg_size_pretty(bigint|numeric) 阅读全文
posted @ 2023-04-19 08:29 酷酷- 阅读(282) 评论(0) 推荐(0)
摘要:CREATE TABLE `user_operation_log` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL 阅读全文
posted @ 2023-04-18 16:17 酷酷- 阅读(33) 评论(0) 推荐(0)