我的编程空间,编程开发者的网络收藏夹
学习永远不晚

InnoDB基础

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

InnoDB基础

InnoDB基础

  在InnoDB中,数据存储在磁盘上,处理数据时需要先将数据从磁盘读取,再写到内存。InnoDB采用局部性原理加载。

一、局部性原理   从磁盘读取数据时,不需要一行一行读取,而是以页为单位读取,操作系统中一页4kb,InnoDB中一页16kb。   二、InnoDB页结构   页是InnoDB管理存储空间的基本单位,一个页的大小默认是16KB。

三、InnoDB行格式

  一行记录可以以不同的格式存在InnoDB中,行格式分别是Compact、Redundant、Dynamic和Compressed行格式。

  我们可以在创建或修改表的语句中指定行格式:

    CREATE TABLE 表名 (列的信息) ROW_FORMAT=行格式名称     ALTER TABLE 表名 ROW_FORMAT=行格式名称

1、Compact行格

   

    (1)变长字段长度列表

  MySQL支持一些变长的数据类型,比如VARCHAR(M)、VARBINARY(M)、TEXT类型,BLOB类型,这些数据类型修饰列称为变长字段。变长字段长度列表即所有变长字段的真实数据占用的字节长度构成的列表。

  VARCHAR(M),M代表最大能存多少个字符。

  (2)NULL标志位(列表)   Compact行格式会把可以值为NULL的列统一管理起来,存一个二进制标记(1为NULL,0不为NULL)在NULL标志位中,如果表中没有允许存储 NULL 的列,则 NULL值列表也不存在了。 

   如:第一行没有null:11111

    第二行前三位null:22 (null标志位:11100)

  (3)记录头信息

    记录头信息用于描述记录,它是由固定的5个字节组成。 5个字节也就是40个二进制位,不同的位代表不同的意思,如图: 

    

  (4)记录的真实数据 

    记录的真实数据除了我们自己定义的列的数据以外,还会有三个隐藏列:

    

2.行溢出数据

 VARCHAR(M)类型的列最多可以占用65535个字节。 如果我们使用 ascii字符集的话,一个字符就代表一个字节。但是VARCHAR(65535)会报错:  

  

 

  原因:存储一个VARCHAR(M)类型的列,其实需要占用3部分存储空间: 1. 真实数据 2. 变长字段真实数据的长度 3. NULL值标识 

  因此,如果该VARCHAR类型的列没有NOT NULL属性,那最多只能存储65532个字节的数据,因为变长字段的长度占用 2个字节,NULL值标识需要占用1个字节。 

 3.行过长导致的页溢出

  一个页的大小一般是16KB,也就是16384字节,而一个VARCHAR(M)类型的列就最多可以存储65533个字节,这 样就可能出现一个页存放不了一条记录。 

   (1)在Compact和Reduntant行格式中,对于占用存储空间非常大的列,在记录的真实数据处只会存储该列的一部分 数据,把剩余的数据分散存储在几个其他的页中,然后记录的真实数据处用20个字节存储指向这些页的「地址和字节数」,从而可以找到剩余数据所在的页。 

     ...

 

  (2)在Dynamic和Compressed行格式中,它们不会在记录的真实数据处 存储一部分数据,而是把所有的数据都存储到其他页面中,只在记录的真实数据处存储其他页面的地址。

     ...

4.Dynamic和Compressed行格式

  这两种行格式类似于COMPACT行格式,只不过在处理行溢出数据时有点区别,如上。另外, Compressed行格式会采用压缩算法对页面进行压缩。 

 

 

 

 

 

 

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

InnoDB基础

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

InnoDB基础

在InnoDB中,数据存储在磁盘上,处理数据时需要先将数据从磁盘读取,再写到内存。InnoDB采用局部性原理加载。一、局部性原理  从磁盘读取数据时,不需要一行一行读取,而是以页为单位读取,操作系统中一页4kb,InnoDB中一页16kb。 二、InnoDB页
InnoDB基础
2018-10-11

Android基础------Activity基础

应用内Activity的跳转方式 一、通过显式意图跳转,如字面意思一样,跳转的目的地是可以明确看到的 二、通过隐式意图跳转,这种方式的跳转需要我们在AndroidManifest.xml文件中为目的Activity配置Action和Cate
2022-06-06

Python基础——1基础

输出print(‘把子肉爱上热干面’,‘哈哈’)  # ‘,’输出为空格输人 name = input(‘提示的内容’)/浮点除法  %.6f//地板除法  整除%  取余python编码问题(采用Unicode编码)ord(‘A’) =
2023-01-30

Python基础--Python3基础语

Python3 基础语法编码默认情况下,Python3源码文件以UTF-8编码,所有字符串都是Unicode字符串。当然也可以为源码文件指定不同的编码,例如:# -*- coding: cp-1252 -*-标识符1.第一个字符必须是字母表
2023-01-31

MySQL基础:基础查询

DQL语言:数据查询语言3.1 基础查询语法select 查询列表from 表名;特点查询列表可以是字段、常量、表达式、函数,也可以是多个查询结果是一个虚拟表示例1、查询单个字段select 字段名 from 表名;2、查询多个字段select 字段名,字段名
MySQL基础:基础查询
2016-06-13

Python基础-Python基础使用

上篇文章 Python基础-初识Python 我们已经知道了什么是Python,Python的用处、和Python的解释器、Python的安装,这篇文章,我们主要讲Python的使用入门本文防盗链:http://python789.blog
2023-01-31

MySQL基础篇(05):逻辑架构图解和InnoDB存储引擎详解

本文源码:GitHub·点这里 || GitEE·点这里一、MySQL逻辑架构1、逻辑架构图基于下面的逻辑架构图,可以大致熟悉MySQL各个架构组件之间的协同工作关系。很经典的C/S架构风格,即客户端/服务端模式。2、分层描述客户端连接通常会进行连接池管理,连
MySQL基础篇(05):逻辑架构图解和InnoDB存储引擎详解
2018-06-02

Python基础篇-Python基础语法

为什么学习pythonhttp://www.apelearn.com/bbs/thread-7739-1-1.html Python的安装 getconf LONG_BIT     查看系统版本多少位 rpm -q python uname
2023-01-31

前端基础入门四(JavaScript基础)

目标:掌握编程的基本思维掌握编程的基本语法我们先来学习JavaScript基础,后续会讲解JavaScript高级。重点内容变量的声明及使用数据类型类型转换运算符JavaScript介绍JavaScript是什么JavaScript是一种运
2023-06-03

Python基础一: 计算机基础,Pyt

1.CPU 内存 硬盘 操作系统CPU:计算机的运算和控制中心,相当于人类的大脑。内存:用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。(暂时存储数据,临时加载数据及应用程序) 4G,8G,16G,32G速度快,效率高,造
2023-01-31

Python基础之面向对象基础

面向对象编程(Object-Oriented Programming,简称OOP)是一种编程思想,它将程序中的数据和操作封装成对象,通过对象之间的交互来实现程序的功能。在Python中,一切皆对象,包括数字、字符串、列表等基本数据类型。Py
2023-09-23

MySQL基础

1. 数据库1.1 数据库概述什么是数据库数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库中的数据进行增加,修改,删除及查询操作。什么是数据库管理系统数据库管理系统(DataBase Management Sy
MySQL基础
2019-04-23

Python基础

主要是复习时总结自己不太熟悉的知识点了(面向Internet的总结)。函数的参数位置参数——按位置依次对应关键字参数——按“键值对”对应func('hello', val = 1)调用时:若有位置参数,位置参数必须在关键字参数的前面,但关键
2023-01-30

flask基础

一、简介      Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请求并对请求进行预处理,然后触发Flask框架,
2023-01-30

python_day1_基础

本章目录:1.1 python版本1.2 python安装1.3 python解释器1.4 字符集1.5 运算符1.6 条件判断        1.7 脚本示例1.1 python版本python最新版本号是2.7.13,3.6.2 官方网
2023-01-31

bash基础

基础知识: 变量: 变量名+指向的内存空间; 变量赋值: var_name=value; 变量类型: 数据存储的格式,表示的数据范围; 字符型,数字型,布尔型; C语音是强变
2023-06-05

PyTorch基础

Infi-chu:http://www.cnblogs.com/Infi-chu/torch.FloatTensor:用于生成数据类型为浮点型的Tensor,参数可以是一个列表,也可以是一个维度。import torcha = torch.
2023-01-30

编程热搜

目录