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.pswp.cn/web/42323.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/42323.shtml
英文地址,請注明出處:http://en.pswp.cn/web/42323.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于Python協同過濾的旅游景點推薦系統,采用Django框架,MySQL數據存儲,Bootstrap前端,echarts可視化實現

隨著旅游業的迅速發展,個性化旅游推薦系統成為提升用戶體驗和促進旅游市場增長的重要工具。本研究旨在設計并實現一種基于Python協同過濾的旅游景點推薦系統,結合Django框架、MySQL數據庫存儲、Bootstrap前端框架以及echarts數據可視化技術,為…

Flask發布一個及時止損(止盈)服務(二)

生成可視化的止盈止損結果(圖片) 媽的,還是得用 akshare,還需要指定python版本3.9以上 conda remove -n fonxsys --all conda search pythonconda create -n fonxsys python3.9 conda activate fonxsys python.exe -m pip insta…

【粉絲福利 | 第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…

Docker技術簡介

Docker是一種開源的容器化平臺,旨在簡化應用程序的創建、部署和運行過程。它通過將應用程序及其所有依賴項打包到一個稱為容器的可移植單元中來實現這一目標。以下是Docker技術的簡介: Docker的核心概念 1、容器(Container)&…

將WordPress的文章重新排序的3個方法

有效的調整文章顯示順序看開可以更好突出內容,還可以保持網站的新鮮感,今天我將帶您了解三種方法,通過重新排序文章顯著提升網站的吸引力。我們將逐步講解從調整設置到使用插件以及“置頂”文章的每一種方法,確保WordPress 新手也…

Linux將mysql導出

1、基礎導出 要在Linux系統中將MySQL數據庫導出,通常使用mysqldump命令行工具。以下是一個基本的命令示例,用于導出整個數據庫: mysqldump -u username -p database_name > export_filename.sql 其中: username 是你的MySQL用…

利用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…

AI端側大模型未來發展趨勢

一、定義與優勢 端側AI大模型是指基于移動終端設備上的大型神經網絡模型,這些模型能夠在本地設備(如智能手機、PC、汽車、XR以及物聯網設備等)上直接運行和處理人工智能算法,實現如圖像識別、語音識別、自然語言處理等任務。端側…

解決WSL2報錯:當前電腦配置不支持WSL2,請啟用虛擬機平臺 Windows 功能并確保在 BIOS 中啟用虛擬化

事情要追溯到突發奇想下載了騰訊的手游模擬器開始。。。因為一直閃退,模擬器自檢就要求把虛擬化功能關閉了,結果還是一直閃退,WSL2也給我報錯了。。。大無語 主要通過以下兩個步驟解決,操作了之后需要把電腦重啟: 一、…

docker里日志分割的方法

在Docker中對日志進行按大小分割(log rotation)是一個常見的需求,因為長時間運行的容器可能會生成大量日志,導致磁盤空間不足。Docker提供了內置的日志管理功能,可以通過配置日志驅動來實現日志的自動分割。以下是具體…

安卓系統裁剪原生app

目錄 前言一、修改build目錄main.mk二、修改build目錄product.mk三、在.mk中使用PRODUCT_DEL_PACKAGES屬性 前言 安卓系統裁剪預置應用或服務基本步驟 一、修改build目錄main.mk ifdef FULL_BUILD# The base list of modules to build for this product is specified# by th…

小程序做自定義分享封面圖,Canvas base64圖片數據真機上不顯示?【已解決】

首選說一下需求,做一個小程序分享,但是封面圖要自定義,除了要有對應商品還有有背景圖,商品名。類似這種 實現邏輯,把商品圖和背景圖,再加上價格和商品名用canvas 渲染出來 這是弄好之后的效果圖&#xff0…