MySQL Innodb存储引擎中,当页默认的大小是16K时,页中最多存放多少行的记录?

1、题目引入

Innodb存储引擎是面向行的(row-oriented),也就是说数据的存放按行进行,每页存放的行记录是有硬性定义的,当页默认的大小是16K时,页中最多存放多少行的记录?

  • A、1600 行
  • B、8192 行
  • C、16383 行
  • D、7992 行 ✔

2、解答

在数据库和编程语言中,tinyint、smallint、int(有时也称为integer)是三种不同大小的数据类型,用于存储整数值。它们之间的主要区别在于它们能够表示的数字范围不同,以及因此导致的存储空间需求不同。这些类型在MySQL、SQL Server、PostgreSQL等大多数关系型数据库管理系统中都存在,尽管具体的数值范围和存储需求可能略有不同,但基本概念是一致的。

  • tinyint

    • 数值范围:通常是有符号的,范围从-128到127(如果定义为无符号,则是从0到255)。
    • 存储空间:通常占用1个字节(8位)的存储空间。
    • 用途:适用于存储非常小的整数值,如布尔值(尽管在SQL中通常使用BIT或BOOLEAN类型表示布尔值)、状态码等。
  • smallint

    • 数值范围:通常是有符号的,范围从-32,768到32,767(如果定义为无符号,则是从0到65,535)。
    • 存储空间:通常占用2个字节(16位)的存储空间。
    • 用途:适用于存储较小的整数值,如分类ID、年龄等。
  • int 或 integer

    • 数值范围:通常是有符号的,范围从-2,147,483,648到2,147,483,647(如果定义为无符号,则是从0到4,294,967,295)。
    • 存储空间:通常占用4个字节(32位)的存储空间。
    • 用途:适用于存储大多数整数值,如用户ID、订单数量等。

Innodb存储引擎的数据按行进行存储。一页最多的存放的行16*1024/2-200行记录,即7992行。

硬性规定每个页都要预留200字节的空间来存储页面头部信息。
在这里插入图片描述

  • Trx_id(隐藏字段):每次对某行记录进行事务操作时,都会把对应的事务ID赋值到这个字段中
  • Roll_point(隐藏字段):每次对某行记录进行修改时,都会把旧的版本写入到undolog中,然后这个隐藏列就相当于一个指针,可以通过它来找到修改前的信息

3、知识点提示

3.1、表空间(tablespace)

在MySQL中,所有InnoDB存储引擎表中的数据都存储在表空间中。如果用户启用了innodb_file_per_table,那么每张表内的数据可以存储在一个单独的表空间文件(称为独立表空间文件)中,如果没有启用,那么数据都会存储在共享表空间文件中(默认情况下的ibdata0和ibdata1文件)。
在MySQL 5.7中,innodb_file_per_table默认是启用的

mysql> show variables like 'innodb_file_%';
+--------------------------+-----------+
| Variable_name            | Value     |
+--------------------------+-----------+| innodb_file_per_table    | ON        |
+--------------------------+-----------+
4 rows in set (0.00 sec)

独立表空间文件存放的只是这张表的数据、索引和插入缓冲Bitmap页。对于回滚信息、插入缓冲索引页、事务信息、二次写缓冲依然存放于共享表空间文件。

3.2、段(segment)

表空间由各个段组成,常见的段类型有:数据段、索引段、回滚段。
由于InnoDB表采用的是聚簇索引,聚簇索引决定了表中数据的物理存储顺序,所以数据段可以看成是B+树的叶子节点,索引段可以看成是B+树的非叶子节点。

3.3、区(extend)

一个段由多个区组成,区由多个连续页组成,每个区的大小为1MB,默认情况下,每个页的大小为16KB

mysql> show variables like 'innodb_page_size';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| innodb_page_size | 16384 |
+------------------+-------+

即一个区中一共有64个连续页。用户可通过innodb_page_size参数设置每个页的大小。
默认情况下,用户在创建一张InnoDB表后,该表对应的独立表空间文件为96KB,在每个段开始时会先用32个碎片页来存放数据,使用完这32个页后才是64个连续页的申请。这么做是考虑到有些表的数据相对来说是比较少的,可以节省磁盘空间,因为申请64个页(即1个区)需要1MB空间。

3.4、页(page)

页是InnoDB磁盘管理的最小单位,默认大小为16KB。常见的页类型有:

  • 数据页(B-tree Node)
  • undo页(undo Log Page)
  • 系统页(System Page)
  • 事务数据页(Transaction system Page)
  • 插入缓冲位图页(Insert Buffer Bitmap)
  • 插入缓冲空闲列表页(Insert Buffer Free List)
  • 未压缩的二进制大对象页(Uncompressed BLOB Page)
  • 压缩的二进制大对象页(compressed BLOB Page)

3.5、行(Row)

InnoDB存储引擎将数据按行进行存放,每个页最多存放7992行记录(16KB除以2-200),InnoDB存储引擎提供了Compact、Redundant、Compressed、Dynamic四种格式来存放行记录数据,用户可通过命令show table status like 'table_name’来查看

(root@localhost)[superdb]> select * from dept;
+--------+------------+----------+
| deptno | dname      | loc      |
+--------+------------+----------+
|     10 | ACCOUNTING | NEW YORK |
|     20 | RESEARCH   | DALLAS   |
|     30 | SALES      | CHICAGO  |
|     40 | OPERATIONS | BOSTON   |
+--------+------------+----------+
4 rows in set (0.01 sec)(root@localhost)[superdb]> show table status like 'dept';+------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+--------------------+----------+----------------+-----------------+
| Name | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time         | Update_time | Check_time | Collation          | Checksum | Create_options | Comment         |
+------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+--------------------+----------+----------------+-----------------+
| dept | InnoDB |      10 | Dynamic    |    4 |           4096 |       16384 |               0 |            0 |         0 |             41 | 2024-06-19 11:34:47 | NULL        | NULL       | utf8mb4_0900_ai_ci |     NULL |                | 员工部门表      |
+------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+--------------------+----------+----------------+-----------------+
1 row in set (0.19 sec)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/42323.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Python协同过滤的旅游景点推荐系统,采用Django框架,MySQL数据存储,Bootstrap前端,echarts可视化实现

随着旅游业的迅速发展,个性化旅游推荐系统成为提升用户体验和促进旅游市场增长的重要工具。本研究旨在设计并实现一种基于Python协同过滤的旅游景点推荐系统,结合Django框架、MySQL数据库存储、Bootstrap前端框架以及echarts数据可视化技术,为…

【粉丝福利 | 第8期】值得收藏!推荐10个好用的数据血缘工具

⛳️ 写在前面参与规则!!! ✅参与方式:关注博主、点赞、收藏、评论,任意评论(每人最多评论三次) ⛳️本次送书1~4本【取决于阅读量,阅读量越多,送的越多】 目前市面上绝…

数据迁移探索

概念 数据迁移是指将数据从一个计算环境或存储系统移动到另一个计算环境或存储系统。 随着公司业务的发展,出于成本优化、系统升级、分库分表、整合数据等原因。数据迁移工作在日常工作中会陆续出现。 我们可以将数据迁移分成两个部分,第一部分是数据…

springboot高职院校毕业生信息管理系统-计算机毕业设计源码27889

摘 要 基于Java语言开发的高职院校毕业生信息管理系统旨在提供一个便捷、高效的方式来管理毕业生的相关信息。系统包括学生基本信息管理、成绩管理、就业信息管理等模块,通过界面友好、操作简单的设计,方便管理员快速查询和更新学生信息。系统还提供数据…

采用前后端分离技术架构+java语言开发的全套产科信息管理系统源码 可与医院HIS、LIS、PACS、RIS等系统进行对接

采用前后端分离技术架构java语言开发的全套产科信息管理系统源码 可与医院HIS、LIS、PACS、RIS等系统进行对接 什么是产科信息管理系统-建档管理? 产科信息管理系统建档管理通过信息技术实现了孕产妇健康信息的电子化、网络化和智能化管理,提高了医疗服…

Riscv 架构的合规测试

为啥直接关注riscv-arch-test,是因为RISCOF 测试框架使用的是riscv-arch-test 1. The architectural test 架构测试是一个单一的测试,代表了可编译和运行的最小测试代码。它是用汇编代码编写的,其产品是test signature。一个架构测试可能由…

微信小程序推送消息java版

需求背景 使用springboot2微信小程序推送消息。百度了一下看了一篇文章整体还可以,这里推荐一下。 教程解析 1、微信平台开通订阅消息。 2、添加模板。 3、springboot后台接口开发 微信平台验证地址接口开发,然后部署到公网服务器。 4、微信平台验…

基于FPGA的数字信号处理(15)--定点数的舍入模式(6)向0取整fix

前言 在之前的文章介绍了定点数为什么需要舍入和几种常见的舍入模式。今天我们再来看看另外一种舍入模式:向上取整fix。 10进制数的fix fix:也叫 向0取整。它的舍入方式是数据往0的方向,舍入到最近的整数,比如1.75 fix到2&#xf…

将WordPress的文章重新排序的3个方法

有效的调整文章显示顺序看开可以更好突出内容,还可以保持网站的新鲜感,今天我将带您了解三种方法,通过重新排序文章显著提升网站的吸引力。我们将逐步讲解从调整设置到使用插件以及“置顶”文章的每一种方法,确保WordPress 新手也…

利用python进行数据分析 —— python正则表达式(持续更新中!)

文章目录 利用python进行数据分析 —— python基础知识进阶重点笔记:正则表达式re.match 匹配开头re.search 全文匹配re.sub 替换删除re.compile 编译正则findall 返回列表finditer 返回迭代器re.split 分割返回列表(?P...) 分组匹配正则表达符号、修饰符通配符1 ^…

谷歌上新!最强开源模型Gemma 2,27B媲美LLaMA3 70B,挑战3140亿Grok-1

文章目录 LMSYS Chatbot Arena:开源模型性能第一Gemma为什么这么强?架构创新对AI安全性的提升 A领域竞争激烈,GPT-4o 和 Claude 3.5 Sonnet 持续发力,谷歌迅速跟进。 谷歌为应对AI竞争所采取的策略:依靠 Gemini 闭源模…

hdu物联网硬件实验3 按键和中断

学院 班级 学号 姓名 日期 成绩 实验题目 按键和中断 实验目的 实现闪灯功能转换 硬件原理 无 关键代码及注释 /* Button Turns on and off a light emitting diode(LED) connected to digital pin 13, when pressing a pushbutton attached…

解决WSL2报错:当前电脑配置不支持WSL2,请启用虚拟机平台 Windows 功能并确保在 BIOS 中启用虚拟化

事情要追溯到突发奇想下载了腾讯的手游模拟器开始。。。因为一直闪退,模拟器自检就要求把虚拟化功能关闭了,结果还是一直闪退,WSL2也给我报错了。。。大无语 主要通过以下两个步骤解决,操作了之后需要把电脑重启: 一、…

小程序做自定义分享封面图,Canvas base64图片数据真机上不显示?【已解决】

首选说一下需求,做一个小程序分享,但是封面图要自定义,除了要有对应商品还有有背景图,商品名。类似这种 实现逻辑,把商品图和背景图,再加上价格和商品名用canvas 渲染出来 这是弄好之后的效果图&#xff0…

SpringSecurity中文文档(Servlet Method Security)

Method Security 除了在请求级别进行建模授权之外&#xff0c;Spring Security 还支持在方法级别进行建模。 您可以在应用程序中激活它&#xff0c;方法是使用EnableMethodSecurity 注释任何Configuration 类&#xff0c;或者将 < method-security > 添加到任何 XML 配…

springbootAl农作物病虫害预警系统-计算机毕业设计源码21875

摘要 随着农业现代化的推进&#xff0c;农作物病虫害的防治已成为农业生产中的重要环节。传统的病虫害防治方法往往依赖于农民的经验和观察&#xff0c;难以准确、及时地预测和防控病虫害的发生。因此&#xff0c;开发一种基于现代信息技术的农作物病虫害预警系统&#xff0c;对…

【计算机毕业设计】012基于微信小程序的科创微应用平台

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

解决vite 断点调试定位不准确问题

问题&#xff1a;vite构建时&#xff0c;控制台报错行数等信息定位不准确或debugger断点调试定位不准确 解决&#xff1a;F12后打开设置面板&#xff0c;把“JavaScript源代码映射”去掉可临时解决&#xff0c;如需永久解决需升级vite到最新版 还有一种&#xff1a; 参考&…

7.9 cf div3

BProblem - B - Codeforces 题目解读&#xff1a; 找到严格大于相邻数字的数&#xff0c;将其减一&#xff0c;直到整个数组成为稳定的&#xff08;不存在数字严格大于相邻数&#xff09; ac代码 #include<bits/stdc.h> typedef long long ll;#define IOS ios::sync_w…

免费白嫖A100活动开始啦,InternLM + LlamaIndex RAG 实践

内容来源&#xff1a;Docs 前置知识&#xff1a; 检索增强生成&#xff08;Retrieval Augmented Generation&#xff0c;RAG&#xff09; LlamaIndex LlamaIndex 是一个上下文增强的 LLM 框架&#xff0c;旨在通过将其与特定上下文数据集集成&#xff0c;增强大型语言模型&a…