Mysql

关注公众号 jb51net

关闭
首页 > 数据库 > Mysql > InnoDB表空间

InnoDB存储引擎中的表空间详解

作者:silmeweed

这篇文章主要介绍了InnoDB存储引擎中的表空间详解,表空间内部,所有页按照区extent为物理单元进行划分和管理,extent由64个物理连续的页组成,表空间可以理解为由一个个物理相邻的extent组成,需要的朋友可以参考下

一、InnoDB体系结构:

二、表空间文件:

只有system tablespace和temporary tablespace是共享的,其它是非共享的tablespace。

表空间内部,所有页按照区(extent)为物理单元进行划分和管理。extent由64个物理连续的页组成,表空间可以理解为由一个个物理相邻的extent组成。

2.1 Table Space ID 分布

系统表空间ibdata虽然包括不同文件ibdata1, ibdata2…,但这些文件逻辑上是相连的,这些文件同属于space_id为0的表空间。用户创建表产生的ibd文件,则认为是一个独立的tablespace,只包含一个文件。

2.2 tablespace相关设置

#1.DATA STORAGE
datadir=/var/lib/mysql 
#2.InnoDB Configuration 
innodb_file_per_table=1
#3.InnoDB Memory 
innodb_buffer_pool_size = 2000M
#4.System Tablespace configuration
innodb_data_file_path= ibdata1:512M;ibdata2:512M:autoextend
#5.Redo log and buffer configuration
innodb-log-files-in-group=3
innodb_log_file_size=100M
innodb_log_buffer_size=30M
#5.InnoDB file formate 
innodb_file_format = Barracuda
#6.UNDO Tablespace Configuration 
innodb_undo_directory = /var/lib/mysql/ 
innodb_undo_tablespaces = 3 
innodb_undo_logs = 128 
innodb_undo_log_truncate = ON 
innodb_rollback_segments = 128
#7.Temp Tablespace Configuration 
tmpdir = /var/lib/mysql/ 
innodb_temp_data_file_path = ibtmp1:20M:autoextend 
#8.tablespace 数据加密插件,在Enterprise版本中提供 #Keyring configuration 
early-plugin-load=keyring_file.so 
keyring_file_data=/var/lib/mysql-keyring/keyring

2.3 The System Tablespace(系统表空间)

# innochecksum --page-type-summary ibdata1 
File::ibdata1
================PAGE TYPE SUMMARY==============
#PAGE_COUNT     PAGE_TYPE
===============================================
  349391        Index page                        5.25%
 6076813        Undo log page                    91.29%
   18349        Inode page                        0.28%
  174659        Insert buffer free list page      2.62%
   36639        Freshly allocated page            0.55%
     405        Insert buffer bitmap              0.01%
      98        System page
       1        Transaction system page
       1        File Space Header
     404        Extent descriptor page            0.01%
       0        BLOB page
       8        Compressed BLOB page
       0        Other type of page
-------------------------------------------------------
 6656768        Pages total                     100.00%
===============================================
Additional information:
Undo page type: 3428 insert, 6073385 update, 0 other
Undo page state: 1 active, 67 cached, 249 to_free, 1581634 to_purge, 0 prepared, 4494862 other

2.4 File-Per-Table Tablespaces(单表表空间 )  

2.5 Undo tablespace

UNDO表空间用于存放一个或多个UNDO log文件。UNDO通过保留活动事务(MVCC)的已修改未提交数据来保证读一致性。 从此存储区域检索未修改的数据。UNDO log也称为回滚段。默认情况下,UNDO表空间是系统表空间的一部分,当然从MySQL5.6开始也允许用户自定义一个UNDO表空间,需要注意的是:

innodb_undo_tablespace : Number of undo tablespaces, default 0 , max 95 
innodb_undo_directory : Location for undo tablespace,default is data_dir with 10MB initial size.
innodb_undo_logs : Number of undo logs in a single undo tablespace, default and max value is ‘128' [ Deprecated in 5.7.19 , innodb_rollback_segments variable will control this]    
innodb_undo_log_truncate: truncate undo tablespace, Default OFF  

2.6 Temporary tablespace

保存和检索临时表已修改未提交的数据和相关的对象,始于MySQL5.7.2,server运行时用于回滚临时表的修改。

2.7 General tablespace

用户定义表空间,用户可以用CREATE TABLESPACE的语法来创建自定义的表空间,并在创建表的时候指定该表所属的表空间。优点:

到此这篇关于InnoDB存储引擎中的表空间详解的文章就介绍到这了,更多相关InnoDB表空间内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文