B+树索引 置顶 | 发表于 2022-06-03 | 更新于 2024-09-02 | 分类于 MySQL 本文字数: 22k | 阅读时长 ≈ 20 分钟 思考并回答以下问题: 有几个索引就有几个B+树,怎么理解? 主键索引和非主键索引有什么区别?什么是回表?为什么要回表? 一个数据页中用户记录的主键值必须大于上一个页中用户记录的主键值。这个过程我们也可以称为页分裂。怎么理解? 通过主键值去查找某条记录最多只需要做4个页面内的查找(查找3个目录项页和一个用户记录页)。怎么理解? 阅读全文 »
为什么MySQL用B+树做索引? 置顶 | 发表于 2020-05-07 | 更新于 2024-09-02 | 分类于 MySQL 本文字数: 9.4k | 阅读时长 ≈ 9 分钟 思考并回答以下问题: 二叉查找树有什么问题,为什么演化成平衡二叉树? B+树就是从二叉查找树,平衡二叉树和B树这三种数据结构演化来的。都是二分法。怎么理解? 聚簇索引和非聚簇索引的区别在于主键。怎么理解? 平衡二叉树又称AVL树。每个节点的左右子树的高度差不能超过1。怎么理解? 为什么把尽量多的数据放进磁盘块中? B+树索引按照存储方式的不同分为聚集索引和非聚集索引。为什么? 为什么要寻找一种单个节点可以存储多个键值和数据的平衡树? 阅读全文 »
MySQL的事务隔离级别 置顶 | 发表于 2020-04-23 | 更新于 2024-09-02 | 分类于 MySQL 本文字数: 7.7k | 阅读时长 ≈ 7 分钟 思考并回答以下问题: 脏读是一个事务在处理过程中读取了另外一个事务未提交的数据。为什么会发生脏读? 不可重复读,是指一个事务范围内,多次查询某个数据,却得到不同的结果。怎么理解? 幻读和不可重复读都是读取了另一条已经提交的事务(这点就脏读不同),所不同的是不可重复读查询的都是同一个数据项,而幻读针对的是一批数据整体(比如数据的个数)。怎么理解? 隔离程度越强,事务的执行效率越低。为什么? MySQL的默认事务隔离级别是哪个? 阅读全文 »
数据库分片(Database Sharding)详解 置顶 | 发表于 2020-01-06 | 更新于 2024-09-02 | 分类于 MySQL 本文字数: 7.2k | 阅读时长 ≈ 7 分钟 思考并回答以下问题: 阅读全文 »
MySQL事务的ACID特性 置顶 | 发表于 2018-11-27 | 更新于 2024-09-02 | 分类于 MySQL 本文字数: 24k | 阅读时长 ≈ 22 分钟 思考并回答以下问题: 事务的隔离性通过事务的隔离级别实现,而事务的隔离级别则是通过锁机制实现。有哪些事务隔离级别? 为什么使用间隙锁能避免幻读现象? 阅读全文 »
MySQL锁机制 置顶 | 发表于 2018-11-26 | 更新于 2024-09-02 | 分类于 MySQL 本文字数: 41k | 阅读时长 ≈ 37 分钟 思考并回答以下问题: 只有通过索引字段检索数据的查询语句或者更新语句,才可能施加行级锁,否则InnoDB将使用表级锁。怎么理解? 给MyISAM表施加表级锁不会导致死锁问题的发生,给InnoDB表施加行级锁可能导致死锁问题的发生。为什么? MySQL为什么会存在内存中的数据与外存中的数据不同步? for update必须写在事务吗? InnoDB存储引擎支持行级锁和表级锁吗? 为什么读锁也称为共享锁,写锁也称为排他锁或者独占锁? lock tables account read;是什么意思? 使用low_priority write选项降低写锁的优先级,以便MySQL客户机A及时取得读锁,不被饿死。怎么理解? 阅读全文 »
Nginx负载均衡与高可用 置顶 | 发表于 2018-04-07 | 更新于 2024-09-02 | 分类于 Nginx 本文字数: 18k | 阅读时长 ≈ 16 分钟 思考并回答以下问题: 阅读全文 »
go并发之美:多个channel合并/多个数据流合并 发表于 2024-07-31 | 更新于 2024-09-02 | 分类于 Go 本文字数: 42 | 阅读时长 ≈ 1 分钟 思考并回答以下问题: 阅读全文 »