Mysql高級1-存儲引擎

来源:https://www.cnblogs.com/Se7eN-HOU/archive/2023/07/24/17577501.html
-Advertisement-
Play Games

一、Mysql體繫結構 1.1、連接層 最上層是一個客戶端和鏈接服務,主要完成一些類似於鏈接處理,授權認證,及相關的安全方案,伺服器也會為安全接入的而每個客戶端驗證它所具有的操作許可權 1.2、服務層 第二層架構主要完成大多數的核心服務功能,如SQL介面,並完成緩存的查詢,SQL的分析和優化,部分內置 ...


一、Mysql體繫結構

  

   1.1、連接層

    最上層是一個客戶端和鏈接服務,主要完成一些類似於鏈接處理,授權認證,及相關的安全方案,伺服器也會為安全接入的而每個客戶端驗證它所具有的操作許可權

  1.2、服務層

    第二層架構主要完成大多數的核心服務功能,如SQL介面,並完成緩存的查詢,SQL的分析和優化,部分內置函數的執行,所有跨存儲引擎的功能葉子啊這一層實現如函數等。

  1.3、引擎層

    存儲引擎真正的負責了Mysql中數據的存儲和提起,伺服器通過api和存儲引擎進行通信,不同的存儲引擎具有不同的功能,這樣我們可以根據自己的需要,來選取合適的存儲引擎

  1.4、存儲層

    主要是將數據存儲在文件系統之上,並完成與存儲引擎的交互

 

二、存儲引擎介紹

  2.1、簡介:

    存儲引擎就是存儲數據,建立索引,更新/查詢數據等技術的實現方式,存儲引擎是基於表的,而不是基於庫的,所以存儲引擎也可以被稱為表類型

  2.2、指定引擎語法

create table 表名(
   欄位1 欄位1類型 [comment 欄位1註釋],
   ......
   欄位2 欄位n類型 [comment 欄位n註釋]
)engine=InnoDB [comment 表註釋];

    說明:mysql5.5之後預設的儲存引擎就是InnoDB類型

 

  2.3、查看資料庫支持的存儲引擎類型:show engines;

mysql> show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
| MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
9 rows in set (0.01 sec)

 

三、InnoDB引擎

  3.1、Innodb引擎介紹

    InnoDB是一種兼顧高可靠性和高性能的通用存儲引擎,在Mysql5.5之後,InnoDB是預設的Mysql存儲引擎

  3.2 InnoDB引擎特點

    • DML操作遵循ACID模型,支持事務; 
    • 行級鎖,提高併發訪問性能
    • 支持外鍵foreign key約束,保證數據的完整性和正確性   

  3.3 InnoDB引擎文件

    xxx.ibd: xxx代表表名,InnoDB引擎的每張表都會對應這樣一個表空間文件,存儲該表的表結構(frm,sdi)、數據和索引

    參數:innodb_file_per_table 預設打開的,每一張表都有一個獨立的表結構 

  3.4 InnoDB引擎的邏輯存儲結構

  

 

四、MyISAM引擎

  4.1 MyISAM引擎介紹

    MyISAM是Mysql5.5以前的預設儲存

  4.2 MyISAM引擎特點

    • 不支持事務,不支持外鍵
    • 支持表鎖,不支持行鎖
    • 訪問速度快

  4.3 MyISAN引擎文件

    • xxx.sdi:儲存表結構信息
    • xxx.MYD:儲存數據
    • xxx.MYI:儲存索引  

 

五、Memory引擎

  5.1 Memory引擎介紹

    Memory引擎的表數據是存儲在記憶體中的,由於收到硬體問題,或斷電問題的影響,只能將這些表作為臨時表或者緩存表使用

  5.2 Memory引擎特點

    • 記憶體存放,讀取速度塊
    • hash索引

  5.3 Memory文件

    xxx.sdi:存儲表結構信息

 

六、儲存引擎特點對比

  

 

七、存儲引擎選擇

  1、InnoDB引擎

    InnoDB是Mysql的預設儲存引擎,支持事務,外鍵,如果應用對事務的完整性有比較高的要求,併發條件下要求數據的一致性,數據操作除了插入和查詢之外,還包括很多的更新,刪除操作,那麼InnoDB儲存引擎是比較合適的選擇。

  2、MyISAM引擎

    如果是以讀操作和插入操作為主,只有很少的更新和刪除操作,並且對事務的完整性,併發性要求不是很高,那麼選擇這個儲存引擎是非常合適的,

  3、Memory引擎

    將所有的數據保存在記憶體中,訪問速度塊,通常用於臨時表及緩存,Memory的缺陷就是對錶的大小限制,太大的表無法緩存在記憶體中,而且無法保障數據的安全性。

 


侯哥語錄:我曾經是一個職業教育者,現在是一個自由開發者。我希望我的分享可以和更多人一起進步。分享一段我喜歡的話給大家:"我所理解的自由不是想乾什麼就乾什麼,而是想不幹什麼就不幹什麼。當你還沒有能力說不得時候,就努力讓自己變得強大,擁有說不得權利。"
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • # 面試常考:C# 委托(delegate、Action、Func、predicate)和事件 剛開始工作的時候,覺得委托和事件有些神秘,而當你理解他們之後,也覺得好像沒有想象中的那麼難,這篇博文算是自己對委托和事件的一次梳理和總結。 ## 二、委托 C#中的委托,相當於C++中的指針函數,但委托是 ...
  • 大家好,我是 god23bin,歡迎回到咱們的《**一分鐘學一個 Linux 命令**》系列,今天我要講的是一個比較**危險**的命令,rm 命令,沒錯,你可以沒聽過 rm 命令,但是**刪庫跑路**你不可能沒聽過吧?什麼?沒聽過,沒事,現在你就聽過了,我剛剛已經講了,哈哈哈。好了,廢話不多說,現在... ...
  • 哈嘍大家好,我是鹹魚 我們在跟別人網上聊天的時候,有沒有想過你發送的信息是怎麼傳到對方的電腦上的 又或者我們在上網衝浪的時候,有沒有想過 HTML 頁面是怎麼顯示在我們的電腦屏幕上的 無論是我們跟別人聊天還是上網衝浪,其實都依靠於電腦網路這項技術 > 電腦網路是指將多台電腦通過通信設備和傳輸介 ...
  • 一 、什麼是中斷 ? 單片機的中斷具有外部中斷和內部中斷,對於中斷的理解很多博主講解得很好,大家可以去學習一下,中斷在單片機的學習過程中是非常重要的內容。 我認為中斷最為簡單的理解就是: 暫停當前的工作,去處理別的工作,別的工作處理完成後再回來繼續完成當前的工作。假如你正在吃飯,媽媽叫你去收衣服,此 ...
  • 對於磁碟和文件系統來講 Buffer對應磁碟數據的緩存,用於讀或寫。 Cache對應文件數據的頁緩存,用於讀或寫。 **Buffer**可以用來聚合多個寫操作,**Cache**則可以理解為預讀操作,文件系統通過這兩種方式提升磁碟IO性能。 對於網路協議來講 只有**Buffer**的概念,該**B ...
  • 當你使用PlatformIO創建STC89C516+項目後,正準備興緻勃勃的開始51單片機的學習。 突然,一個報錯從天而降! ```txt -- Configuring done -- Generating done CMake Error: Running 'D:/JetBrains/CLion ...
  • 先敘述我的問題出現情況: 我在Windows域賬號中使用smb連接Linux伺服器的共用文件夾時報多重連接的錯,報錯具體信息:“不允許一個用戶使用一個以上用戶名與伺服器或共用資源的多重連接。中斷與此伺服器或共用資源的所有連接,然後再試一次。” 查找並測試過但不成功的方法: 1.刪除Windows憑據 ...
  • ![](https://img2023.cnblogs.com/blog/3076680/202307/3076680-20230724164807364-1834666542.png) # 1. 創建固定大小的數據桶 ## 1.1. 數據放入若幹個大小固定的桶(bucket)里,每個桶的元素個數是 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...