随笔分类 -  MySQL

摘要:全表扫描这种情况的查询,很多缓冲页其实只会被访问一次,但是它却只因为被访问了一次而进入到 young 区域,从而导致热点数据被替换了 LRU 链表中 young 区域就是热点数据,只要我们提高进入到 young 区域的门槛,就能有效地保证 young 区域里的热点数据不会被替换掉 MySQL 是这样 阅读全文
posted @ 2024-03-25 20:24 变体精灵 阅读(54) 评论(0) 推荐(0) 编辑
摘要:count(*): 底层会转化为 count(0) 来处理,默认横向扫描聚集索引树,如果有二级索引就扫描二级索引树(因为二级索引树更小,扫描成本低),扫描到一行记录之后,将该记录返回给 Server 层,由于参数是 0,不为 NULL,所以不需要读取记录中的任何字段,直接将 count 变量加 1 阅读全文
posted @ 2023-12-12 17:26 变体精灵 阅读(117) 评论(0) 推荐(0) 编辑
摘要:1、字符串函数 2、数值函数 3、日期和时间函数 4、流程函数 5、JSON 函数 阅读全文
posted @ 2023-11-27 18:20 变体精灵 阅读(11) 评论(0) 推荐(0) 编辑
摘要:在实际运行的时候,可以参考上图的优先级,但是很少有人能将这些优先级熟练记忆,很多情况下我们都是用 () 将需要优先的操作括起来,这样既起到了优先的作用,又使得其它用户看起来更易于理解 阅读全文
posted @ 2023-11-27 17:24 变体精灵 阅读(25) 评论(0) 推荐(0) 编辑
摘要:一、概述 varchar(n) 括号中的 n 代表最大可容纳的字符的个数,注意,并不是代表字节的个数 一个中文和一个英文都是一个字符,只不过 mysql 的编码格式不同时,一个英文和一个中文所占用的存储字节数不同,一个英文字符占用的字节数是 1,中文字符和英文字符不同,以下是常用的编码格式下中文字符 阅读全文
posted @ 2023-11-27 11:29 变体精灵 阅读(339) 评论(0) 推荐(0) 编辑
摘要:一、概述 一条 select 语句的执行流程大致如下: 那么一条 Update 语句,期间会发生什么呢?由于更新语句会涉及到 3 个比较重要的日志(undo log、redo log、binlog),所以我们需要先了解一下这三个日志的作用分别是什么 undo log: InnoDB 存储引擎层生成的 阅读全文
posted @ 2023-11-25 16:44 变体精灵 阅读(931) 评论(0) 推荐(1) 编辑
摘要:一、概述 InnoDB 默认 page 页大小为 16KB,Linux 操作系统文件交互的最小单位是 4KB,而磁盘的最小交互单位是扇区,大小一般为 512B 假设 InnoDB 存储引擎在向磁盘写入数据时,Mysql 服务器突然宕机,那么就有可能只有一部分数据页写入到磁盘,另外一部分数据发生丢失, 阅读全文
posted @ 2023-11-02 16:23 变体精灵 阅读(174) 评论(0) 推荐(1) 编辑
摘要:Mysql 5.7 InnoDB 存储引擎整体逻辑架构图 一、索引概述 CREATE TABLE `t_user`( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键 id', `name` varchar(32) NOT NULL 阅读全文
posted @ 2023-11-02 10:23 变体精灵 阅读(369) 评论(0) 推荐(0) 编辑
摘要:Mysql 5.7 InnoDB 存储引擎整体逻辑架构图 一、Buffer Pool 概述 InnoDB 作为一个存储引擎,为了降低磁盘 IO,提升读写性能,必然有相应的缓冲池机制,这个缓冲池就是 Buffer Pool 为了方便理解,对于磁盘上的数据所在的页,叫做数据页,当数据页加载进 Buffe 阅读全文
posted @ 2023-10-25 11:34 变体精灵 阅读(477) 评论(0) 推荐(1) 编辑
摘要:整个 SELECT 语句查询流程 1、客户端/服务端通信协议(Connectors) Mysql 客户端/服务端通讯协议是半双工的,这就意味着在任意时刻只能有一端能发送数据,要么是客户端向服务端发送数据,要么是服务端向客户端发送数据,这两个动作不能同时进行,一旦一端开始发送数据,另外一端要完整的接收 阅读全文
posted @ 2023-10-14 17:32 变体精灵 阅读(102) 评论(0) 推荐(0) 编辑
摘要:网上找的一张 Mysql 逻辑架构图 整个 Mysql 逻辑架构大致可以分为 网络连接层、数据库服务层、存储引擎层、文件系统层 一、网络连接层客户端连接器(Mysql Connectors) 是 Mysql 官方为各种开发语言和平台提供的访问 Mysql 数据库的驱动程序,它实现了对应语言访问数据库 阅读全文
posted @ 2023-10-14 16:43 变体精灵 阅读(48) 评论(0) 推荐(0) 编辑
摘要:char 和 varchar 类型相似,都是用来存储字符串,但是它们 存储 和 检索 的方式不同,char 属于固定长度的字符类型,而 varchar 属于长度可变的字符类型 一、准备数据 创建一张 test 表,建表语句如下 CREATE TABLE `test` ( `id` int NOT N 阅读全文
posted @ 2022-05-14 17:23 变体精灵 阅读(408) 评论(0) 推荐(0) 编辑
摘要:一、数据准备 创建 employee 表 CREATE TABLE `employee` ( `id` int NOT NULL AUTO_INCREMENT COMMENT '主键 id', `name` varchar(32) NOT NULL DEFAULT '' COMMENT '姓名', 阅读全文
posted @ 2022-05-13 23:06 变体精灵 阅读(1120) 评论(1) 推荐(1) 编辑
摘要:假设存在如下表 employee employee 表中索引如下 存在主键索引 id,普通索引 idx_name,联合索引 idx_name_age_gender 当通过 name 字段进行查询时,使用 explain 关键字查看 SQL 执行计划 possible_key 中告诉我们可选的索引有 阅读全文
posted @ 2022-05-03 20:37 变体精灵 阅读(50) 评论(0) 推荐(0) 编辑
摘要:这个问题可以进行拆解来回答 一、为什么使用整形 Mysql Innodb 存储引擎是基于聚集索引来实现的,如果存在主键的情况下,主键索引就是聚集索引,Mysql 主键索引维护了主键和完整的表数据 以下表为例 基于这张表建立的主键索引如下 索引查找的时候都是从 B+ 树的根节点开始,先将根节点所在的 阅读全文
posted @ 2022-04-30 23:07 变体精灵 阅读(1219) 评论(0) 推荐(0) 编辑
摘要:1、聚集索引 索引的叶子节点包含了完整的表数据,那么这种索引就称为聚集索引 聚集索引是将索引列字段和行记录数据维护在了一起,它的叶子节点存储的是 索引列字段 + 完整的行记录数据,通过聚集索引能直接获取到整行数据 Innodb 的主键索引就是基于聚集索引实现的 例如数据库中有一张 user 表,id 阅读全文
posted @ 2022-04-28 23:06 变体精灵 阅读(7644) 评论(0) 推荐(1) 编辑
摘要:union 和 union all 都是对返回的结果集进行合并,那么它们有没有什么区别呢? 先看一下使用 union 和 union all 查询返回的结果集 // 使用 union 进行查询 select * from t_merchant_tmp where F_id in (34,28,13) 阅读全文
posted @ 2022-04-24 16:31 变体精灵 阅读(190) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示