資料庫的存儲引擎

来源:https://www.cnblogs.com/guokaifeng/archive/2019/07/06/11144139.html
-Advertisement-
Play Games

[TOC] 資料庫的存儲引擎 什麼是存儲引擎? MySQL中的數據用各種不同的技術存儲在文件(或者記憶體)中。這些技術中的每一種技術都使用不同的存儲機制、 索引技巧、鎖定水平並且最終提供廣泛的不同的功能和能力。通過選擇不同的技術,你能夠獲得額外的速度或者功能, 從而改善你的應用的整體功能。在MySQL ...


目錄

資料庫的存儲引擎

什麼是存儲引擎?

  • MySQL中的數據用各種不同的技術存儲在文件(或者記憶體)中。這些技術中的每一種技術都使用不同的存儲機制、
    索引技巧、鎖定水平並且最終提供廣泛的不同的功能和能力。通過選擇不同的技術,你能夠獲得額外的速度或者功能,
    從而改善你的應用的整體功能。在MySQL中存儲引擎(也稱作表類型)。

mysql支持哪些存儲引擎?

mysql5.6支持的存儲引擎包括 InnoDB、MyISAM、MEMORY、CSV、BLACKHOLE、FEDERATED、MRG_MYISAM、
ARCHIVE、PERFORMANCE_SCHEMA。其中NDB和InnoDB提供事務安全表,其他存儲引擎都是非事務安全表。

各種存儲引擎的特性

併發性:某些應用程式比其他應用程式具有很多的顆粒級鎖定要求(如行級鎖定)。
事務支持:並非所有的應用程式都需要事務,但對的確需要事務的應用程式來說,有著定義良好的需求,如ACID相容等。
引用完整性:通過DDL定義的外鍵,伺服器需要強制保持關聯資料庫的引用完整性。
物理存儲:它包括各種各樣的事項,從表和索引的總的頁大小,到存儲數據所需的格式,到物理磁碟。
索引支持:不同的應用程式傾向於採用不同的索引策略,每種存儲引擎通常有自己的編製索引方法,
但某些索引方法(如B-tree索引)對幾乎所有的存儲引擎來說是共同的。
記憶體高速緩衝:與其他應用程式相比,不同的應用程式對某些記憶體高速緩衝策略的響應更好,因此,
儘管某些記憶體高速緩衝對所有存儲引擎來說是共同的(如用於用戶連接的高速緩衝,MySQL的高速查詢高速緩衝等),
其他高速緩衝策略僅當使用特殊的存儲引擎時才唯一定義。
性能幫助:包括針對並行操作的多I/O線程,線程併發性,資料庫檢查點,成批插入處理等。
其他目標特性:可能包括對地理空間操作的支持,對特定數據處理操作的安全限制等。

常用存儲引擎及適用場景

InnoDB
用於事務處理應用程式,支持外鍵和行級鎖。如果應用對事物的完整性有比較高的要求,在併發條件下要求數據的一致性,
數據操作除了插入和查詢之外,還包括很多更新和刪除操作,那麼InnoDB存儲引擎是比較合適的。
InnoDB除了有效的降低由刪除和更新導致的鎖定,還可以確保事務的完整提交和回滾,
對於類似計費系統或者財務系統等對數據準確要求性比較高的系統都是合適的選擇。
#InnoDB 5.6以上 預設存儲方式
        # 存儲的文件個數:表結構、表中的數據
        # 支持行級鎖、支持表鎖 ,修改數據多,#行級鎖效率很低
        # 支持事務    #開啟事務不能再分,執行不成功回滾
        # 支持外鍵    #外鍵 主要做數據關聯  由於外鍵的約束,刪除的時候要先刪除關聯

MyI SAM
如果應用是以讀操作和插入操作為主,只有很少的更新和刪除操作,並且對事務的完整性、併發性要求不高,那麼可以選擇這個存儲引擎。
#MyI SAM 5.5以下 預設存儲方式
        # 存儲的文件個數:表結構、表中的數據、索引
        # 支持表級鎖
        # 不支持行級鎖 不支持事務 不支持外鍵

Memory ['mɛməri]  
將所有的數據保存在記憶體中,在需要快速定位記錄和其他類似數據的環境下,可以提供極快的訪問。
Memory的缺陷是對錶的大小有限制,雖然資料庫因為異常終止的話數據可以正常恢復,但是一旦資料庫關閉,存儲在記憶體中的數據都會丟失。
# MEMORY 記憶體 
        # 存儲的文件個數:表結構
        # 優勢 :增刪改查都很快
        # 劣勢 :重啟數據消失、容量有限  
        # 用的不多 有別的替代品
        
ARCHIVE引擎 (瞭解)
擁有很好的壓縮機制,它使用zlib壓縮庫,在記錄被請求時會實時壓縮。
支持最基本的插入和查詢兩種功能。在MySQL 5.5開始支持索引。
不支持事務。支持行級鎖和專用的緩存區,所以可以實現高併發的插入。
適合存儲大量日誌、歷史數據。

BLACKHOLE引擎 (瞭解)
接受但不存儲數據,但是如果MySQL啟用了二進位日誌,SQL語句被寫入日誌(並被覆制到從伺服器)。
用於做日誌記錄或同步歸檔的中繼存儲。但這種應用方式會碰到很多問題,因此並不推薦。
支持事務,而且支持mvcc的行級鎖。

CSV引擎 (瞭解)
每個表會生成一個.CSV文件,將CSV類型的文件當做表進行處理。
把數據以逗號分隔的格式存儲在文本文件中,這種文件是一種普通文本文件,每個數據行占用一個文本行。
不支持索引,即使用該種類型的表沒有主鍵列,也不允許表中的欄位為null。
  • 查詢當前資料庫支持的存儲引擎: mysql> show engines \G; #(\G格式化的意思)

  • 查看當前的預設存儲引擎: show variables like '%engine%'; #(%代表其他內容)

  • 創建表並且指定引擎: create table t3 (id int,name char(4)) engine=memory; #(engine = "指定引擎")

  • 在配置文件中指定: default-storage-engine=INNODB #my.ini文件下的[mysqld]

  • 表欄位

面試題

#你們上家公司用什麼資料庫 : mysql
# 哪個版本是什麼 :5.6.2.1
# 都用這個版本麽 :不是都用這個版本 或 有部分用的不是這個版本
# 存儲引擎 :innodb 
# 為什麼要用這個存儲引擎:
    # 支持事務 支持外鍵 支持行級鎖
#事務,考慮以後的支付功能的擴展      #行級鎖,能夠更好的處理併發的修改問題

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 關於CPU和程式的執行 CPU是電腦的大腦。 1. 程式的運行過程,實際上是程式涉及到的、未涉及到的一大堆的指令的執行過程 。 當程式要執行的部分被裝載到記憶體後,CPU要從記憶體中取出指令,然後指令解碼(以便知道類型和操作數,簡單的理解為CPU要知道這是什麼指令),然後執行該指令。再然後取下一個指令 ...
  • 網上有很多關於PHP在IIS下配置的教程,但都是一些很理性化的東西,我從裡面整理出來這個教程 發出來為了方便參考,,有什麼問題也可以大家一起交流,,如果有什麼不對的地方,請指正.. 下麵的教程都是在windows 2000下實現的,其他系統請自己參照修改, 操作系統目錄:c:\winnt PHP預設 ...
  • 繼續Linux命令學習,沒有什麼捷徑,每個命令都去敲幾遍就熟悉了,第二篇學習的是一些比較實用類的命令,主要是從開發的角度進行學習,並不深入,話不多說,開始! 一、系統管理類 1.1 stat --stat 顯示指定文件的相關信息,比ls命令顯示內容更多 1.2 who --顯示線上登錄用戶 1.3 ...
  • 《SQL Server溫故系列》,sql,crud。毋庸置疑,開發者最常用的資料庫技術就是 SQL 了,即便是 ORM 大行其道的今天也常常需要寫 SQL 語句。而 SQL 語句中最常用的就是增刪改查了,本系列就先對增刪改查語句來個系統的回顧吧! ...
  • 《SQL Server溫故系列》,sqlserver教程,tsql教程,sql教程,SQL Server 系列博客導航目錄 ...
  • python用於操作數據的pymysql模塊,及相關的視圖,觸發器,函數,存儲過程,事務,SQL註入等相關拓展。 ...
  • Oracle異常處理在PL/SQL語句書寫時,需要處理的異常-- 不做異常處理時DECLARE v_name emp.ename%TYPE; v_sal emp.sal%TYPE;BEGIN SELECT ename,sal INTO v_name,v_sal FROM emp WHERE empn ...
  • 資料庫之MySQL與Python交互,內容包括 準備數據,SQL演練,資料庫的設計,Python 中操作 MySQL 步驟,pymysql增刪改查,參數化。 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...