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

歡迎訪問 生活随笔!

生活随笔

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

数据库

mysql的存储引擎详解_MySQL常见存储引擎详解

發(fā)布時(shí)間:2024/9/27 数据库 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql的存储引擎详解_MySQL常见存储引擎详解 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

通過執(zhí)行show engines命令查看MySQL中支持哪些存儲(chǔ)引擎

MySQL存儲(chǔ)引擎屬性對比

設(shè)置表的存儲(chǔ)引擎的方法

在my.cnf配置文件中設(shè)置default-storage-engine參數(shù)表示設(shè)置默認(rèn)存儲(chǔ)引擎在MySQL的連接上設(shè)置當(dāng)前連接的默認(rèn)存儲(chǔ)引擎

mysql> set default_storage_engine=innodb;

創(chuàng)建表的時(shí)候通過engine=語句指定該表的存儲(chǔ)引擎

CREATE TABLE t1 (i INT) ENGINE = INNODB;

在表創(chuàng)建之后通過alter語句修改表的存儲(chǔ)引擎

ALTER TABLE t1 ENGINE = csv;

Innodb 存儲(chǔ)引擎

存儲(chǔ)引擎InnoDB是目前MySQL版本默認(rèn)的存儲(chǔ)引擎,也是MySQL推薦使用的存儲(chǔ)引擎,是集高可靠性和高性能于一身的存儲(chǔ)引擎。

在MySQL5.7版本中,除非在配置文件中顯視指定default storage engine或者創(chuàng)建表時(shí)顯視使用engine=語句指定其它的存儲(chǔ)引擎,否則默認(rèn)都是InnoDB

InnoDB存儲(chǔ)引擎的優(yōu)勢在于:

DML語句支持事務(wù)功能,保證ACID特性行級鎖的使用保證了高并發(fā)的屬性InnoDB對有主鍵的表會(huì)依據(jù)主鍵優(yōu)化查詢性能,也稱聚簇索引,將所有數(shù)據(jù)存儲(chǔ)在聚簇索引上以減少對主鍵查詢的IO消耗為保證數(shù)據(jù)的一致性, InnoDB還支持外鍵屬性,確保有外鍵約束的表之間不會(huì)有不一致的數(shù)據(jù)當(dāng)服務(wù)器硬件或者軟件故障導(dǎo)致MySQL重啟后, InnoDB會(huì)自動(dòng)識(shí)別已經(jīng)在故障之前提交的數(shù)據(jù),并回退所有故障時(shí)未提交的數(shù)據(jù),最大限度的保護(hù)數(shù)據(jù)不會(huì)丟失(crash recovery)

InnoDB存儲(chǔ)引擎的屬性

Myisam 存儲(chǔ)引擎

MyISAM存儲(chǔ)引擎是MySQL老版本的默認(rèn)存儲(chǔ)引擎,由于其表級鎖的特性,所以限制了其在讀寫操作時(shí)的性能,常用在只讀表上或者讀操作占絕大多數(shù)的表上,比如一些web應(yīng)用和數(shù)據(jù)倉庫相關(guān)表

每個(gè)MyISAM表都會(huì)在磁盤上生成三個(gè)文件,表名和文件名相同但后綴不同,.frm文件存儲(chǔ)表的結(jié)構(gòu)信息,.MYD文件存儲(chǔ)表的數(shù)據(jù)信息,.MYI文件存儲(chǔ)表的索引信息

Memory 存儲(chǔ)引擎

Memory存儲(chǔ)引擎將所有數(shù)據(jù)存儲(chǔ)在內(nèi)存中以便加快對某些不重要數(shù)據(jù)的訪問速度

此存儲(chǔ)引擎的使用范圍已經(jīng)變小,因?yàn)镮nnoDB已經(jīng)提供了數(shù)據(jù)緩存區(qū)以便對將經(jīng)常訪問的數(shù)據(jù)緩存在內(nèi)存中

當(dāng)MySQL重啟時(shí), Memory表中的數(shù)據(jù)會(huì)丟失,但表結(jié)構(gòu)還在Memory只適用在只讀表或者讀操作占絕大多數(shù)的情況,因?yàn)閷Ρ淼膶懖僮饕矔?huì)導(dǎo)致表鎖大大限制了并發(fā)性

Memory表創(chuàng)建之后,在磁盤文件會(huì)生成一個(gè)相同表名的文件,后綴為.frm,僅存儲(chǔ)表結(jié)構(gòu)而不存儲(chǔ)表數(shù)據(jù)

CSV 存儲(chǔ)引擎

Csv存儲(chǔ)引擎下的表對應(yīng)了文本文件,其中的數(shù)據(jù)用逗號(hào)隔開, csv表可用來以csv格式導(dǎo)入和導(dǎo)出表

當(dāng)創(chuàng)建一個(gè)csv表時(shí),磁盤會(huì)生成三個(gè)以表名為名字的文件, .frm存儲(chǔ)表的結(jié)構(gòu)信息而.CSV文件用來存儲(chǔ)以逗號(hào)隔開的數(shù)據(jù)信息, .CSM文件用來存儲(chǔ)表的元數(shù)據(jù),包括表的狀態(tài)和有多少行數(shù)據(jù)信息

mysql> create table t(id int not null, name char(10) not null) engine=csv;

Query OK, 0 rows affected (0.00 sec)

mysql> insert into t values (1,'one'),(2,'two');

Query OK, 2 rows affected (0.00 sec)

Records: 2? Duplicates: 0? Warnings: 0

mysql> select * from t;

+----+------+

| id | name |

+----+------+

|? 1 | one? |

|? 2 | two? |

+----+------+

2 rows in set (0.00 sec)

mysql> system ls /usr/local/mysql/data/test

db.opt? t.CSM? t.CSV? t.frm

mysql> system cat /usr/local/mysql/data/test/t.CSV

1,"one"

2,"two"

ARCHIVE 存儲(chǔ)引擎

Archive存儲(chǔ)引擎表用來存儲(chǔ)大量未加索引的歷史歸檔數(shù)據(jù)

archive表會(huì)在磁盤創(chuàng)建兩個(gè)文件, .frm文件用來存儲(chǔ)表結(jié)構(gòu)信息,.ARZ文件用來存儲(chǔ)歷史歸檔數(shù)據(jù)Archive表支持insert, replace和select語句,但不支持delete和update語句

Archive表支持行級鎖Archive支持auto_incrment列,且其列上可以包含一個(gè)索引,但在其他字段上不能創(chuàng)建索引

Archive不支持對auto_incrment列插入一個(gè)小于當(dāng)前最大值的數(shù)據(jù)Archive存儲(chǔ)引擎會(huì)用zlib來壓縮數(shù)據(jù)

Blackhole 存儲(chǔ)引擎

Merge存儲(chǔ)引擎可以將一批字段相同,索引相同且順序相同的MyISAM表在邏輯上看做是同一個(gè)

Merge表在磁盤上創(chuàng)建兩個(gè)文件, .frm文件保存表的結(jié)構(gòu)信息, .MRG文件包含所有被視作同一個(gè)表的MyISAM表

Merge表支持select,delete,update,insert語句執(zhí)行

創(chuàng)建merge表時(shí)需要執(zhí)行union子句,用來將指定的MyISAM結(jié)合起來, insert_method選項(xiàng)用來指定插入語句是將數(shù)據(jù)插入到第一個(gè)表FIRST還是最后一個(gè)表LAST中,或者不指定或NO表不允許插入

create table t1 (a int not null auto_increment primary key, message char(20)) engine=myisam;

create table t2(a int not null auto_increment primary key , message char(20)) engine=myisam;

insert into t1 (message) values ('testing'),('table'),('t1');

insert into t2 (message) values ('testing'),('table'),('t2');

create table total(a int not null auto_increment, message char(20),index(a)) engine=merge union=(t1,t2) insert_method=last;

select * from total;

mysql> select * from total;

+---+---------+

| a | message |

+---+---------+

| 1 | testing |

| 2 | table? |

| 3 | t1? ? ? |

| 1 | testing |

| 2 | table? |

| 3 | t2? ? ? |

+---+---------+

6 rows in set (0.00 sec)

Federated 存儲(chǔ)引擎

Federated存儲(chǔ)引擎提供了從一個(gè)MySQL實(shí)例連接其它實(shí)例上數(shù)據(jù)的能力Federated存儲(chǔ)引擎默認(rèn)是disable狀態(tài),如果要開啟,則需要在啟動(dòng)MySQL時(shí)使用—federated選項(xiàng)

Example 存儲(chǔ)引擎

Example存儲(chǔ)引擎只存在于MySQL源碼中,只針對開發(fā)者,對實(shí)際的數(shù)據(jù)庫使用者沒有太大的意義Example表只保留表結(jié)構(gòu),本身不保存數(shù)據(jù)

NDB 存儲(chǔ)引擎

NDB存儲(chǔ)引擎專用在MySQL Cluster軟件中,是MySQL自己推出的提高可用性和可靠性的集群軟件

總結(jié)

以上是生活随笔為你收集整理的mysql的存储引擎详解_MySQL常见存储引擎详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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