【MySQL】存儲引擎 - ARCHIVE、BLACKHOLE、MERGE詳解

📢博客主頁:https://blog.csdn.net/2301_779549673
📢博客倉庫:https://gitee.com/JohnKingW/linux_test/tree/master/lesson
📢歡迎點贊 👍 收藏 ?留言 📝 如有錯誤敬請指正!
📢本文由 JohnKi 原創,首發于 CSDN🙉
📢未來很長,值得我們全力奔赴更美好的生活?

在這里插入圖片描述

在這里插入圖片描述

文章目錄

  • 🏳??🌈一、ARCHIVE 存儲引擎的特性
  • 🏳??🌈二、創建 ARCHIVE 表
  • 🏳??🌈三、BLACKHOLE 存儲引擎的特性
  • 🏳??🌈四、BLACKHOLE 存儲引擎的用途
  • 🏳??🌈五、創建BLACKHOLE表
  • 🏳??🌈六、MERGE 存儲引擎特性
  • 🏳??🌈七、創建MERGE表
  • 🏳??🌈八、操作 MERGE 表
  • 👥總結


使用 ARCHIVE 存儲引擎創建的表,存儲大量不被索引的數據且占用空間很小,一般用于歸檔數據的存儲。

🏳??🌈一、ARCHIVE 存儲引擎的特性

在這里插入圖片描述

  1. 支持 INSERTREPLACESELECT,但不支持 DELETEUPDATE
  2. 支持列的 AUTO INCREMENT 屬性,該列可以有唯一約束,且手動指定的值不能小于該列的最大值;
  3. 不支持索引,在任何列上嘗試建立索引都會報錯;
  4. 插入時,數據將被壓縮,ARCHIVE 引擎使用 zlib 無損數據壓縮; INSERT 語句只是將數據寫入壓縮緩沖區并且根據需要刷新到磁盤,當執行 SELECT 時會強制刷新緩沖區:
  5. 檢索時,按需要進行解壓縮,不支持行緩存;
  6. SELECT 操作執行全表掃描,找出當前查詢的行,并讀取行數;
  7. 使用行級鎖定
  8. 不支持表分區

🏳??🌈二、創建 ARCHIVE 表

在MySQL 8.0中 InnoDB 是默認引擎,所以在創建表時需要指定 ENGINE=ARCHIVE

# 創建?個使?ARCHIVE存儲引擎的表
CREATE TABLE t_archive (id int(11) UNIQUE AUTO_INCREMENT,name varchar(20)
) ENGINE = ARCHIVE;

創建 ARCHIVE 表會根據表名生成兩個不同后綴名文件,

  • 分別是以 .ARZ 為后綴的數據文件,
  • .sdi 為后綴的表信息描述文件(JSON格式),
  • .ARN 文件在優化操作期間可能會出現。

在這里插入圖片描述

🏳??🌈三、BLACKHOLE 存儲引擎的特性

BLACKHOLE 存儲引擎就像?個"?洞",接受數據,但不存儲數據,檢索時總是返回?個空結果

  • BLACKHOLE 表不會存儲任何數據,但如果啟用了基于語句的二進制日志記錄,則會記錄 SQL語句并將其復制到副本服務器
  • 支持索引;
  • 不支持分區;

🏳??🌈四、BLACKHOLE 存儲引擎的用途

  • 驗證轉儲?件語法
  • 通過?較啟?和不啟??進制?志記錄的性能,測量?進制?志記錄的開銷;
  • 本質上是?個 "?操作"的存儲引擎,可?于查找與存儲引擎本??關的性能瓶頸

🏳??🌈五、創建BLACKHOLE表

  • 在MySQL 8.0中 InnoDB 是默認引擎,所以在創建表時需要指定 ENGINE=BLACKHOLE
  • 創建 BLACKHOLE 表時,服務器會在全局數據字典中創建表定義并?成 .sdi 為后綴的表信息描述?件
mysql> CREATE TABLE t_blackhole(id INT, content CHAR(10)) ENGINE = BLACKHOLE;
Query OK, 0 rows affected (0.03 sec)mysql> INSERT INTO t_blackhole VALUES(1,'record one'),(2,'record two');
Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0mysql> SELECT * FROM t_blackhole;
Empty set (0.00 sec)

在這里插入圖片描述

🏳??🌈六、MERGE 存儲引擎特性

MERGE 存儲引擎,也稱為 MRG_MyISAM 引擎,允許MySQL DBA或開發?員在邏輯上將?系列相同的MyISAM表分組,并將它們作為?個對象引?。適?于VLDB(Very Large Data Bases)環境,如數據倉庫。這里的相同表示所有表中的列都有相同的數據類型和索引信息。

?意圖如下

在這里插入圖片描述

🏳??🌈七、創建MERGE表

  • 在MySQL8.0中 InnoDB 是默認引擎,所以在創建表時需要指定 ENGINE=MERGE
  • 創建MERGE表必須指定 UNION=(list-of-tables) 選項,表示要使用哪些MyISAM表;
  • 還可以通過指定 INSERT_METHOD 選項來控制如何對MERGE表進行插入操作,FIRSTLAST 值分別表示在第一個或最后一個基礎表中進行插入
  • 如果沒有指定 INSERT_METHOD 選項,或者指定它的值為 NO ,那么在 MERGE 表中執行插入將會報錯;
# 創建基礎表1
mysql> CREATE TABLE test_m1 (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
content CHAR(20)) ENGINE=MyISAM;# 創建基礎表2
mysql> CREATE TABLE test_m2 (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
content CHAR(20)) ENGINE=MyISAM;# 向基礎表中寫?數據
mysql> INSERT INTO test_m1 (content) VALUES ('Testing1'),('table1'),('test_m1');
mysql> INSERT INTO test_m2 (content) VALUES ('Testing2'),('table2'),('test_m2');# 創建MERGE表
mysql> CREATE TABLE t_merge (
id INT NOT NULL AUTO_INCREMENT,
content CHAR(20), INDEX(id))
ENGINE=MERGE UNION=(test_m1,test_m2) INSERT_METHOD=LAST;

創建 MERGE 表時,會在磁盤上創建一個.mrg 文件,其中包含了基礎MyISAM表的名稱。
MERGE的表格式存儲在MySOL數據字典中;
.sdi 為后綴的表信息描述文件;

在這里插入圖片描述
在這里插入圖片描述

🏳??🌈八、操作 MERGE 表

基礎表中的 id 列作為 PRIMARY KEY 索引,但在MERGE表中并不作為主鍵,但是可以被索引。

因為 MERGE 表不能對基礎表集強制唯一性,類似的,基礎表中具有 UNIOUE 索引的列可以在 MERGE 表中被索引,但不能作為唯一約束

查詢示例:

mysql> select * from t_merge;
+----+----------+
| id | content  |
+----+----------+
|  1 | Testing1 |
|  2 | table1   |
|  3 | test_m1  |
|  1 | Testing2 |
|  2 | table2   |
|  3 | test_m2  |
+----+----------+
6 rows in set (0.00 sec)

要將MERGE表重新映射到不同的MyISAM基礎表集合,您可以使用以下方法之一

  • 刪除 MERGE 表并重新創建:。
  • 使用 ALTER TABLE tbl name UNION=(..) 修改基礎表的集合;
  • ALTER TABLE…UNION=()列表為空時,表示刪除所有基礎表

使用 DROP TABLE 只會刪除 MERGE 表定義,基礎 MyISAM 表不受影響。

關于MERGE表的替代方案可以使用表分區,可以支持主鍵索引,唯一索引,全文索引等,我們在分庫分表與表分區專題中介紹


👥總結

本篇博文對 ? 做了一個較為詳細的介紹,不知道對你有沒有幫助呢

覺得博主寫得還不錯的三連支持下吧!會繼續努力的~

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/905410.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/905410.shtml
英文地址,請注明出處:http://en.pswp.cn/news/905410.shtml

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

相關文章

5.Redission

5.1 前文鎖問題 基于 setnx 實現的分布式鎖存在下面的問題: 重入問題:重入問題是指 獲得鎖的線程可以再次進入到相同的鎖的代碼塊中,可重入鎖的意義在于防止死鎖,比如 HashTable 這樣的代碼中,他的方法都是使用 sync…

C語言主要標準版本的演進與核心區別的對比分析

以下是C語言主要標準版本的演進與核心區別的對比分析 K&R C(1978年) 定位?:非標準化的原始版本,由Brian Kernighan和Dennis Ritchie定義 特性?: 基礎語法:函數聲明無參數列表(如int func…

【C++設計模式之Template Method Pattern】

C設計模式之Template Method Pattern 模式定義核心思想動機(Motivation)結構(Structure)實現步驟應用場景要點總結 模式定義 模式定義: 定義一個操作中的算法的骨架(穩定),而將一些步驟延遲(變化)到子類中。Template Method使得子…

【動態導通電阻】p-GaN HEMTs正向和反向導通下的動態導通電阻

2024 年,浙江大學的 Zonglun Xie 等人基于多組雙脈沖測試方法,研究了兩種不同技術的商用 p-GaN 柵極 HEMTs 在正向和反向導通模式以及硬開關和軟開關條件下的動態導通電阻(RON)特性。實驗結果表明,對于肖特基型 p-GaN 柵極 HEMTs,反向導通時動態 RON 比正向導通高 3%-5%;…

PDFMathTranslate:科學 PDF 文件翻譯及雙語對照工具

PDFMathTranslate:科學 PDF 文件翻譯及雙語對照工具 在科研和學習過程中,我們經常會遇到大量的英文 PDF 文獻,翻譯這些文獻成為了一項繁瑣且耗時的工作。PDFMathTranslate 是一款強大的科學 PDF 文件翻譯及雙語對照工具,它能夠保…

Flutter PIP 插件 ---- 為iOS 重構PipController, Demo界面,更好的體驗

接上文 Flutter PIP 插件 ---- 新增PipActivity,Android 11以下支持自動進入PIP Mode 項目地址 PIP, pub.dev也已經同步發布 pip 0.0.3,你的加星和點贊,將是我繼續改進最大的動力 在之前的界面設計中,還原動畫等體驗一…

【Ansible】之inventory主機清單

前言 本篇博客主要解釋Ansible主機清單的相關配置知識 一、inventory 主機清單 Inventory支持對主機進行分組,每個組內可以定義多個主機,每個主機都可以定義在任何一個或多個主機組內。 如果是名稱類似的主機,可以使用列表的方式表示各個主機…

基于幾何布朗運動的股價預測模型構建與分析

基于幾何布朗運動的股價預測模型構建與分析 摘要 本文建立基于幾何布朗運動的股價預測模型,結合極大似然估計與蒙特卡洛模擬,推導股價條件概率密度函數并構建動態預測區間。實證分析顯示模型在標普500指數預測中取得89%的覆蓋概率,波動率估…

【前端】【JavaScript】【總復習】四萬字詳解JavaScript知識體系

JavaScript 前端知識體系 📌 說明:本大綱從基礎到高級、從語法到應用、從面試到實戰,分層級講解 JavaScript 的核心內容。 一、JavaScript 基礎語法 1.1 基本概念 1.1.1 JavaScript 的發展史與用途 1. 發展簡史 1995 年:JavaS…

[Java實戰]Spring Boot 3 整合 Apache Shiro(二十一)

[Java實戰]Spring Boot 3 整合 Apache Shiro(二十一) 引言 在復雜的業務系統中,安全控制(認證、授權、加密)是核心需求。相比于 Spring Security 的重量級設計,Apache Shiro 憑借其簡潔的 API 和靈活的擴…

PyTorch API 6 - 編譯、fft、fx、函數轉換、調試、符號追蹤

文章目錄 torch.compiler延伸閱讀 torch.fft快速傅里葉變換輔助函數 torch.func什么是可組合的函數變換?為什么需要可組合的函數變換?延伸閱讀 torch.futurestorch.fx概述編寫轉換函數圖結構快速入門圖操作直接操作計算圖使用 replace_pattern() 進行子圖…

可觀測性方案怎么選?SelectDB vs Elasticsearch vs ClickHouse

可觀測性(Observability)是指通過系統的外部輸出數據,推斷其內部狀態的能力。可觀測性平臺通過采集、存儲、可視化分析三大可觀測性數據:日志(Logging)、鏈路追蹤(Tracing)和指標&am…

機器人廚師上崗!AI在餐飲界掀起新風潮!

想要了解人工智能在其他各個領域的應用,可以查看下面一篇文章 《AI在各領域的應用》 餐飲業是與我們日常生活息息相關的行業,而人工智能(AI)正在迅速改變這個傳統行業的面貌。從智能點餐到食材管理,再到個性化推薦&a…

Linux動態庫靜態庫總結

靜態庫生成 g -c mylib.cpp -o mylib.o ar rcs libmylib.a mylib.o 動態庫生成 g -fPIC -shared mylib.cpp -o libmylib.so -fPIC:生成位置無關代碼(Position-Independent Code),對動態庫必需。 庫文件使用: 靜態庫&…

通過user-agent來源判斷阻止爬蟲訪問網站,并防止生成[ error ] NULL日志

一、TP5.0通過行為&#xff08;Behavior&#xff09;攔截爬蟲并避免生成 [ error ] NULL 錯誤日志 1. 創建行為類&#xff08;攔截爬蟲&#xff09; 在 application/common/behavior 目錄下新建BlockBot.php &#xff0c;用于識別并攔截爬蟲請求&#xff1a; <?php name…

OpenHarmony平臺驅動開發(十五),SDIO

OpenHarmony平臺驅動開發&#xff08;十五&#xff09; SDIO 概述 功能簡介 SDIO&#xff08;Secure Digital Input and Output&#xff09;由SD卡發展而來&#xff0c;與SD卡統稱為MMC&#xff08;MultiMediaCard&#xff09;&#xff0c;二者使用相同的通信協議。SDIO接口…

使用FastAPI和React以及MongoDB構建全棧Web應用03 全棧開發快速入門

一、什么是全棧開發 A full-stack web application is a complete software application that encompasses both the frontend and backend components. It’s designed to interact with users through a web browser and perform actions that involve data processing and …

Coco AI 開源應用程序 - 搜索、連接、協作、您的個人 AI 搜索和助手,都在一個空間中。

一、軟件介紹 文末提供程序和源碼下載 Coco AI 是一個統一的搜索平臺&#xff0c;可將您的所有企業應用程序和數據&#xff08;Google Workspace、Dropbox、Confluent Wiki、GitHub 等&#xff09;連接到一個功能強大的搜索界面中。此存儲庫包含為桌面和移動設備構建的 Coco 應…

CSS經典布局之圣杯布局和雙飛翼布局

目標&#xff1a; 中間自適應&#xff0c;兩邊定寬&#xff0c;并且三欄布局在一行展示。 圣杯布局 實現方法&#xff1a; 通過float搭建布局margin使三列布局到一行上relative相對定位調整位置&#xff1b; 給外部容器添加padding&#xff0c;通過相對定位調整左右兩列的…

# 實時英文 OCR 文字識別:從攝像頭到 PyQt5 界面的實現

實時英文 OCR 文字識別&#xff1a;從攝像頭到 PyQt5 界面的實現 引言 在數字化時代&#xff0c;文字識別技術&#xff08;OCR&#xff09;在眾多領域中發揮著重要作用。無論是文檔掃描、車牌識別還是實時視頻流中的文字提取&#xff0c;OCR 技術都能提供高效且準確的解決方案…