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 高水位说明和释放表空间,加快表的查询速度
高水位的介绍 数据库运行了一段时间,经过一些列的删除.插入.更改操作有些表的高水位线就有可能和实际的表存储数据的情况相差特别多,为了提高检索该表的效率,建议对这些表进行收缩: 查找高水位线的表 查找表 ...
随机推荐
- 扫描仪扫描文件处理-ABBYY生成小体积黑白二值化PDF
禁止所有预处理选项: PDF保存选项: 保存提示(选择"保存为仅图像PDF"):
- go 参数传递的是值还是引用 (转)
https://blog.csdn.net/qq_16059847/article/details/104062759
- MVC注册
前言 最近没什么写的,写个MVC注册巩固一下 HTML @{ Layout = null; } <!DOCTYPE html> <html> <head> < ...
- C#文件反序列化
前言 最近,为了实现Unity游戏数据的加密,我都把注意力放到了C#的加密方式身上,最简单的莫过于C#的序列化了,废话不多说,直接开始 准备工作 在使用文件反序列化前我们得先引用命名空间 using ...
- CentOS 环境变量编辑、保存、立即生效的方法
方法一: 该方法只能修改临时配置文件,当每次系统重启后,配置文件将失效 假如我的安装路径如下:/home/oracle/app/oracle/product/11.2.0/dbhome_1/bin 那 ...
- [斯坦福大学2014机器学习教程笔记]第六章-代价函数(Cost function)
在这节中主要讲的是如何更好地拟合逻辑回归模型的参数θ.具体来说,要定义用来拟合参数的优化目标或者叫代价函数,这便是监督学习问题中的逻辑回归模型的拟合问题. 我们有一个训练集,训练集中有m个训练样本:{ ...
- 用一道模板题理解多源广度优先搜索(bfs)
题目: //多元广度优先搜索(bfs)模板题详细注释题解(c++)class Solution { int cnt; //新鲜橘子个数 int dis[10][10]; //距离 int dir_x[ ...
- Bitmap缩放(二)
先得到位图宽高不用加载位图,然后按ImageView比例缩放,得到缩放的尺寸进行压缩并加载位图.inSampleSize是缩放多少倍,小于1默认是1,通过调节其inSampleSize参数,比如调节为 ...
- Navicat连接Mysql8.0.17出现1251错误 / 或者Navicat Premium出现2059错误
Navicat连接Mysql8.0.17出现1251错误 重装了电脑之后,好多软件出了问题,经过一系列的插件安装,mysql终于安装好了 但是Navicat又抽筋了~~~额(⊙o⊙)... 在网上查的 ...
- java多线程实现TCP网络Socket编程(C/S通信)
目录 开篇必知必会 一.多线程技术 二.实现多线程接收 1.单线程版本 2.多线程版本 三.多线程与进程的关系 四.客户端界面完整代码 五.多线程通信对比 最后 开篇必知必会 在前一篇<Java ...