MySQL
文章平均质量分 90
mysql
c1z
这个作者很懒,什么都没留下…
展开
-
Innodb的数据存储结构
目前,InnoDB支持4中行记录格式,分别是 Compact、Redundant、Dynamic和Compressed 行格式。Innodb默认的行格式为。行->页->区->段->表空间。**可变长度列表****仍会继续往下**原创 2023-10-10 10:56:13 · 56 阅读 · 0 评论 -
MySQL基础架构
在进行Redolog 和 UndoLog的写操作时,不会直接写入磁盘,会先写入到Log Buffer中,顺序写的效率远高于随机写,并且批量写入磁盘可以减少IO次数提高效率。时,如果数据不在缓冲池中,需要先将数据从磁盘中查询出来,此时因为数据需要被修改,不会直接放到Buffer Pool中,而是会放到。负责将SQL语句的执行方式确定下来,例如在表中有多个索引时,需要。时,会先将数据页从磁盘中查询出来,先放到。中,不同页之间用链表进行存储。**操作单位是页**原创 2023-10-10 10:57:46 · 32 阅读 · 0 评论 -
MySQL索引原理以及优化
在数据量较大时,type会由RANGE变为ALL,全表扫描从而导致查询很慢。IN查询在数据量大时由于优化器优化为ALL,如果数据内IN中的值较多,属于误判,可以使用。**数据的唯一性****占据磁盘空间****需要维护索引****插入时间较长****可以建立多个****最左前缀原则****只支持表级锁****崩溃恢复机制****高度差小于1****高度会非常高****进行多次IO****JOIN查询****JOIN查询****不等值的查询****小表驱动大表****JOIN查询**原创 2023-10-10 10:57:08 · 31 阅读 · 0 评论 -
MySQL事务原理
因为WAL机制,会在 Redo Log Buffer中写入相关的日志,在大量日志的情况下,Buffer的空间会不足,此时则需要CheckPoint机制来进行文件的清除。减少数据库恢复的时间,在将文件刷入到文件后,可以使用CheckPoint记录当前的位置,在故障恢复时,则只从CheckPoint开始恢复即可。当Buffer空间不足时,LRU算法会溢出最近最少使用的页,如果此页为脏页,则会强制执行CheckPoint,将脏页刷入磁盘中。原创 2023-10-10 10:55:40 · 35 阅读 · 0 评论 -
MySQL中的锁以及加锁细节
在聚簇索引中,只锁一条记录 SELECT * FROM xx WHERE id = 1 FOR UPDATE。在加上间隙锁后,如果此时有一条id=4的记录想要插入,则会被阻塞。但是每个阻塞等待的锁都会主动判断是否存在死锁,因此不开启。的字段需要获取值时,都需要先获取到这个自增锁。阻塞的原理是会在插入时,会生成。**删除一条记录****数据类型长度****数据类型发生****重新插入一条****行列进行操作****读写的意向锁****表级的读写锁****等待超时时间****前开后闭区间**原创 2023-10-08 11:09:25 · 99 阅读 · 0 评论 -
MySQL中的MVCC是什么
多版本并发控制,用于**解决读写冲突**,在一个数据行正在进行写操作时,另外的事务想要可以**读取以前版本的数据**,从而不会被阻塞,提高并发效率。**快照读**不会进行阻塞,读取的是**旧版本的数据**,使用方法即**普通的查询**。**当前读**会**阻塞**直到获取到数据行的**共享锁**,读取的是**新版本的数据**。INSERTDELETEUPDATE数据行中删除仅作为标记位,目的是为了给MVCC提供服务,要保留数据行的历史数据。MVCC解决了读写冲突的问题。原创 2023-10-08 11:08:48 · 34 阅读 · 0 评论 -
高可用架构和数据恢复
二进制文件,所有对数据行和表进行操作,用于 数据之间的同步和数据的恢复。对于Bin Log文件的查看和使用 需要使用命令。原创 2023-10-08 11:08:08 · 106 阅读 · 0 评论 -
Double Write Buffer的作用是什么
【代码】Double Write Buffer的作用是什么。原创 2023-10-08 11:07:23 · 85 阅读 · 0 评论 -
MySQL如何进行分库分表
垂直拆分 例如原本所有的服务都在同一个数据库实例中,可以将其通过**功能划分**拆分为 OrderDb、ProductDb等水平拆分 数据量过大,同一个类型的数据库拆分为多个表 OrderDb_01、OrderDb_02。原创 2023-10-08 11:06:27 · 46 阅读 · 0 评论