1. 程式人生 > 其它 >MySQL基礎班第四天(儲存引擎)

MySQL基礎班第四天(儲存引擎)

儲存引擎

  • MySQL體系結構

  • 儲存引擎介紹

  • 儲存引擎特點

  • 儲存引擎選擇

  • MySQL體系結構

    • 連線層

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

      • 第二層架構主要完成大多數的核心服務功能,如SQL介面,並完成快取的查詢, SQL的分析和優化,部分內建函式的執行。所有跨儲存引擎的功能也在這一層實現,如過程、函式等。
    • 引擎層

      • 儲存引擎真正的負責了MySQL中資料的儲存和提取,伺服器通過API和儲存引擎進行通訊。不同的儲存引擎具有不同的功能,這樣我們可以根據自己的需要,來選取合適的儲存引擎。
    • 儲存層

      • 主要是將資料儲存在檔案系統之上,並完成與儲存引擎的互動。
  • 儲存引擎

    • 儲存引擎簡介:儲存引擎就是儲存資料、建立索引、更新/查詢資料等技術的實現方式。儲存引擎是基於表的,而不是基於庫的,所以儲存引擎也可被稱為表型別。

      1、在建立表時,指定儲存引擎
      CREATE TABLE 表名(
      	欄位1 欄位1型別[COMMENT 欄位1註釋],
      	......,
      	欄位n 欄位n型別[COMMENT 欄位n註釋],
      )ENGINE = INNODB [COMMENT 表註釋];
      
      2、查詢當前資料庫支援的儲存引擎
      SHOW ENGINES;
      
  • 儲存引擎特點

    • InnoDB

    • 介紹:InnoDB是一種兼顧高可靠性和高效能的通用儲存引擎,在MySQL 5.5之後, InnoDB是預設的MySQL儲存引擎。

  • 特點

    • DML操作遵循ACID模型,支援事務;
    • 行級鎖,提高併發訪問效能;
    • 支援外來鍵FOREIGN KEY約束,保證資料的完整性和正確性;
  • 檔案

  • xxx.ibd: xxx代表的是表名,innoDB引擎的每張表都會對應這樣一個表空間檔案, 儲存該表的表結構(frm、 sdi) 、 資料和索引。 引數: innodb_file_ per _table

  • InnoDB ( 邏輯儲存結構 )

  • MyISAM

    • 介紹:MyISAM是MySQL早期的預設儲存引擎。

    • 特點

      • 不支援事務,不支援外來鍵

      • 支援表鎖,不支援行鎖

      • 訪問速度快

    • 檔案格式

      • xxx.sdi: 儲存表結構資訊
      • xxx.MYD: 儲存資料
      • xxx.MYI:儲存索引
  • Memory

    • 介紹:Memory引擎的表資料時儲存在記憶體中的,由於受到硬體問題、或斷電問題的影響,只能將這些表作為臨時表或快取使用。
    • 特點
      • 記憶體存放
      • hash索引(預設)
    • 檔案
      • xxx.sdi: 儲存表結構資訊
  • 三大常用引擎區別

  • 儲存引擎選擇

    • 介紹:在選擇儲存引擎時,應該根據應用系統的特點選擇合適的儲存引擎。對於複雜的應用系統,還可以根據實際情況選擇多種儲存引擎進行組

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

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

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