
数据库
郑琨51
好好学习,只争朝夕
展开
-
InnoDB执行引擎的BufferPool缓存机制
这么复杂的机制,是为了保证并发,因为硬盘的随机读写性能是非常差的,通过这样的机制,可以保证数据不被丢失的同时,有很高的读写性能,可以在较高机器配置下抗下几千的读写请求。 Mysql这套机制可以保证每个更新请求都是先更新内存BufferPool,然后顺序写日志,保证各种异常情况的数据一致性。 ...原创 2020-09-24 23:10:54 · 205 阅读 · 0 评论 -
Mysql MVCC多版本并发控制
Mysql MVCC多版本并发控制简介Undo日志版本链与read view机制详解一致性视图 read-view构成可重复读和读已提交差别比对规则总结 简介 Mysql在可重复读级别下,同样的sql在一个事务里面多次执行查询结果相同,即使有其他事务对数据有修改也不会影响当前事务的查询结果。 这个隔离就是通过MVCC(多版本并发控制 Multi-Version Concurrency Control),对同一行的数据的读和写两个操作是不会通过加锁互斥来保证隔离性,避免频繁加互斥锁。 串行化隔离级别为了保证隔原创 2020-09-24 23:05:02 · 139 阅读 · 0 评论 -
Mysql锁学习笔记
Mysql锁学习笔记锁分类表锁行锁总结行锁与事务隔离级别案例分析读未提交:读已提交可重复读串行化间隙锁(Gap Lock)临键锁(Next-key Locks)Mysql锁其他特点锁主要是加在索引上,如果对非索引字段更新,行锁可能会变表锁锁优化建议 锁分类 从性能上分,乐观锁和悲观锁 从对数据库操作上分,读锁和写锁(都是悲观锁) 读锁 (共享锁,shared锁)多个会话可以同时读,不能写 写锁 (排它锁,exclusive锁)只有一个会话可以读写,其他会话阻塞,知道当前获取的会话释放锁,其他会话才能执行原创 2020-09-20 15:58:14 · 177 阅读 · 0 评论 -
Mysql事务隔离
Mysql事务隔离事务隔离为什么要有事务隔离事务及其ACID属性事务并发带来的问题 事务隔离 为什么要有事务隔离 数据库会并发执行多个事务,不同的事务可能会对同一批数据进行增删改查操作,就会引起数据脏写、脏读、不可重复读、幻读等情况。本质上都是由于事务之间的并发导致,简单点说就是事务之间互相影响,导致数据不一致问题。 事务隔离机制就是解决多事务并发的一种方式。 事务及其ACID属性 事务是由一组sql组成的逻辑处理单元。具有ACID四个属性: 原子性(Atomicity) 事务是一个原子操作单元,不可分割原创 2020-09-18 00:16:57 · 82 阅读 · 0 评论 -
一文搞懂mysql索引
mysql索引索引是啥索引类型数据库数据存储MyISAMInnoDB聚集索引和非聚集索引聚集索引非聚集索引为何应该使用自增整型主键InnoDB非聚集索引回表查询索引覆盖联合索引最左匹配原则 索引是啥 索引是一种排好序的数据结构,mysql使用这种结构能够高效获取数据 索引类型 二叉树 在一些情况下回退化为链表。 hash 只能实现= 和in 查找,无法范围查找,可能有哈希冲突。查找复杂度低。 红黑树 树的高度在数据量大的情况下太高,效率较低。 B树 mysql使用B+树,非叶子节点不存储数据,只存储索引,原创 2020-08-27 23:12:47 · 445 阅读 · 0 评论