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 高水位说明和释放表空间,加快表的查询速度
高水位的介绍 数据库运行了一段时间,经过一些列的删除.插入.更改操作有些表的高水位线就有可能和实际的表存储数据的情况相差特别多,为了提高检索该表的效率,建议对这些表进行收缩: 查找高水位线的表 查找表 ...
随机推荐
- Tensorflow学习笔记No.7
tf.data与自定义训练综合实例 使用tf.data自定义猫狗数据集,并使用自定义训练实现猫狗数据集的分类. 1.使用tf.data创建自定义数据集 我们使用kaggle上的猫狗数据以及tf.dat ...
- lumen-ioc容器测试 (3)
lumen-ioc容器测试 (1) lumen-ioc容器测试 (2) lumen-ioc容器测试 (3) lumen-ioc容器测试 (4) lumen-ioc容器测试 (5) lumen-ioc容 ...
- go内建方法 append copy delete
package mainimport "fmt"func main() { testAppend() testCopy() testDelete()}func testAppend ...
- Dubbo系列之 (七)网络层那些事(2)
辅助链接 Dubbo系列之 (一)SPI扩展 Dubbo系列之 (二)Registry注册中心-注册(1) Dubbo系列之 (三)Registry注册中心-注册(2) Dubbo系列之 (四)服务订 ...
- C++ std::thread 多线程中的异常处理
环境: VS2019 包含头文件: #include <iostream>#include<thread>#include<exception> 线程函数采用try ...
- JS实现页面计时
前言 计时功能在网页上是非常多的,现在我就用原生JS做个计时功能吧 HTML <div><label>得到毫</label> <h5></h5&g ...
- django—csrf中间件校验流程
CSRF(跨站请求伪造)是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法. 这利用了web中用户身份验证的一个漏洞:简单的身份验证只能保证请求发自某个用户的浏览器,却不能保证请求 ...
- web应用部署(Tomcat,springboot部署方式)
转载自:https://www.cnblogs.com/haimishasha/p/10791454.html 核心内容 1.在Tomcat中有四种部署Web应用的方式,分别是: (1)利用Tomca ...
- 平时查询linux服务器与应用版本
###JDK版本###java -version ##Tomcat环境版本###进入到tomcat目录的bin下./version.sh ###服务器###(1)osuname -a 查看releas ...
- Moment.js常见用法总结
Moment.js常见用法总结 Moment.js是一个轻量级的JavaScript时间库,它方便了日常开发中对时间的操作,提高了开发效率. 日常开发中,通常会对时间进行下面这几个操作:比如获取时 ...