带你搞懂负载均衡器
1. 表空间 表空间是InnoDB存储引擎逻辑结构的最高层, 大部分数据都存在于共享表空间ibdata1中。如果用 户启用了参数 innodb_file_per_table ,则每张表都会有一个表空间(xxx.ibd),里面存放表 中的数据、索引和插入缓存Bitmap页。其他的数据如undo log、插入缓存索引页、系统事务信息、 二次写缓存都是在共享表空间中。 2. 段 表空间是由各个段组成的,常见的段有数据段、索引段、回滚段等。InnoDB存储引擎是基于索引组织 的,因此数据即是索引,索引即数据。数据段就是B+树的叶子节点, 索引段即为B+树的非叶子节点。InnoDB中对于段的管理,都是引擎自身完成,不需要人为对其控制。 3. 区 区是表空间的单元结构,每个区的大小为1M。默认情况下, InnoDB存储引擎页大小为16K, 即一 个区中一共有64个连续的页。 4. 页 页是组成区的最小单元,页也是InnoDB 存储引擎磁盘管理的最小单元,每个页的大小默认为 16KB。为了保证页的连续性,InnoDB 存储引擎每次从磁盘申请 4-5 个区。 5. 行 InnoDB 存储引擎是面向行的(row-oriented),也就是说数据是按行进行存放的,每个页存放的行 记录也是有硬性定义的,最多允许存放 16KB/2-200 行,即 7992 行记录。
2.3 checkpoint 1. 介绍 由于日常的DML语句操作时,首先操作的是缓冲池,并没有直接写入到磁盘,这有可能会导致内存中的 数据与磁盘中的数据产生不一致的情况,而与磁盘中数据不一致的页我们成为"脏页"。而 checkpoint的工作,就是将内存中的脏页,在一定条件下刷新到磁盘。 如果在从缓冲池将页数据刷新到磁盘的过程中发生宕机,那么数据就无法恢复了;为了避免这种情况的 发生,采用了Write Ahead Log(WAL)策略,即当事务提交时,先写重做日志(redo log),再修改 缓冲池数据页,最后通过Checkpoint刷新到磁盘(事务提交会触发checkpoint)。这样正在执行的 事务,因为存在日志都可以被恢复,没有日志的事务还没有执行也不会丢失数据。 2. 作用 A. 缩短数据恢复时间 当数据库发生宕机时,数据库不用重做所有的日志,因为Checkpoint之前的页都已经刷新会磁盘了, 故数据库只需要重做Checkpoint之后的日志就好,这样就大大缩短了恢复时间。 B. 缓冲池不够用时,需要先将脏页数据刷新到磁盘中; 当缓冲池不够用时, 根据LRU算法溢出最近最少使用的页, 如果此页是脏页,则强制执行 Checkpoint, 刷新脏页到磁盘。 C. 重做日志不可用时,刷新脏页到磁盘;
redo log大小是固定的, 当前的InnoDB引擎中, 重做日志的设计都是循环使用的,并不是无限增 大的。重做日志可以被重用的部分是已经不再需要的, 数据库发生宕机也不需要这部分的重做日志, 因此可以被覆盖使用, 如果此时重做日志还需要使用,那么必须强制执行Checkpoint,将缓冲池中 的页至少刷新磁盘, checkpoint移动到当前重做日志的位置 (编辑:新余站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |