日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

史上最简单MySQL教程详解(进阶篇)之存储引擎介绍及默认引擎设置

發布時間:2023/12/20 数据库 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 史上最简单MySQL教程详解(进阶篇)之存储引擎介绍及默认引擎设置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

    • 什么是存儲引擎?
    • MySQL存儲引擎種類
      • MyISAM 引擎
    • InnoDB引擎
    • 存儲引擎操作
      • 查看存儲引擎
      • 存儲引擎的變更
    • 修改默認引擎

什么是存儲引擎?

與其他數據庫例如Oracle 和SQL Server等數據庫中只有一種存儲引擎不同的是,MySQL有一個被稱為“Pluggable Storage Engine Architecture”(可替換存儲引擎架構)的特性,也就意味著MySQL數據庫提供了多種存儲引擎。用戶可以根據不同的需求為數據表選擇不同的存儲引擎,用戶也可以根據自己的需要編寫自己的存儲引擎。MySQL數據庫在實際的工作中其實分為了語句分析層和存儲引擎層,其中語句分析層就主要負責與客戶端完成連接并且事先分析出SQL語句的內容和功能,而存儲引擎層則主要負責接收來自語句分析層的分析結果,完成相應的數據輸入輸出和文件操作。簡而言之,就是如何存儲數據、如何為存儲的數據建立索引和如何更新、查詢數據等技術的實現方法。因為在關系數據庫中數據的存儲是以表的形式存儲的,所以存儲引擎也可以稱為表類型(即存儲和操作此表的類型)。

MySQL存儲引擎種類

存儲引擎說明
MyISAM高速引擎,擁有較高的插入,查詢速度,但不支持事務
InnoDB5.5版本后MySQL的默認數據庫,支持事務和行級鎖定,比MyISAM處理速度稍慢
ISAMMyISAM的前身,MySQL5.0以后不再默認安裝
MRG_MyISAM(MERGE)將多個表聯合成一個表使用,在超大規模數據存儲時很有用
Memory內存存儲引擎,擁有極高的插入,更新和查詢效率。但是會占用和數據量成正比的內存空間。只在內存上保存數據,意味著數據可能會丟失
Falcon一種新的存儲引擎,支持事物處理,傳言可能是InnoDB的替代者
Archive將數據壓縮后進行存儲,非常適合存儲大量的獨立的,作為歷史記錄的數據,但是只能進行插入和查詢操作
CSVCSV 存儲引擎是基于 CSV 格式文件存儲數據(應用于跨平臺的數據交換)

接下來我們就介紹兩種在實際開發中使用最多的兩種引擎【MyISAM】和【InnoDB】。

MyISAM 引擎

這種引擎是MySQL最早提供的。這種引擎又可以分為靜態MyISAM、動態MyISAM 和壓縮MyISAM三種:

  • 靜態MyISAM:如果數據表中的各數據列的長度都是預先固定好的,服務器將自動選擇這種表類型。因為數據表中每一條記錄所占用的空間都是一樣的,所以這種表存取和更新的效率非常高。當數據受損時,恢復工作也比較容易做。
  • 動態MyISAM:如果數據表中出現varchar、xxxtext或xxxBLOB字段時,服務器將自動選擇這種表類型。相對于靜態MyISAM,這種表存儲空間比較小,但由于每條記錄的長度不一,所以多次修改數據后,數據表中的數據就可能離散的存儲在內存中,進而導致執行效率下降。同時,內存中也可能會出現很多碎片。因此,這種類型的表要經常用optimize table 命令或優化工具來進行碎片整理。
  • 壓縮MyISAM:以上說到的兩種類型的表都可以用myisamchk工具壓縮。這種類型的表進一步減小了占用的存儲,但是這種表壓縮之后不能再被修改。另外,因為是壓縮數據,所以這種表在讀取的時候要先時行解壓縮。

當然不管是何種MyISAM表,目前它都不支持事務,行級鎖和外鍵約束的功能,這就意味著有事務處理需求的表,不能使用MyISAM存儲引擎。MyISAM存儲引擎特別適合在以下幾種情況下使用:

  • 選擇密集型的表。MyISAM存儲引擎在篩選大量數據時非常迅速,這是它最突出的優點。
  • 插入密集型的表。MyISAM的并發插入特性允許同時選擇和插入數據。

MyISAM表是獨立于操作系統的,這說明可以輕松地將其從Windows服務器移植到Linux服務器;每當我們建立一個MyISAM引擎的表時,就會在本地磁盤上建立三個文件,文件名就是表名。 例如我創建了一個【test】表,那么就會生成以下三個文件:

文件名說明
test.frm存儲表定義
test.MYD存儲數據
test.MYI存儲索引

InnoDB引擎

InnoDB表類型可以看作是對MyISAM的進一步更新產品,它提供了事務、行級鎖機制和外鍵約束的功能。InnoDB的表需要更多的內存和存儲,它會在主內存中建立其專用的緩沖池用于高速緩沖數據和索引。
使用InnoDB是最理想的選擇:

  • 更新密集的表:InnoDB存儲引擎特別適合處理多重并發的更新請求。
  • 事務:InnoDB存儲引擎是支持事務的標準MySQL存儲引擎。
  • 自動災難恢復:與其它存儲引擎不同,InnoDB表能夠自動從災難中恢復。
  • 外鍵約束:MySQL支持外鍵的存儲引擎只有InnoDB。
  • 支持自動增加列AUTO_INCREMENT屬性。

存儲引擎操作

查看存儲引擎

想要查看我們的數據表使用了什么存儲引擎,我們就需要使用到我們以前已經介紹過的【show】命令,語法如下:

SHOW CREATE TABLE 表名;

例如我們查看我們之前創建好的【user】表:

SHOW CREATE TABLE user;
+——-+—————————————————————————————————————————————————————————————————————————-+
| Table | Create Table |
+——-+—————————————————————————————————————————————————————————————————————————-+
| user | CREATE TABLE user (
userId char(5) CHARACTER SET latin1 NOT NULL,
name varchar(30) DEFAULT NULL,
sex char(1) CHARACTER SET latin1 DEFAULT ‘0’,
PRIMARY KEY (userId)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 |
+——-+—————————————————————————————————————————————————————————————————————————-+
1 row in set (0.02 sec)

就可以看到【 ENGINE】顯示我們使用的引擎為【MyISAM】

存儲引擎的變更

變更我們存儲表的存儲引擎將使用到的是我們前面使用過的【ALTER】命令,語法如下:

ALTER TABLE 表名 ENGINE=新引擎;

例如,我們將【user】表的引擎更改為【InnoDB】:

mysql> ALTER TABLE user ENGINE = InnoDB;
Query OK, 7 rows affected (0.50 sec)
Records: 7 Duplicates: 0 Warnings: 0
mysql> SHOW CREATE TABLE user;
+——-+—————————————————————————————————————————————————————————————————————————-+
| Table | Create Table |
+——-+—————————————————————————————————————————————————————————————————————————-+
| user | CREATE TABLE user (
userId char(5) CHARACTER SET latin1 NOT NULL,
name varchar(30) DEFAULT NULL,
sex char(1) CHARACTER SET latin1 DEFAULT ‘0’,
PRIMARY KEY (userId)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+——-+—————————————————————————————————————————————————————————————————————————-+
1 row in set (0.00 sec)

我們就成功的將【user】表的存儲引擎改為了【InnoDB】

修改默認引擎

要使用事務功能,就必須將表設置為InnoDB引擎,有的版本在安裝時,是未激活InnoDB引擎的,所以需要我們手動進行激活。首先我們進入MySQL的安裝目錄,找到my.ini文件。例如,博主使用的是WampServer的集成開發環境,目錄如下:

我們右鍵選擇記事本打開后,找到【default-storage-engine】這一行,如圖:

將其修改為【default-storage-engine=InnoDB】即可,我們就成功的將默認的引擎修改為【InnoDB】。

這里,我們就講解完了關于MySQL數據庫存儲引擎的有關知識,同時也為我們下一步講解史上最簡單MySQL教程詳解(進階篇)之事務處理做好了鋪墊,因為要實現事務管理,需要將表的存儲引擎更改為【InnoDB】

轉載于:https://www.cnblogs.com/newtol/p/10159104.html

總結

以上是生活随笔為你收集整理的史上最简单MySQL教程详解(进阶篇)之存储引擎介绍及默认引擎设置的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。