濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > MySQL存儲(chǔ)引擎基礎(chǔ)知識(shí)

MySQL存儲(chǔ)引擎基礎(chǔ)知識(shí)

熱門標(biāo)簽:中科嘉智人工智能電銷機(jī)器人 哈爾濱crm外呼系統(tǒng)價(jià)格 做地圖標(biāo)注都需要什么工具 銀川電銷外呼系統(tǒng)定制 凱立德科技館地圖標(biāo)注 上海智能外呼系統(tǒng)需要多少錢 電銷機(jī)器人好品牌門薩維l 西安400電話在哪里辦理 甘孜電話機(jī)器人廠家

在之前的文章中我們說(shuō)過(guò)MySQL事務(wù),現(xiàn)在大家都應(yīng)該知道了MySQL事務(wù)了吧,還記得事務(wù)的ACID原則嗎?不記得的童鞋可以回顧一下《MySQL之事務(wù)初識(shí)》,其實(shí)呀,更嚴(yán)謹(jǐn)一點(diǎn)的話,應(yīng)該是MySQL InnoDB存儲(chǔ)引擎,因?yàn)樵贛ySQL中,只有InnoDB存儲(chǔ)引擎才支持事務(wù)??吹酱颂帲行┡笥芽赡苡幸韵乱蓡?wèn):

存儲(chǔ)引擎是什么?

MySQL中有哪些存儲(chǔ)引擎?

每個(gè)存儲(chǔ)引擎有哪些特點(diǎn)以及區(qū)別?

下面,我們帶著這些疑問(wèn),依次往下看:

存儲(chǔ)引擎是什么?

通俗一點(diǎn)來(lái)說(shuō),MySQL是用來(lái)保存數(shù)據(jù)的對(duì)不對(duì)?我們可以把存儲(chǔ)引擎看作是一種存儲(chǔ)文件的方式以及該方式附屬的一整套工具,其中每個(gè)存儲(chǔ)文件方式的特點(diǎn)就是該存儲(chǔ)引擎的特點(diǎn)。

例如:Memory存儲(chǔ)引擎將數(shù)據(jù)保存至內(nèi)存中,其優(yōu)點(diǎn)是:讀寫快,但是數(shù)據(jù)不是持久到磁盤中的,非常容易丟失等等。

MySQL中的存儲(chǔ)引擎

在MySQL 5.7版本中,MySQL支持的存儲(chǔ)引擎有:

InnoDB

MyISAM

Memory

CSV

Archive

Blackhole

Merge:

Federated

Example

下面只介紹常用的存儲(chǔ)引擎,其他沒(méi)介紹的存儲(chǔ)引擎,有興趣的童鞋,可以自己自行搜索。

InnoDB:支持事務(wù)操作(如 begin, commit,rollback命令),支持行級(jí)鎖,行級(jí)鎖相對(duì)于表鎖,其粒度更細(xì),允許并發(fā)量更大,這里面細(xì)節(jié)還挺多的,下次,我們單獨(dú)寫一篇)支持外鍵引用完整性約束。InnoDB存儲(chǔ)引擎也是MySQL 5.7版本中默認(rèn)的存儲(chǔ)引擎。其缺點(diǎn)是:存儲(chǔ)空間會(huì)占用比較大。

MyISAM:該存儲(chǔ)引擎存儲(chǔ)占用的空間相對(duì)與InnoDB存儲(chǔ)引擎來(lái)說(shuō)會(huì)少很多,但其支持的為表鎖,其并發(fā)性能會(huì)低很多,而且不支持事務(wù),通常只應(yīng)用于只讀模式的應(yīng)用。它是MySQL最原始的存儲(chǔ)引擎。

Memory:該存儲(chǔ)引擎最大的特點(diǎn)是,所有數(shù)據(jù)均保存在內(nèi)存中,之前還有個(gè)名字叫做 「Heap」。
應(yīng)用場(chǎng)景: 主要存儲(chǔ)一些需要快速訪且非關(guān)鍵數(shù)據(jù),為什么不是關(guān)鍵數(shù)據(jù)呢?就因?yàn)槠渌袛?shù)據(jù)保存在內(nèi)存中,也可以理解為不安全。

CSV:首先先認(rèn)識(shí)一下CSV,CSV文件其實(shí)就是用逗號(hào)分隔開(kāi)的文本文件,常用于數(shù)據(jù)轉(zhuǎn)換,該類型平時(shí)用的比較少,不支持索引。

Archive:存檔文件,主要用于存儲(chǔ)很少用到的引用文件,

Example:該存儲(chǔ)引擎主要用于展示如何自行編寫一個(gè)存儲(chǔ)引擎,一般不會(huì)用作生產(chǎn)環(huán)境使用。

如何選擇存儲(chǔ)引擎

大家通過(guò)上面的比較應(yīng)該已經(jīng)看出來(lái)了,InnoDB存儲(chǔ)引擎是支持事務(wù),支持外鍵并支持行級(jí)鎖的。對(duì)于需要在線事務(wù)處理的應(yīng)用最合適不過(guò)了,我們?cè)谶x擇存儲(chǔ)引擎時(shí),如果沒(méi)有特別的理由,我的建議是選擇InnoDB作為存儲(chǔ)引擎。

1、我們可以在創(chuàng)建table時(shí),指定存儲(chǔ)引擎,如果未指定,則使用默認(rèn)的存儲(chǔ)引擎。

create table t_base_user(
oid bigint(20) not null primary key auto_increment comment "",
created_at datetime null comment ''
)engine=innodb

2、(方法一) 顯示該表的存儲(chǔ)引擎

mysql> show table status like "t_base_user" \G;
*************************** 1. row ***************************
    Name: t_base_user
   Engine: InnoDB
   Version: 10
 Row_format: Dynamic
    Rows: 0
Avg_row_length: 0
 Data_length: 16384
Max_data_length: 0
Index_length: 0
  Data_free: 0
Auto_increment: 1
 Create_time: 2017-12-17 20:10:24
 Update_time: NULL
 Check_time: NULL
  Collation: utf8_unicode_ci
  Checksum: NULL
Create_options: 
   Comment: 
1 row in set (0.01 sec)

3、(方法二) 顯示表的存儲(chǔ)引擎信息

mysql> show create table t_base_user\G;
*************************** 1. row ***************************
  Table: t_base_user
Create Table: CREATE TABLE `t_base_user` (
`oid` bigint(20) NOT NULL AUTO_INCREMENT,
`created_at` datetime DEFAULT NULL,
PRIMARY KEY (`oid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
1 row in set (0.00 sec)

另外需要注意的是: 不建議修改表的存儲(chǔ)引擎,在創(chuàng)建表時(shí),就要需要考慮好,使用什么存儲(chǔ)引擎。

今日命令

命令: show engines;

標(biāo)準(zhǔn)語(yǔ)法:show stroage engines;

其中stroage為可選項(xiàng)。

作用:顯示當(dāng)前MySQL版本支持的存儲(chǔ)引擎。

例子(MySQL版本: 5.7.20):

mysql> show storage engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine       | Support | Comment                            | Transactions | XA  | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| MRG_MYISAM     | YES   | Collection of identical MyISAM tables             | NO      | NO  | NO     |
| CSV        | YES   | CSV storage engine                       | NO      | NO  | NO     |
| MyISAM       | YES   | MyISAM storage engine                     | NO      | NO  | NO     |
| BLACKHOLE     | YES   | /dev/null storage engine (anything you write to it disappears) | NO      | NO  | NO     |
| MEMORY       | YES   | Hash based, stored in memory, useful for temporary tables   | NO      | NO  | NO     |
| InnoDB       | DEFAULT | Supports transactions, row-level locking, and foreign keys   | YES     | YES | YES    |
| ARCHIVE      | YES   | Archive storage engine                     | NO      | NO  | NO     |
| PERFORMANCE_SCHEMA | YES  | Performance Schema                       | NO      | NO  | NO     |
| FEDERATED     | NO   | Federated MySQL storage engine                 | NULL     | NULL | NULL    |
+--------------------+---------+---------------------------------------------------------------+--------------+------+------------+
9 rows in set (0.00 sec)

使用場(chǎng)景:在查看當(dāng)前數(shù)據(jù)庫(kù)版本支持的存儲(chǔ)引擎,查看默認(rèn)存儲(chǔ)引擎時(shí)非常實(shí)用。

Engine:存儲(chǔ)引擎名稱。

Support: 表示MySQL當(dāng)前服務(wù)器版本是否支持該存儲(chǔ)引擎,YES為支持 NO 為不支持。

Comment:為該存儲(chǔ)引擎的特性,如Innodb

支持事務(wù),行級(jí)鎖等。

Transactions:是否支持事務(wù),YES為支持,No為不支持。

XA和Savepoints:這兩個(gè)屬性,與事務(wù)相關(guān),當(dāng)Transactions為Yes時(shí),這兩個(gè)屬性才有意義,否則均為NO。

您可能感興趣的文章:
  • 簡(jiǎn)述MySQL InnoDB存儲(chǔ)引擎
  • 簡(jiǎn)單了解MySQL存儲(chǔ)引擎
  • MySql 存儲(chǔ)引擎和索引相關(guān)知識(shí)總結(jié)
  • MySQL MyISAM默認(rèn)存儲(chǔ)引擎實(shí)現(xiàn)原理
  • 淺談MySQL中四種常用存儲(chǔ)引擎
  • MySQL存儲(chǔ)引擎InnoDB的配置與使用的講解
  • MySQL存儲(chǔ)引擎MyISAM與InnoDB區(qū)別總結(jié)整理
  • MySQL常用存儲(chǔ)引擎功能與用法詳解
  • MySQL的常見(jiàn)存儲(chǔ)引擎介紹與參數(shù)設(shè)置調(diào)優(yōu)
  • 聊聊MySQL中的存儲(chǔ)引擎

標(biāo)簽:那曲 濮陽(yáng) 平頂山 四川 安康 安徽 浙江 山南

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《MySQL存儲(chǔ)引擎基礎(chǔ)知識(shí)》,本文關(guān)鍵詞  MySQL,存儲(chǔ),引擎,基礎(chǔ)知識(shí),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《MySQL存儲(chǔ)引擎基礎(chǔ)知識(shí)》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于MySQL存儲(chǔ)引擎基礎(chǔ)知識(shí)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    万盛区| 石屏县| 南木林县| 莫力| 华阴市| 定兴县| 西藏| 安康市| 汉阴县| 安陆市| 沂水县| 湖州市| 朝阳区| 舟曲县| 清流县| 阿勒泰市| 南宁市| 丰台区| 扶沟县| 礼泉县| 宜城市| 常宁市| 哈巴河县| 舟山市| 梁山县| 奉贤区| 抚松县| 阿克陶县| 中阳县| 华坪县| 三穗县| 蕉岭县| 黄石市| 梅河口市| 张掖市| 柳江县| 榕江县| 石阡县| 苏州市| 天全县| 六安市|