旅游网站html,专业网站建设设计,做游戏网站定位,建设网站有哪些公司MySQL进阶篇 文章目录 架构1、逻辑结构InnoDB 逻辑存储单元主层级关系图#xff1a;1、表空间2、段3、区4、页5、行总结#xff1a; 2、架构2、1 内存架构2、2 磁盘架构 3、事务3、1事务基础#xff08;1#xff09;事务#xff08;2#xff09;特性 架构 
1、逻辑结构 I… MySQL进阶篇 文章目录 架构1、逻辑结构InnoDB 逻辑存储单元主层级关系图1、表空间2、段3、区4、页5、行总结 2、架构2、1 内存架构2、2 磁盘架构 3、事务3、1事务基础1事务2特性    架构 
1、逻辑结构 InnoDB 逻辑存储单元主层级关系图 1、表空间 
表空间是InnoDB存储引擎逻辑结构的最高层 如果用户启用了参数 innodb_file_per_table(在 8.0版本中默认开启) 则每张表都会有一个表空间xxx.ibd一个mysql实例可以对应多个表空间用于存储记录、索引等数据。 
2、段 
段分为数据段Leaf node segment、索引段Non-leaf node segment、回滚段 Rollback segmentInnoDB是索引组织表数据段就是B树的叶子节点 索引段即为B树的 非叶子节点。段用来管理多个Extent区。 
3、区 
区表空间的单元结构每个区的大小为1M。 默认情况下 InnoDB存储引擎页大小为16K即一个区中一共有64个连续的页。 
4、页 
页是InnoDB 存储引擎磁盘管理的最小单元每个页的大小默认为 16KB。为了保证页的连续性 InnoDB 存储引擎每次从磁盘申请 4-5 个区。 
5、行 
行InnoDB 存储引擎数据是按行进行存放的。在行中默认有两个隐藏字段   
**Trx_id每次对某条记录进行改动时都会把对应的事务id赋值给trx_id隐藏列。Roll_pointer每次对某条引记录进行改动时都会把旧的版本写入到undo日志中然后这个隐藏列就相当于一个指针可以通过它来找到该记录修改前的信息。**总结 
个人理解表空间表示一本书段表示书中的章节区表示每章节的小节页表示书的每一页行就是每页的每行数据。表空间里有多个段一个段包含256个区一个区包含64个页一个页为16K。 
2、架构 2、1 内存架构 内存架构由四个部分组成缓存池Buffer Pool, 更改缓冲区Change Buffer, 日志缓存区Log Buffer, 自适应哈希索引。 
2、2 磁盘架构 1). System Tablespace 系统表空间是更改缓冲区的存储区域。如果表是在系统表空间而不是每个表文件或通用表空间中创建 的它也可能包含表和索引数据。(在 MySQL5.x 版本中还包含 InnoDB 数据字典、 undolog 等 ) 参数innodb_data_file_path 系统表空间默认的文件名叫 ibdata1 。 2). File-Per-Table Tablespaces 如果开启了innodb_file_per_table开关 则每个表的文件表空间包含单个InnoDB表的数据和索引 并存储在文件系统上的单个数据文件中。 开关参数innodb_file_per_table 该参数默认开启。3). General Tablespaces 通用表空间需要通过 CREATE TABLESPACE 语法创建通用表空间在创建表时可以指定该表空间。 创建表空间CREATE TABLESPACE ts_name ADD DATAFILE file_name ENGINE  engine_name;创建表时指定表空CREATE TABLE xxx ... TABLESPACE ts_name;4). Undo Tablespaces 撤销表空间MySQL实例在初始化时会自动创建两个默认的undo表空间初始大小16M用于存储undo log日志。 
5). Temporary Tablespaces InnoDB 使用会话临时表空间和全局临时表空间。存储用户创建的临时表等数据。 
6). Doublewrite Buffer Files 双写缓冲区innoDB引擎将数据页从Buffer Pool刷新到磁盘前先将数据页写入双写缓冲区文件中便于系统异常时恢复数据。 
7). Redo Log 重做日志是用来实现事务的持久性。该日志文件由两部分组成重做日志缓冲redo log buffer 以及重做日志文件 redo log  , 前者是在内存中后者在磁盘中。当事务提交之后会把所 有修改信息都会存到该日志中 , 用于在刷新脏页到磁盘时 , 发生错误时 , 进行数据恢复使用。 3、事务 
3、1事务基础 
1事务 
事务是一组操作的集合它是一个不可分割的工作单位事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求即这些操作要么同时成功要么同时失败。 通俗讲就是一组逻辑sql 
2特性 
原子性Atomicity事务是不可分割的最小操作单元要么全部成功要么全部失败。 
一致性Consistency事务完成时(提交完成后) 必须使所有的数据都保持一致状态 
隔离性Isolation数据库系统提供的隔离机制保证事务在不受外部并发操作影响的独立环境下运行。不受外部环境影响而进行事务的执行  
持久性Durability 事务一旦提交或回滚它对数据库中的数据的改变就是永久的。 
实际上我们研究事务的原理就是研究MySQL的InnoDB引擎是如何保证事务的这四大特性的。 而对于这四大特性实际上分为两个部分。 其中的原子性、一致性、持久化实际上是由InnoDB中的两份日志来保证的一份是 redo log日志一份是undo log日志。 而持久性是通过数据库的锁 加上MVCC来保证的。 在理解事务原理的时候主要就是来研究一下redologundolog以及MVCC。 
持续编辑中