加入收藏 | 设为首页 | 会员中心 | 我要投稿 新余站长网 (https://www.0790zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 传媒 > 正文

带你搞懂负载均衡器

发布时间:2021-02-02 15:26:02 所属栏目:传媒 来源:互联网
导读:1. 表空间 表空间是InnoDB存储引擎逻辑结构的最高层, 大部分数据都存在于共享表空间ibdata1中。如果用 户启用了参数 innodb_file_per_table ,则每张表都会有一个表空间(xxx.ibd),里面存放表 中的数据、索引和插入缓存Bitmap页。其他的数据如undo log、插入

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 行记录。

  • trx_id:每次对某条聚簇索引记录进行改动时,都会把对应的事务id赋值给trx_id隐藏列。
  • roll_pointer:每次对某条聚簇索引记录进行改动时,都会把旧的版本写入到undo日志中,然后这个隐藏列就相当于一个指针,可以通过它来找到该记录修改前的信息。

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移动到当前重做日志的位置

(编辑:新余站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读