昆明做网站建设的公司哪家好,iphone怎么开通互联网,无限看片的视频大全免费下载,餐饮店会员卡管理系统实际的业务系统开发中#xff0c;使用MySQL数据库#xff0c;我们使用最多的当然是支持事务并发的InnoDB存储引擎的这种表结构#xff0c;下面我们介绍下InnoDB存储引擎相关的知识点。
1-Innodb体系架构 InnoDB存储引擎有多个内存块#xff0c;可以认为这些内存块组成了一… 实际的业务系统开发中使用MySQL数据库我们使用最多的当然是支持事务并发的InnoDB存储引擎的这种表结构下面我们介绍下InnoDB存储引擎相关的知识点。
1-Innodb体系架构 InnoDB存储引擎有多个内存块可以认为这些内存块组成了一个大的内存池负责如下工作 1维护所有进程/线程需要访问的多个内部数据结构 2缓存磁盘上的数据方便快速的读取同时在对磁盘文件的数据修改之前在这里缓存 3重做日志redo log缓冲 后台线程的主要作用是负责刷新内存池中的数据保证缓冲池中的内存缓存是最近的数据。此外将已经修改的数据文件刷新到磁盘文件同时保证在数据库发生异常的情况下InnoDB能恢复到正常运行状态。 Master thread 是一个非常核心的后台线程主要负责将缓冲池中的数据异步刷新到磁盘保证数据的一致性包括脏页的刷新、合并插入缓冲insert buffer、undo页的回收。 IO Thread InnoDB存储引擎大量使用了AIO来处理写IO请求这样可以极大的提高数据库的性能。而IO thread工作主要负责这些IO请求的回调call back处理。 2-Innodb表
2.1-索引组织表 在InnoDB存储引擎中表都是根据主键顺序组织存放的这种存储方式的表称为索引组织表index organized table。在InnoDB存储引擎表中每张表都有个主键Primary Key如果在创建表时没有显示地定义主键则InnoDB存储引擎会安装如下方式选择或者创建主键。 1首先判断表中是否有唯一索引如果有则该列即为主键 2如果不符合上述情况InnoDB存储引擎自动创建一个6字节大小的指针 当表中有多个非空唯一索引时InnoDB存储引擎将选择第一个定义为非空唯一索引为主键。主键的选择是根据定义索引的顺序而不是建表时列的顺序。
2.2-InnoDB逻辑存储结构 所有数据都被逻辑地存放在一个空间中称之为表空间tablespace表空间又是由段segment、区extent、页page组成。页在一些文档中页称之为块block。 共享表空间 Innodb 将存储的数据按照表空间(tablespace)进行存放默认配置下会有一个初始大小10M名为ibdata1的文件这就是默认的表空间文件。
show variables like innodb_data_file_path;//查看共享表空间 生成文件默认是在data目录下一个叫ibdata1的文件
当然也可以多路径设置表空间 innodb_data_file_path /data1/db1/ibdata1:100M:autoextend; /data2/db2/ibdata2:100M:autoextend 放在不同的磁盘可以平均磁盘负载提高数据库性能。
独立表空间
show variables like innodb_file_per_table; //mysql默认5.6.7后开启 所在位置在对应表所在的目录 表名.ibd 文件 记录数据独立的表空间仅存储该表的数据索引和插入缓冲BITMAP等信息。其余信息仍存储在默认表空间。 段常见的段有数据段、索引段、回滚段等。
区区是由连续的页组成的空间在任何情况下每个区的大小都是1MB。为了保证区中页的连续性InnoDB存储引擎一次从磁盘申请4-5个区。在默认的情况下InnoDB存储引擎页的大小为16KB即一个区一共有64个连续页。区是InnoDB存储引擎空间申请的最小单位。 页页是InnoDB磁盘管理的最小单位。默认是16K。页是InnoDB访问的最小单位。 show variables like innodb_page_size; innodb_page_size163841024*16 show variables like innodb_version;//查看InnoDB的版本号