day09-1存儲引擎

来源:https://www.cnblogs.com/liyuelian/archive/2022/10/09/16773317.html
-Advertisement-
Play Games

存儲引擎 1.基本介紹 基本介紹 MySQL的表類型由存儲引擎(Storage Engines)決定,主要包括MyISAM、innoDB、Memory等 MySQL數據表主要支持六種類型,分別是:CSV,Memory,ARCHIVE,MRG_MYISAM,MYISAM,InnoBDB。 這六種又分為 ...


存儲引擎

1.基本介紹

  • 基本介紹
  1. MySQL的表類型由存儲引擎(Storage Engines)決定,主要包括MyISAM、innoDB、Memory等

  2. MySQL數據表主要支持六種類型,分別是:CSV,Memory,ARCHIVE,MRG_MYISAM,MYISAM,InnoBDB。

  3. 這六種又分為兩類,一類是”事務安全型“(transaction-safe),例如:InnoDB。

    剩下的五種都是第二類,稱為“非事務安全型”(non-transaction-safe)

image-20221009172916332

資料庫中的表也應該有不同的類型,表的類型不同,會對應mysql不同的存取機制,表類型又稱為存儲引擎。

  • 主要的存儲引擎(表類型)特點
特點 Myisam Memory InnoDB Archive
存儲限制 沒有 64TB 沒有
事務安全 支持
鎖機制 表鎖 表鎖 行鎖 行鎖
B樹索引 支持 支持 支持
哈希索引 支持 支持
全文索引 支持
集群索引 支持
數據緩存 支持 支持
索引緩存 支持 支持 支持
數據可壓縮 支持 支持
空間使用 N/A 非常低
記憶體使用 中等
批量插入的速度 非常高
支持外鍵 支持
  • 細節說明
  1. MyISAM不支持事務,也不支持外鍵,但是其訪問速度快,對事務完整性沒有要求
  2. InnoDB存儲引擎提供了具有提交、回滾和崩潰能力的事務安全。但是比起MyISAM存儲引擎,InnoDB寫得處理效率差一些,並且會占用更多的磁碟空間以保留數據和索引
  3. MEMORY存儲引擎使用存在記憶體中的內容來創建表。每個MEMORY表只實際對應一個磁碟文件。MEMORY類型的表訪問非常地快,因為它的數據是存放在記憶體中的,並且預設使用HASH索引。但是一旦MySQL服務關閉,表中的數據就會丟失,表的結構還在。

2.使用

  • 三種存儲引擎表使用案例

    對於前面我們提到的三種存儲引擎,我們舉例說明

-- 表類型和存儲引擎

-- 查看所有的存儲引擎
SHOW ENGINES

-- InnoDB存儲引擎是前面使用過的
-- 1.支持事務 2.支持外鍵 3.支持行級鎖

-- myisam存儲引擎
CREATE TABLE t28(
	id INT,
	`name` VARCHAR(32)) ENGINE MYISAM
-- 1.添加速度快 2.不支持外鍵和事務 3.支持表級鎖
START TRANSACTION;
SAVEPOINT a;
INSERT INTO t28 VALUES(1,'jack');
SELECT * FROM t28;
ROLLBACK TO a; -- 失敗,myisam不支持事務

-- memory存儲引擎
-- 1.數據存儲在記憶體中[關閉了mysql服務表數據就會丟失,但是表結構還在] 
-- 2.執行速度佷快(沒有IO讀寫) 3.預設支持索引(hash表)
CREATE TABLE t29(
	id INT,
	`name` VARCHAR(32)) ENGINE MEMORY
 
INSERT INTO t29 VALUES(1,'tom'),(2,'jack'),(3,'hsp');
SELECT * FROM t29;

-- 重啟mysql服務之後
DESC t29; -- 表結構還在

SELECT * FROM t29;-- 表數據丟失了
  • 如何選擇表的存儲引擎
  1. 如果你的應用不需要事務,處理的只是基本的CRUD操作,那麼MyISAM是不二選擇,速度快

  2. 如果需要支持事務,選擇InnoDB

  3. Memory存儲引擎就是將數據存儲在記憶體中,由於沒有磁碟IO的等待,速度極快。但由於是記憶體存儲引擎,所做的任何修改在伺服器重啟後都將消失。(經典用法:用戶的線上狀態)

    image-20221009185035958
  • 指令修改存儲引擎
alter table table_name engine = 存儲引擎名;

例子

-- 表類型和存儲引擎

-- 查看所有的存儲引擎
SHOW ENGINES

-- InnoDB存儲引擎是前面使用過的
-- 1.支持事務 2.支持外鍵 3.支持行級鎖

-- myisam存儲引擎
CREATE TABLE t28(
	id INT,
	`name` VARCHAR(32)) ENGINE MYISAM
-- 1.添加速度快 2.不支持外鍵和事務 3.支持表級鎖
START TRANSACTION;
SAVEPOINT a;
INSERT INTO t28 VALUES(1,'jack');
SELECT * FROM t28;
ROLLBACK TO a; -- 失敗,myisam不支持事務

-- memory存儲引擎
-- 1.數據存儲在記憶體中[關閉了mysql服務表數據就會丟失,但是表結構還在] 
-- 2.執行速度佷快(沒有IO讀寫) 3.預設支持索引(hash表)
CREATE TABLE t29(
	id INT,
	`name` VARCHAR(32)) ENGINE MEMORY
 
INSERT INTO t29 VALUES(1,'tom'),(2,'jack'),(3,'hsp');
SELECT * FROM t29;

-- 重啟mysql服務之後
DESC t29; -- 表結構還在

SELECT * FROM t29;-- 表數據丟失了

-- 修改存儲引擎名
ALTER TABLE t29 ENGINE = INNODB;

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

-Advertisement-
Play Games
更多相關文章
  • 一、大家是否有這個需求 1.跨品種查詢 :比如 MYSQL和一個SQLSERVER進行聯表查詢 ,或者SQLITE和MYSQL進行聯表查詢 2.跨伺服器查詢 : A伺服器和B伺服器查詢 如果想同時支持1和2 相信很多人都沒有比較好的解決方案 我的設計是通過多庫架構來實現多庫操作 二、 多庫架構ORM ...
  • 一、概念 委托的本質也是一種類型,類似於Class這樣。作用是將一個方法作為參數傳遞給另一個方法,關鍵字是delegate 二、委托的定義使用步驟 第一步聲明委托: public delegate int myDelegate(int a, int b); 1、聲明一個委托類型,可以用訪問修飾符修飾 ...
  • keepalived高可用(haporxy) keepalived高可用的介紹可以參考keepalived高可用(nginx) 環境 |系統信息| 主機名 |IP |服務| | : | : | : | : | |centos8| master| 192.168.222.250| haproxy,ke ...
  • keepalived實現haporxy負載均衡機高可用 環境說明 | 系統信息 | 主機名 | IP | 服務 | | | | | | | centos8 | master | 192.168.111.141 | haproxykeepalived | | centos8 | backup | 19 ...
  • 1. 索引數組 一、什麼是索引數組? 所謂索引數組就是普通數組,以整數作為數組元素的索引下標。 二、實例。 備註: (a)使用-a選項定義索引數組,使用一對小括弧()定義數組中的元素列表。 (b)索引數組使用整數作為數組元素下標。 備註: (a)使用@和*作為數組下標,表示獲取所有元素。 三、實例。 ...
  • keepalived高可用(nginx) keepalived簡介 keepalived官網 Keepalived 軟體起初是專為LVS負載均衡軟體設計的,用來管理並監控LVS集群系統中各個服務節點的狀態,後來又加入了可以實現高可用的VRRP功能。因此,Keepalived除了能夠管理LVS軟體外, ...
  • 在應用開發的早期,數據量少,開發人員開發功能時更重視功能上的實現,隨著生產數據的增長,很多SQL語句開始暴露出性能問題,對生產的影響也越來越大,有時可能這些有問題的SQL就是整個系統性能的瓶頸。 ...
  • 1)對查詢進行優化,應儘量避免全表掃描,首先應考慮在 where 及 order by 涉及的列上建立索引。 2)應儘量避免在 where 子句中使用!=或<>操作符,否則將引擎放棄使用索引而進行全表掃描。 3)應儘量避免在 where 子句中對欄位進行 null 值判斷,否則將導致引擎放棄使用索引 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...