随笔分类 -  mysql45讲

摘要:`MySQL`的行锁在引擎层由各个引擎自己实现的,但并不是所有的引擎都支持行锁。 不支持行锁意味着并发控制只能使用表锁,对于这种引擎的表,同一张表任何时刻只能有一个更新在执行,这会影响到业务并发度。 引擎下的事务中,行锁是需要的时候才加上的,但并不是不需要了立刻释放,而是要等到事务结束时(commi 阅读全文
posted @ 2020-03-30 10:55 倚楼听风z 阅读(162) 评论(0) 推荐(0)
摘要:`MVCC` 在 里,有两个"视图"个概念 1. 一个是 ,它是一个用查询语句定义的虚拟表,在调用的时候执行查询语句并生成结果。 2. 另一个是 在实现 时用到的一致性读视图,即 ,用于支持 (`Read Committed RR Repeatable Read`,可重复读)隔离级别的实现。 里面每 阅读全文
posted @ 2020-03-30 10:53 倚楼听风z 阅读(179) 评论(0) 推荐(0)
摘要:在下列表T中,执行 ,需要执行几次树的搜索操作? 语句执行流程: 1. 在k索引树上找到k值为3的记录,取得ID为300 2. 再到ID索引树上找到ID为300对应的R3记录 3. 在k索引树上找到k值为5的记录,取得ID为500 4. 再回到ID索引树上找到ID为500对应的R4记录 5. 在k索 阅读全文
posted @ 2020-03-30 10:52 倚楼听风z 阅读(164) 评论(0) 推荐(0)
摘要:索引 作用:提高数据查询的效率 常用索引模型 哈希表 有序数组 搜索树 哈希表 _以键值对的形式存储,适合于只有等值查询的场景。_ 用一个哈希函数把 换算成一个确定的位置,然后把 这个位置的数组中。一个 会对应一个数组,数组中会有多个 ,`value`并不是有序的。 查找时先通过哈希函数算出 ,找到 阅读全文
posted @ 2020-03-30 10:50 倚楼听风z 阅读(180) 评论(0) 推荐(0)
摘要:数据库锁的初衷:处理并发问题 全局锁 表锁 行锁 全局锁:对整个数据库实例加锁。 提供了一个加全局读锁的方法(FTWRL), ,之后整个数据库处于读锁状态。 使用场景:全库逻辑备份,就是说把整库每个表都select出来存成文本。 这个库变成只读状态后: 如果在主库上备份,备份期间都不能执行更新,业务 阅读全文
posted @ 2020-03-30 10:49 倚楼听风z 阅读(200) 评论(0) 推荐(0)
摘要:事务 保证一组数据库操作,要么全部成功,要么全部失败。 特性 原子性: 一致性: 隔离性: 持久性: 当数据库中有多个事务同时执行的时候,就可能出现脏读( )、不可重复读( )、幻读( )的问题,为了解决这些问题,就有了“隔离级别”的概念。隔离的越严实,效率就会越低,需要在两者之间找一个平衡点。 事 阅读全文
posted @ 2020-03-30 10:48 倚楼听风z 阅读(208) 评论(0) 推荐(0)
摘要::重做日志。每当有操作时,在数据变更之前将操作写入 ,这样当发生掉电之类的情况时系统可以在重启后继续操作 :称为撤销日志,当一些变更执行到一半无法完成时,可以根据撤销日志恢复到变更之间的状态。 位于存储引擎层, 中有使用。 的`redo log`是固定大小,比如配置一组4个文件,每个文件的大小为1G 阅读全文
posted @ 2020-03-30 10:46 倚楼听风z 阅读(215) 评论(0) 推荐(0)
摘要:`MySQL`分为两部分: 层 包含连接器、查询缓存、分析器、优化器、执行器等,涵盖 的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。 存储引擎层 负责数据的存储和提取。其架构模式是插件式的,支持 、`My 阅读全文
posted @ 2020-03-30 10:44 倚楼听风z 阅读(250) 评论(0) 推荐(0)