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 高水位说明和释放表空间,加快表的查询速度
高水位的介绍 数据库运行了一段时间,经过一些列的删除.插入.更改操作有些表的高水位线就有可能和实际的表存储数据的情况相差特别多,为了提高检索该表的效率,建议对这些表进行收缩: 查找高水位线的表 查找表 ...
随机推荐
- xuexi0.2
1.数据结构就是研究数据如何排布和如何加工. 2.数组的目的是为了管理程序中类型相同,意义相关的变量. 3.数组的优势是比较简单,可以通过访问下标来进行随机访问.数组的限制:元素类型必须相同,数组的大 ...
- Docker安装以及运行第一个HelloWorld
Docker安装以及运行第一个HelloWorld
- C# 微支付 JSAPI支付方式 V3.3.6版本
<script type="text/javascript">//结算 (订单号) function PayClearing(num) { $.ajax({ type: ...
- Topsis优劣解距离法 mlx代码
请参考https://blog.csdn.net/qq_36384657/article/details/98188769 mlx代码 topsis 优劣解距离法 参数说明: 分数.获奖次数.价值等 ...
- pytest参数化代码笔记
#!/usr/local/bin/python3 # -*- coding: utf-8 -*- import pytest __author__ = "Carp-Li" __da ...
- Azure Kay Vault(一).NET Core Console App 获取密钥保管库中的机密信息
一,引言 Azure 密钥保管库用于存储敏感信息,例如链接字符串,密码,API 密钥等.我们无法直接从Azure 密钥库中访问机密!那么我们如何才能访问应用程序中的机密信息?比如,在我们的实际项目中, ...
- react-native中textInput在androidTV上的焦点处理(坑篇)
react-native中,开发androidTV输入框的焦点处理. 复述流程: 安卓TV上,无法通过上下左右键,以及遥控器的上下左右来获取输入框焦点. 原因: 脸书的锅,但没修,这里官方的说法,Te ...
- 专题三:redis的数据类型之hash
一.基本介绍 前面一个专题我们讲到string去存储明星微博粉丝数,微博数等,大概介绍了两种方式: set user:id:012345:fans 12210862 set u ...
- curl 錯誤碼
CURL状态码列表 状态码 状态原因 解释 0 正常访问 1 错误的协议 未支持的协议.此版cURL 不支持这一协议. 2 初始化代码失败 初始化失败. 3 URL格式不正确 URL 格式错误.语法不 ...
- 阿里P8大佬熬夜10天,把所有Android第三方库整理成了PDF
缘起 随着互联网企业的不断发展,产品项目中的模块越来越多,用户体验要求也越来越高,想实现小步快跑.快速迭代的目的越来越难,还有应用之间的互相调用等等问题,插件化技术应用而生.如果没有插件化技术,美团. ...