Innodb之(临时)表空间、段、区、块
引用连接:https://www.cnblogs.com/duanxz/p/3724120.html
对于innodb存储引擎而言,其数据文件最小的存储单位为页。默认为16KB大小。在页的基础上又分为区,段,和表空间。innodb存储引擎对于空间的申请不是每次以16KB的方式申请,而是以区的方式。一个区的大小为1MB,总共有64个页。这样的目的是提高空间的申请效率。如果数据是按照减值顺序存放的,那么读取这些页,将在一个连续的地址中,这样可以避免磁头的大量的寻址时间。
1.表空间
| 1. 一个逻辑概念,由之前的页,区,段组成,一个表空间可以由多个文件组成。
2. 使用共享表空间存储方式时,Innodb的所有数据保存在一个单独的表空间里面。 3. 而在使用单独表空间存储方式时,每个表的数据以一个单独的文件来存放。 开启独立表空间的参数: innodb_file_per_table =1 |
2.Innodb与myisam表文件比较及其他文件说明
| Innodb独立表空间文件里表结构文件t1.frm . 表的数据文件:t1.ibd(--数据+索引) [root@lbg test1]# ll t1*
-rw-r----- 1 mysql mysql 8586 Oct 13 01:01
t1.frm -rw-r----- 1 mysql mysql 98304 Oct 15 21:09 t1.ibd
mysql> show create table 创建myisam的表test4: CREATE TABLE [root@lbg test1]# ll test4*
-rw-r----- 1 mysql mysql 8586 Oct 17 23:35 test4.frm
-rw-r----- 1 mysql mysql
0 Oct 17 23:35 test4.MYD -rw-r----- 1 mysql mysql 1024 Oct 17 23:35 test4.MYI
MyISAM数据文件: test4.frm ---二进制的表结构文件. ibdata1 |
3.配置多个系统表空间的操作
| ibdata1 只能扩大不能缩小,路径:/home/mysql3307/mysql3307/ibdata1
ibdata1是可以配置多个:innodb_data_home_dir设置为空, 原文件信息: innodb_data_home_dir innodb_data_file_path 修改后信息: innodb_data_home_dir innodb_data_file_path 两个路径之间用分号隔开.只允许最后一个表空间文件进行自动扩展. |
2.段
| 1. 每个用户至少有两个段
2. 一个是聚集索引的叶子节点段 3. 非叶子节点段 4. 段根据区的形式组织存储空间 |
3.区(按区分配储存空间)
| 1. 区是innodb存储引擎访问的最小单位
2.区是innodb寻找存储空间的最小单位。 3.一个区有64个连续的页组成,大小为1MB。 |
4.页(据库I/O的基本单位,16KB)
| 1. 就是MySQL的聚簇索引的叶子节点
2. 每个数据页默认是16KB 3. 物理上64个连续的页面可以连成一个区 4. 数据页、Undo页、系统页、事务数据页、插入缓冲位图页等 |
5。统计每个表大小
| SELECT TABLE_NAME,SUM(DATA_LENGTH+INDEX_LENGTH)/1024/1024 AS TOTAL_SIZE FROM WHERE |
6.什么是表碎片及表空间碎片的判断及清除
| 表在不断的使用中,尤其是多DML的环境中,会因为不断的分配,回收空间而产生很多碎片,如果碎片过多,很造成磁盘性能的影响。
1. 一般有较多的DML操作的表,是值得注意的,因为这些数据频繁的表动,需要进行空间的再分配,容易产生大量的碎片 2. 有些数据量很大的表,但是在业务上几乎没有用到delete的那种,即使很大,也可能没啥碎片 3. 有varchar类型的列比较多的需要注意,该数据类型容易造成表空间碎片 4. 表碎片的回收时间很长,不会要经常进行此类操作 5. 表碎片没有可以准确度量的公式 统计表的碎片数字:单位是字节 select table_schema, table_name, data_free, engine from information_schema.tables where table_schema not in ('information_schema', 'mysql') and 表空间碎片的清除: 1.一般表 alter table TableName 回收表空间,对于大表就不能直接采用这种方式,因为会造成长时间的锁表。 2.大表 可以先建立新表,然后进行抽取数据,然后修改表名 可以采用新建表转移数据,然后删除旧表的形式,然后再重命名表。 |
7.truncate drop delete的区别
| truncate 删除数据同时立即清除空间
Drop 删除表结构,删除数据,清除空间 Delete 进行标记 |
8.临时表空间
| 临时表分:外部临时表和内部临时表
外部临时表: 通过CREATE TEMPORARY TABLE 创建的临时表,这种临时表称为外部临时表。这种临时表只对当前用户可见,当前会话结束的时候,该临时表会自动关闭。这种临时表的命名与非临时表可以同名(同名后非临时表将对当前会话不可见,直到临时表被删除)。 内部临时表: 是一种特殊轻量级的临时表,用来进行性能优化。这种临时表会被MySQL自动创建并用来存储某些操作的中间结果。这些操作可能包括在优化阶段或者执行阶段。这种内部表对用户来说是不可见的,但是通过EXPLAIN或者SHOW... 内部临时表有两种类型:一种是HEAP(堆)临时表,这种临时表的所有数据都会存在内存中,对于这种表的操作不需要IO操作。另一种是OnDisk临时表,顾名思义,这种临时表会将数据存储在磁盘上。OnDisk临时表用来处理中间结果比较大的操作。如果HEAP临时表存储的数据大于MAX_HEAP_TABLE_SIZE,HEAP临时表将会被自动转换成OnDisk临时表。OnDisk临时表在5.7中可以通过INTERNAL_TMP_DISK_STORAGE_ENGINE系统变量选择使用MyISAM引擎或者InnoDB引擎。 MySQL在以下几种情况会创建临时表: 1、UNION查询; 2、用到TEMPTABLE算法或者是UNION查询中的视图; 3、ORDER 4、表连接中,ORDER 5、DISTINCT查询并且加上ORDER 6、SQL中用到SQL_SMALL_RESULT选项时; 7、FROM中的子查询; 8、子查询或者semi-join时创建的表; 在以下几种情况下,会创建磁盘临时表: 1、数据表中包含BLOB/TEXT列; 2、在 GROUP 3、在SELECT、UNION、UNION ALL查询中,存在最大长度超过512的列(对于字符串类型是512个字符,对于二进制类型则是512字节); 4、执行SHOW 从5.7.5开始,新增一个系统选项 |
Innodb之(临时)表空间、段、区、块的更多相关文章
- InnoDB 引擎独立表空间 innodb_file_per_table
使用过MySQL的同学,刚开始接触最多的莫过于MyISAM表引擎了,这种引擎的数据库会分别创建三个文件:表结构.表索引.表数据空间.我们可以将某个数据库目录直接迁移到其他数据库也可以正常工作.然而当你 ...
- InnoDB 引擎独立表空间
InnoDB 引擎独立表空间 使用过MySQL的同学,刚开始接触最多的莫过于MyISAM表引擎了,这种引擎的数据库会分别创建三个文件:表结构.表索引.表数据空间.我们可以将某个数据库目录直接迁移到 ...
- mysql InnoDB引擎 共享表空间和独立表空间(转载)
PS:innodb这种引擎,与MYISAM引擎的区别很大.特别是它的数据存储格式等.对于innodb的数据结构,首先要解决两个概念性的问题: 共享表空间以及独占表空间. 1.什么是共享表空间和独占表空 ...
- INNODB存储引擎表空间
这片文章主要是对innodb表空间的一些说明: innodb中表空间可以分为以下几种: 系统表空间 独立表空间 undo表空间 临时表空间(temporary tablespace) 通用表空间(ge ...
- MySQL Innodb Engine --独立表空间参数(innodb_file_per_table)
MySQL中参数innodb_file_per_table决定将表存放于ibdata*的共享表空间还是独立的.ibd文件的独立表空间. ================================ ...
- 15.3、mysql之InnoDB和MyISAM表空间详解
15.3.1.InnoDB引擎表空间: 1.表空间分类: 共享表空间: 某一个数据库的所有的表数据,索引文件全部放在一个文件中,默认这个共享表空间的文件路径在 data目录下. 默认的文件名为:ibd ...
- MySQL另类的备份恢复方法——innodb可传输表空间
Preface There're many ways in backing up or migrating data from one server to another one.Lo ...
- 【Oracle 】tablespace 表空间创建和管理
1.表空间的概述 1. 表空间是数据库的逻辑组成部分. 2. 从物理上讲,数据库数据存放在数据文件中: 3. 从逻辑上讲,数据库是存放在表空间中,表空间由一个或者多个数据文件组成. 2.oracle的 ...
- Oracle 高水位说明和释放表空间,加快表的查询速度
高水位的介绍 数据库运行了一段时间,经过一些列的删除.插入.更改操作有些表的高水位线就有可能和实际的表存储数据的情况相差特别多,为了提高检索该表的效率,建议对这些表进行收缩: 查找高水位线的表 查找表 ...
随机推荐
- docket镜像
1.是什么 镜像是一种轻量级.可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码.运行时.库.环境变量和配置文件. 1.1.什么是UnionF ...
- spring boot:配置shardingsphere(sharding jdbc)使用druid数据源(druid 1.1.23 / sharding-jdbc 4.1.1 / mybatis / spring boot 2.3.3)
一,为什么要使用druid数据源? 1,druid的优点 Druid是阿里巴巴开发的号称为监控而生的数据库连接池 它的优点包括: 可以监控数据库访问性能 SQL执行日志 SQL防火墙 但spring ...
- C# Hash算法
#region Hash算法 /// <summary> /// Hash算法 /// </summary> /// <param name="myStr&qu ...
- Linux用户和组管理命令-用户属性修改usermod
用户属性修改 usermod 命令可以修改用户属性 格式: usermod [OPTION] login 常见选项: -u UID: 新UID -g GID: 新主组 -G GROUP1[,GROUP ...
- 经典剪枝算法的例题——Sticks详细注释版
这题听说是道十分经典的剪枝算的题目,不要问我剪枝是什么,我也不知道,反正我只知道用到了深度搜索 我参考了好多资料才悟懂,然后我发现网上的那些大神原理讲的很明白,但代码没多少注释,看的很懵X,于是我抄起 ...
- Hive sql函数
date: 2018-11-16 19:03:08 updated: 2018-11-16 19:03:08 Hive sql函数 一.关系运算 等值比较: = select 1 from dual ...
- R语言学习网站(分享)
1. https://www.r-bloggers.com/ 2. https://www.kaggle.com/datasets 3. RStudio download: https://www.r ...
- DOM0级事件误区-addEventListener
百度上很多篇文章讲解addEventListener DOM0级事件的时候讲解的都是覆盖 概念如下: 同一个元素的同一种事件只能绑定一个函数,否则后面的函数会覆盖之前的函数 其实不然,官方讲解:添加的 ...
- SpringBoot+Mybatis_Plus Generator
AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 Entity.Mapper.Mapper XML.Service.Control ...
- Linux 系统编程 学习:06-基于socket的网络编程1:有关概念
Linux 系统编程 学习:006-基于socket的网络编程1:有关概念 背景 上一讲 进程间通信:System V IPC(2)中,我们介绍了System IPC中关于信号量的概念,以及如何使用. ...