首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

從零開始學 MySQL(三):數據庫基本操作、存儲引擎深度解析

     編輯:MySQL 綜合教學

從零開始學 MySQL(三):數據庫基本操作與存儲引擎核心知識

本文為「從零開始學 MySQL」系列第三篇,系統講解數據庫的創建與刪除、存儲引擎架構、三大主流引擎特性對比,幫助初學者建立完整的 MySQL 存儲層認知。

一、數據庫的創建與刪除

-- 查看現有數據庫
SHOW DATABASES;

-- 創建數據庫(指定字符集與校對規則)
CREATE DATABASE mydb 
    DEFAULT CHARACTER SET utf8mb4 
    DEFAULT COLLATE utf8mb4_general_ci;

-- 刪除數據庫(謹慎!無確認提示,數據不可恢復)
DROP DATABASE mydb;

⚠️ 警告:DROP DATABASE 執行即生效,不會彈出確認框,且會連同所有表、視圖、觸發器、存儲過程一併刪除。生產環境務必先備份、再雙重確認。

二、存儲引擎架構與查看

-- 查看支持的引擎
SHOW ENGINES;
-- 重點關注 Support 列:YES/DEFAULT/NO
-- DEFAULT 表示當前默認引擎

存儲引擎是 MySQL 底層組件,負責數據的存儲、索引、鎖、事務、恢復等核心能力。MySQL 採用插件式架構,上層 SQL 層與下層存儲引擎解耦,可按表級別指定引擎。

三、三大主流引擎深度對比

特性InnoDBMyISAMMEMORY (HEAP)
事務支持✅ ACID 完整支持❌ 不支持❌ 不支持
鎖粒度行鎖表鎖表鎖
外鍵約束✅ 支持❌ 不支持❌ 不支持
崩潰恢復✅ Redo/Undo Log❌ 易損壞需修復❌ 重啟數據全失
全文索引5.6+ 支持✅ 早期優勢❌
數據存儲表空間 + 索引組織表.MYD/.MYI 分離文件純內存,重啟丟失
最大索引數64/表64/表(可重編譯擴展)32/表
最大列/索引161616
適用場景核心業務、高併發、事務型只讀/讀多寫少、全文檢索臨時表、查詢緩存、中間結果

四、引擎選型決策樹

  1. 需要事務?→ InnoDB(唯一選擇)。
  2. 純只讀、全文搜索、無事務?→ 考慮 MyISAM(或 5.6+ InnoDB 全文)。
  3. 臨時中間表、數據可重算、極致讀速?→ MEMORY。
  4. 不確定?→ 默認 InnoDB(MySQL 5.5+ 默認)。

五、引擎變更操作

-- 建表時指定
CREATE TABLE t1 (id INT PRIMARY KEY) ENGINE=InnoDB;

-- 既有表轉換(會重建表,鎖表時間與數據量成正比)
ALTER TABLE t1 ENGINE=InnoDB;

-- 查看表引擎
SHOW TABLE STATUS LIKE 't1'\G
-- Engine: InnoDB

六、InnoDB 核心優勢補充

  • 聚簇索引:主鍵即數據物理順序,主鍵查詢極快,二級索引葉子存主鍵值(回表開銷)。
  • Change Buffer:非唯一二級索引寫入合併,減少隨機 IO。
  • 自適應哈希索引:熱頁自動構建 Hash 索引,加速等值查詢。
  • 雙寫緩衝:防止部分寫入導致頁損壞。

理解存儲引擎差異,是 Schema 設計、性能調優、故障排查的基石。建議新項目統一 InnoDB,特殊場景再評估 MyISAM/MEMORY/Archive/RocksDB 等專用引擎。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved