随笔分类 - mysql
摘要:mysql的行索是在引擎实现的。但并不是所有引擎都支持行锁。不支持行锁的引擎只能使用表锁。 不支持行锁意味着并发控制只能使用表锁,对于这种引擎的表,同一张表上任何时刻只能有一个更新在执行,这就会影响到业务并发度 从两阶段锁说起 事务 B 的 update 语句会被阻塞,直到事务 A 执行 commi
阅读全文
摘要:根据加锁的范围,MySQL 里面的锁大致可以分成全局锁、表级锁和行锁三类。 全局锁 全局锁就是对整个数据库实例加锁。MySQL 提供了一个加全局读锁的方法,命令是 Flush tables with read lock (FTWRL)。当你需要让整个库处于只读状态的时候,可以使用这个命令,之后其他线
阅读全文
摘要:深入浅出索引 索引的常见模型 哈希有序数组搜索树 哈希 哈希表是一种以键 - 值(key-value)存储数据的结构,我们只要输入待查找的键即 key,就可以找到其对应的值即 Value。多个 key 值经过哈希函数的换算,会出现同一个值的情况。处理这种情况的一种方法是,拉出一个链表。 因为不是有序
阅读全文
摘要:事务隔离 事务的具体含义 事务就是要保证一组数据库操作,要么全部成功,要么全部失败。在MySQL中,事务支持是在引擎层实现的。MySQL是一个多引擎的系统,但不是所有的引擎都支持事务。比如MyISAM就不支持事务,这也是MyISAM被InnoDB取代的重要原因之一 隔离性与隔离级别 隔离性针对的数据
阅读全文
摘要:一条更新SQL的执行流程 更新语句的整体流程 连接数据库清空当前表对应的所有缓存分析器分析词法和语法优化器决定使用什么索引执行器负责具体执行 重要的日志模块:redo log MySQL的WAL技术 全称是Write-Ahead LoggingInnoDB 引擎特有的日志先写日志,再写磁盘详解如下:
阅读全文
摘要:一条查询SQL在MySQL中的执行经历 大体上来分,Mysql分为Server层和存储引擎层两部分 Server层 连接器查询缓存分析器优化器执行器等以及所有的内置函数所有跨存储引擎的功能,比如存储过程、触发器、视图等等 存储引擎 负责数据的存储和提取插件式的架构模式,支持多个存储引擎,如InnoD
阅读全文
浙公网安备 33010602011771号