成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

MySQL存儲引擎知多少

存儲 存儲軟件
MySQL是我們經常使用的數據庫處理系統(DBMS),不知小伙伴們有沒有注意過其中的“存儲引擎”(storage_engine)呢?有時候面試題中也會問道MySQL幾種常用的存儲引擎的區別。這次就簡短侃一下存儲引擎那些事兒。

 MySQL是我們經常使用的數據庫處理系統(DBMS),不知小伙伴們有沒有注意過其中的“存儲引擎”(storage_engine)呢?有時候面試題中也會問道MySQL幾種常用的存儲引擎的區別。這次就簡短侃一下存儲引擎那些事兒。

先去查一下“引擎”概念。

引擎(Engine)是電子平臺上開發程序或系統的核心組件。利用引擎,開發者可迅速建立、鋪設程序所需的功能,或利用其輔助程序的運轉。一般而言,引擎是一個程序或一套系統的支持部分。常見的程序引擎有游戲引擎,搜索引擎,殺毒引擎等。

[[242178]]

Ok,我們知道了,引擎就是一個程序的核心組件。

簡單來說,存儲引擎就是指表的類型以及表在計算機上的存儲方式。

存儲引擎的概念是MySQL的特點,Oracle中沒有專門的存儲引擎的概念,Oracle有OLTP和OLAP模式的區分。不同的存儲引擎決定了MySQL數據庫中的表可以用不同的方式來存儲。我們可以根據數據的特點來選擇不同的存儲引擎。

在MySQL中的存儲引擎有很多種,可以通過“SHOW ENGINES”語句來查看。下面重點關注InnoDB、MyISAM、MEMORY這三種。

一.InnoDB存儲引擎

InnoDB給MySQL的表提供了事務處理、回滾、崩潰修復能力和多版本并發控制的事務安全。在MySQL從3.23.34a開始包含InnnoDB。它是MySQL上***個提供外鍵約束的表引擎。而且InnoDB對事務處理的能力,也是其他存儲引擎不能比擬的。靠后版本的MySQL的默認存儲引擎就是InnoDB。

InnoDB存儲引擎總支持AUTO_INCREMENT。自動增長列的值不能為空,并且值必須***。MySQL中規定自增列必須為主鍵。在插入值的時候,如果自動增長列不輸入值,則插入的值為自動增長后的值;如果輸入的值為0或空(NULL),則插入的值也是自動增長后的值;如果插入某個確定的值,且該值在前面沒有出現過,就可以直接插入。

InnoDB還支持外鍵(FOREIGN KEY)。外鍵所在的表叫做子表,外鍵所依賴(REFERENCES)的表叫做父表。父表中被字表外鍵關聯的字段必須為主鍵。當刪除、更新父表中的某條信息時,子表也必須有相應的改變,這是數據庫的參照完整性規則。

InnoDB中,創建的表的表結構存儲在.frm文件中(我覺得是frame的縮寫吧)。數據和索引存儲在innodb_data_home_dir和innodb_data_file_path定義的表空間中。

InnoDB的優勢在于提供了良好的事務處理、崩潰修復能力和并發控制。缺點是讀寫效率較差,占用的數據空間相對較大。

二.MyISAM存儲引擎

MyISAM是MySQL中常見的存儲引擎,曾經是MySQL的默認存儲引擎。MyISAM是基于ISAM引擎發展起來的,增加了許多有用的擴展。

MyISAM的表存儲成3個文件。文件的名字與表名相同。拓展名為frm、MYD、MYI。其實,frm文件存儲表的結構;MYD文件存儲數據,是MYData的縮寫;MYI文件存儲索引,是MYIndex的縮寫。

基于MyISAM存儲引擎的表支持3種不同的存儲格式。包括靜態型、動態型和壓縮型。其中,靜態型是MyISAM的默認存儲格式,它的字段是固定長度的;動態型包含變長字段,記錄的長度不是固定的;壓縮型需要用到myisampack工具,占用的磁盤空間較小。

MyISAM的優勢在于占用空間小,處理速度快。缺點是不支持事務的完整性和并發性。

三.MEMORY存儲引擎

MEMORY是MySQL中一類特殊的存儲引擎。它使用存儲在內存中的內容來創建表,而且數據全部放在內存中。這些特性與前面的兩個很不同。

每個基于MEMORY存儲引擎的表實際對應一個磁盤文件。該文件的文件名與表名相同,類型為frm類型。該文件中只存儲表的結構。而其數據文件,都是存儲在內存中,這樣有利于數據的快速處理,提高整個表的效率。值得注意的是,服務器需要有足夠的內存來維持MEMORY存儲引擎的表的使用。如果不需要了,可以釋放內存,甚至刪除不需要的表。

MEMORY默認使用哈希索引。速度比使用B型樹索引快。當然如果你想用B型樹索引,可以在創建索引時指定。

注意,MEMORY用到的很少,因為它是把數據存到內存中,如果內存出現異常就會影響數據。如果重啟或者關機,所有數據都會消失。因此,基于MEMORY的表的生命周期很短,一般是一次性的。

四.怎樣選擇存儲引擎

在實際工作中,選擇一個合適的存儲引擎是一個比較復雜的問題。每種存儲引擎都有自己的優缺點,不能籠統地說誰比誰好。

InnoDB:支持事務處理,支持外鍵,支持崩潰修復能力和并發控制。如果需要對事務的完整性要求比較高(比如銀行),要求實現并發控制(比如售票),那選擇InnoDB有很大的優勢。如果需要頻繁的更新、刪除操作的數據庫,也可以選擇InnoDB,因為支持事務的提交(commit)和回滾(rollback)。

MyISAM:插入數據快,空間和內存使用比較低。如果表主要是用于插入新記錄和讀出記錄,那么選擇MyISAM能實現處理高效率。如果應用的完整性、并發性要求比 較低,也可以使用。

MEMORY:所有的數據都在內存中,數據的處理速度快,但是安全性不高。如果需要很快的讀寫速度,對數據的安全性要求較低,可以選擇MEMOEY。它對表的大小有要求,不能建立太大的表。所以,這類數據庫只使用在相對較小的數據庫表。

注意,同一個數據庫也可以使用多種存儲引擎的表。如果一個表要求比較高的事務處理,可以選擇InnoDB。這個數據庫中可以將查詢要求比較高的表選擇MyISAM存儲。如果該數據庫需要一個用于查詢的臨時表,可以選擇MEMORY存儲引擎。

責任編輯:武曉燕 來源: 云棲社區
相關推薦

2018-12-12 15:01:22

開源存儲 軟件

2012-02-13 22:50:59

集群高可用

2024-08-06 10:07:15

2021-12-09 07:54:19

瀏覽器引擎編譯

2010-08-16 09:15:57

2021-12-04 11:17:32

Javascript繼承編程

2013-12-23 14:00:31

Windows 8.2Windows 8.1

2025-04-14 08:50:00

Google ADK人工智能AI

2017-07-14 10:51:37

性能優化SQL性能分析

2009-05-13 17:31:06

DBAOracleIT

2020-09-08 10:56:55

Java多線程存儲器

2021-07-22 07:20:24

JS 遍歷方法前端

2012-09-10 16:38:40

Windows Ser

2013-08-02 09:42:37

BYODBYOC云存儲

2009-03-06 19:19:55

2021-12-09 06:41:56

Python協程多并發

2022-01-06 16:20:04

Java排序算法排序

2010-09-29 09:28:04

DHCP工作原理

2022-05-08 18:02:11

tunnel隧道云原生

2024-07-01 12:30:09

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久成人免费视频 | 97伊人| 天天玩天天操天天干 | 久久久亚洲一区 | 最新一级毛片 | 国产高清视频 | 国产精品免费观看视频 | 九九九久久国产免费 | 欧美男人亚洲天堂 | 日韩av一区在线观看 | 国产精品美女久久久久久免费 | 一区二区三区在线免费观看视频 | 91成人精品| 国产片侵犯亲女视频播放 | 男人天堂久久久 | av看片| 成人亚洲精品 | 中文字幕成人免费视频 | 国产亚洲精品精品国产亚洲综合 | 激情五月综合 | 日韩欧美在线播放 | 91精品国产91久久久久青草 | 国内毛片毛片毛片毛片 | 毛片一级片| 91麻豆蜜桃一区二区三区 | 91麻豆精品国产91久久久久久 | 久久a久久 | 亚洲一区二区三区在线 | 久久免费国产视频 | 亚洲综合在线播放 | 精品国产乱码久久久久久图片 | 成人三级网址 | 中文在线观看视频 | 国产高清在线精品 | www.黄色在线观看 | 狠狠干夜夜草 | 久久国产欧美日韩精品 | 99精品国产一区二区三区 | 亚洲日本中文 | 亚洲综合电影 | 国产精品久久久久久久久久久免费看 |