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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

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

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

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

什么是存儲引擎?

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

MySQL存儲引擎種類

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

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

MyISAM 引擎

這種引擎是MySQL最早提供的。這種引擎又可以分為靜態(tài)MyISAM、動(dòng)態(tài)MyISAM 和壓縮MyISAM三種:

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

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

  • 選擇密集型的表。MyISAM存儲引擎在篩選大量數(shù)據(jù)時(shí)非常迅速,這是它最突出的優(yōu)點(diǎn)。
  • 插入密集型的表。MyISAM的并發(fā)插入特性允許同時(shí)選擇和插入數(shù)據(jù)。

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

文件名說明
test.frm存儲表定義
test.MYD存儲數(shù)據(jù)
test.MYI存儲索引

InnoDB引擎

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

  • 更新密集的表:InnoDB存儲引擎特別適合處理多重并發(fā)的更新請求。
  • 事務(wù):InnoDB存儲引擎是支持事務(wù)的標(biāo)準(zhǔn)MySQL存儲引擎。
  • 自動(dòng)災(zāi)難恢復(fù):與其它存儲引擎不同,InnoDB表能夠自動(dòng)從災(zāi)難中恢復(fù)。
  • 外鍵約束:MySQL支持外鍵的存儲引擎只有InnoDB。
  • 支持自動(dòng)增加列AUTO_INCREMENT屬性。

存儲引擎操作

查看存儲引擎

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

SHOW CREATE TABLE 表名;

例如我們查看我們之前創(chuàng)建好的【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】

修改默認(rèn)引擎

要使用事務(wù)功能,就必須將表設(shè)置為InnoDB引擎,有的版本在安裝時(shí),是未激活I(lǐng)nnoDB引擎的,所以需要我們手動(dòng)進(jìn)行激活。首先我們進(jìn)入MySQL的安裝目錄,找到my.ini文件。例如,博主使用的是WampServer的集成開發(fā)環(huán)境,目錄如下:

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

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

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

轉(zhuǎn)載于:https://www.cnblogs.com/newtol/p/10159104.html

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。