【mysql存储结构】 – 逻辑存储结构
逻辑存储结构
- 表存储结构单位:表>段>区>页>行存储空间的基本单位是页。
- 一个页就是一棵树B+树的节点,数据库I/O操作的最小单位是页,与数据库相关的内容都会存储在页的结构里。
- B+树的特点就是够矮够胖,能有效地减少访问节点次数从而提高性能。
3.InnoDB 的存储结构 分为 5 级:表空间、段、簇、页、行
表空间(table space): 系统表空间、独占表空间、通用表空间、临时表空间、Undo 表空间
段(segment): 表空间是由各个段组成的,常见的段有数据段、索引段、回滚段等,段是一个逻辑的概念。
区/簇(extent):``一个段(Segment)又由很多的簇(也可以叫区)组成,每个区的大小是 1MB(64个连续的页)
页/块(page): 一个簇中有 64 个连续的页(1MB/16KB=64)。这些页面在物理上和逻辑上都是连续的,是存储引擎磁盘管理的最小单位,
通过 innodb_page_size 设置。一个表空间最多拥有 2^32 个页,默认情况下一个页的大小为 16KB,也就是说一个表空间最多存储 64TB 的数据
行(row): InnoDB 存储引擎是面向行的(row-oriented),也就是说数据的存放按行进行存放。hbase是列存放
物理存储结构
从物理意义上来看,InnoDB表由共享表空间、日志文件组(更准确地说,应该是Redo文件组)、表结构定义文件组成。
若将innodb_file_per_table设置为on, 则每个表将独立地产生一个表空间文件,以ibd结尾,数据、索引、表的内部数据字典信息都将保存在这个单独的表空间文件中。
表结构定义文件以frm结尾,这个是与存储引擎无关的,任何存储引擎的表结构定义文件都一样,为.frm文件。
5.7
select * from information_schema.global_variables where variable_name in ("datadir", "innodb_data_file_path", "innodb_data_home_dir", "innodb_file_per_table", "innodb_open_files");
8.0
`select * from performance_schema.global_variables where variable_name in ("datadir", "innodb_data_file_path", "innodb_data_home_dir", "innodb_file_per_table", "innodb_open_files");`