mysql
文章平均质量分 71
背帆
你从容不迫地奔跑而去,就连这么漫长迷茫的前程都不畏惧。
展开
-
mysql锁
行级锁:InnoDB 引擎支持行级锁,而 MyISAM 引擎不支持行级锁。共享锁(S锁)满足读读共享,读写互斥。Next-Key Lock临键锁:Record Lock + Gap Lock 的组合,锁定一个范围,并且锁定记录本身。在可重复读隔离级别下,行级锁的种类除了有记录锁,还有间隙锁,Next-key-lock锁。在读已提交隔离级别下,行级锁的种类只有记录锁,也就是仅仅把一条记录锁上。表级锁:分为表锁、元数据锁(MDL)、意向锁、AUTO-INC锁。锁是对索引的锁,事务提交后才解锁。原创 2024-02-19 10:45:15 · 671 阅读 · 0 评论 -
MVCC简记
MVCC:多版本并发控制,控制事务能看到哪些版本的数据,哪些看不到。MVCC采用undolog链存储历史数据,每条记录有两个隐藏列id和undolog指针字段,每次查询生成readview,readview记录相对于该事务未提交的数据,通过readview与undolog比较,可以判断哪些数据是当前事务可见的。MVCC属于数据库事务中的技术,通过MVCC可以在无锁情况(死锁会减少)下实现mysql的可重复读与读已提交两种事务隔离级别。原创 2024-02-18 11:33:42 · 611 阅读 · 0 评论 -
mysql事务简记
mysql事务隔离级别,脏读、幻读、不可重复读原创 2024-02-18 11:14:29 · 322 阅读 · 0 评论 -
mysql查询分析explain
使用EXPLAIN| DESCRIBE查看语句具体执行计划,并不真正执行语句(在估计大致数据量时可以使用explain)原创 2024-02-17 18:13:31 · 485 阅读 · 0 评论 -
mysql索引简记
只在更新时,唯一索引必须读入内存判断索引是否唯一,普通索引可以把更新操作缓存在 change buffer 中,在下次查询需要访问这个数据页的时候,将数据页读入内存,然后执行 change buffer 中与这个页有关的操作。主键是聚集索引,索引的叶子节点存放表中一整行完整记录,索引组织表对比堆表,在海量并发的OLTP业务中能有更好的性能表现;:条件判断的字段在二级索引的B+树里,就会下推到存储引擎层过滤,再回表,减少了回表次数。中的索引都是二级索引,哪怕是主键索引也是二级索引,都要进行回表。原创 2024-02-16 20:30:47 · 1036 阅读 · 0 评论 -
mysql存储范式简记
范式与反范式,范式追求不同表中的不重复存储,反范式可以重复存储一张表里。每张表一定要有一个主键,自增主键只推荐用在非核心业,核心业务表推荐使用 UUID 或业务自定义主键,可以通过 JSON 数据类型进行反范式设计。原创 2024-02-16 20:25:29 · 308 阅读 · 0 评论 -
mysql分库分表
跨库跨表的合并和排序问题:数据分散存储到不同的数据库和表中,如果查询指定数据列表,或者需要对数据列表进行排序时,就变得异常复杂,可以依赖开源的分库分表中间件来处理。双写双读阶段:采用灰度策略,一部分流量读老表,一部分流量读新表,读新表的部分在一开始,还可以同时多读一次老表数据,本阶段建议施行至少两周;水平分库: 可以把一个表的数据(按数据行)分到多个不同的库,每个库只有这个表的部分数据,这些库可以分布在不同服务器。如果不停服,怎么保证数据一致性?写新读新阶段:已经完成了分表的迁移,老表数据可以做个冷备。原创 2024-02-15 21:24:06 · 409 阅读 · 0 评论 -
mysql读写分离
主从复制原理:从库数量增加,从库连接上来的 I/O 线程也多,主库要创建同样多的 log dump 线程来处理复制的请求,对主库资源消耗比较高,一般一主两从一备主。:异步把 binlog 复制到所有从库上,每个从库把 binlog 写到暂存日志中。:1、配置数据源并在代码中判断发给指定数据源。2、使用中间件代理如mycat。:主库写 binlog (二进制)日志,提交事务,并更新本地存储数据。:回放 binlog,并更新存储数据。:主从延迟影响读取从库的实时性。原创 2024-02-15 21:22:28 · 1627 阅读 · 0 评论 -
Mysql日志简记
缓存在 redo log buffer 里的 redo log 还是在内存中,redo log 会每秒刷盘,提交事务时也会刷盘,数据页和 undo 页都是靠这个机制保证持久化的。的方式,相当于一个环形,InnoDB 用 write pos 表示 redo log 当前记录写到的位置,用 checkpoint 表示当前要擦除的位置,如下图:write pos 追上了 checkpoint,mysql会阻塞刷盘并删除再更新checkpoint。:是 Innodb 存储引擎层生成的日志,实现了事务中的。原创 2024-02-06 15:07:05 · 1161 阅读 · 0 评论