摘要: MySQL主要分为 Server 层和存储引擎层: Server 层:主要包括连接器、查询缓存、分析器、优化器、执行器等,所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图,函数等,还有一个通用的日志模块 binglog 日志模块。 存储引擎: 主要负责数据的存储和读取。server 层 阅读全文
posted @ 2023-06-20 17:46 kisshappyboy 阅读(89) 评论(0) 推荐(0) 编辑
摘要: 表记录有两种读取方式。 快照读:读取的是快照版本。普通的SELECT就是快照读。通过mvcc来进行并发控制的,不用加锁。 当前读:读取的是最新版本。UPDATE、DELETE、INSERT、SELECT … LOCK IN SHARE MODE、SELECT … FOR UPDATE是当前读。 快照 阅读全文
posted @ 2023-06-20 13:24 kisshappyboy 阅读(504) 评论(0) 推荐(0) 编辑
摘要: MVCC 实现原理? MVCC(Multiversion concurrency control) 就是同一份数据保留多版本的一种方式,进而实现并发控制。在查询的时候,通过read view和版本链找到对应版本的数据。 作用:提升并发性能。对于高并发场景,MVCC比行级锁开销更小。 MVCC 实现原 阅读全文
posted @ 2023-06-20 13:14 kisshappyboy 阅读(289) 评论(0) 推荐(0) 编辑
摘要: MySQL有哪些锁? 按锁粒度分类,有行级锁、表级锁和页级锁。 行级锁是mysql中锁定粒度最细的一种锁。表示只针对当前操作的行进行加锁。行级锁能大大减少数据库操作的冲突,其加锁粒度最小,但加锁的开销也最大。行级锁的类型主要有三类: Record Lock,记录锁,也就是仅仅把一条记录锁上; Gap 阅读全文
posted @ 2023-06-20 12:59 kisshappyboy 阅读(222) 评论(0) 推荐(0) 编辑
摘要: 什么是索引下推 索引条件下推,也叫索引下推,英文全称Index Condition Pushdown,简称ICP。 索引下推是MySQL5.6新添加的特性,用于优化数据的查询。 在MySQL5.6之前,通过使用非主键索引进行查询的时候,存储引擎通过索引查询数据,然后将结果返回给MySQL serve 阅读全文
posted @ 2023-06-20 10:46 kisshappyboy 阅读(127) 评论(0) 推荐(0) 编辑
摘要: 什么是索引? 索引是存储引擎用于提高数据库表的访问速度的一种数据结构。它可以比作一本字典的目录,可以帮你快速找到对应的记录。 索引一般存储在磁盘的文件中,它是占用物理空间的。 索引的优缺点? 优点: 加快数据查找的速度 为用来排序或者是分组的字段添加索引,可以加快分组和排序的速度 加快表与表之间的连 阅读全文
posted @ 2023-06-20 10:39 kisshappyboy 阅读(46) 评论(0) 推荐(0) 编辑
摘要: 什么是MySQL MySQL是一个关系型数据库,它采用表的形式来存储数据。你可以理解成是Excel表格,既然是表的形式存储数据,就有表结构(行和列)。行代表每一行数据,列代表该行中的每个值。列上的值是有数据类型的,比如:整数、字符串、日期等等。 数据库的三大范式 第一范式1NF 确保数据库表字段的原 阅读全文
posted @ 2023-06-20 09:37 kisshappyboy 阅读(239) 评论(0) 推荐(0) 编辑