MyISAM儲存引擎

2021-05-21 19:09:15 字數 2639 閱讀 6280

myisam是預設儲存引擎。它基於更老的isam**,但有很多有用的擴充套件。(注意mysql 5.1不支援isam)。

每個myisam在磁碟上儲存成三個檔案。第乙個檔案的名字以表的名字開始,副檔名指出檔案型別。.frm檔案儲存表定義。資料檔案的擴充套件名為.myd (mydata)。索引檔案的副檔名是.myi (myindex)。

要明確表示你想要用乙個myisam**,請用engine表選項指出來:

create table t (i int) engine = myisam;
注釋:老版本的mysql使用type而不是engine(例如,type = myisam)。mysql 5.1為向下相容而支援這個語法,但type現在被輕視,而engine是首先的用法。

一般地,engine選項是不必要的;除非預設已經被改變了,myisam是預設儲存引擎。

你可以用myisamchk工具來檢查或修復myisam表。請參閱5.9.5.6節,「使用myisamchk做崩潰恢復」。你也可以用myisampack來壓縮myisam表,讓它們佔更少的空間。請參閱8.2節,「myisampack,產生壓縮、唯讀的myisam表」。

如下是myisam儲存引擎的一些特徵:

·         所有資料值先儲存低位元組。這使得資料機和作業系統分離。二進位制輕便性的唯一要求是機器使用補碼(如最近20年的機器有的一樣)和ieee浮點格式(在主流機器中也完全是主導的)。唯一不支援二進位制相容性的機器是嵌入式系統。這些系統有時使用特殊的處理器。

先儲存資料低位元組並不嚴重地影響速度;資料行中的位元組一般是未聯合的,從乙個方向讀未聯合的位元組並不比從反向讀更占用更多的資源。伺服器上的獲取列值的**與其它**相比並不顯得時間緊。

·        大檔案(達63位檔案長度)在支援大檔案的檔案系統和作業系統上被支援。

·         當把刪除和更新及插入混合的時候,動態尺寸的行更少碎片。這要通過合併相鄰被刪除的塊,以及若下乙個塊被刪除,就擴充套件到下一塊來自動完成。

·         每個myisam表最大索引數是64。 這可以通過重新編譯來改變。每個索引最大的列數是16個。

·         最大的鍵長度是1000位元組。這也可以通過編譯來改變。對於鍵長度超過250位元組的情況,乙個超過1024位元組的的鍵塊被用上。

·         blob和text列可以被索引。

·         null值被允許在索引的列中。這個佔每個鍵的0-1個位元組。

·         所有數字鍵值以高位元組為先被儲存以允許乙個更高地索引壓縮。

·        當記錄以排好序的順序插入(就像你使用乙個auto_increment列之時),索引樹被劈開以便高節點僅包含乙個鍵。這改善了索引樹的空間利用率。

·         每表乙個auto_incremen列的內部處理。myisam為insert和update操作自動更新這一列。這使得auto_increment列更快(至少10%)。在序列頂的值被刪除之後就不能再利用。(當auto_increment列被定義為多列索引的最後一列,可以出現重使用從序列頂部刪除的值的情況)。auto_increment值可用alter table或myisamch來重置。

·         如果資料檔案中間的表沒有自由塊了,在其它執行緒從表讀的同時,你可以insert新行到表中。(這被認識為併發操作)。自由塊的出現是作為刪除行的結果,或者是用比當前內容多的資料對動態長度行更新的結果。當所有自由塊被用完(填滿),未來的插入又變成併發。

·         你可以把資料檔案和索引檔案放在不同目錄,用data directory和index directory選項create table以獲得更高的速度,請參閱13.1.5節,「create table語法」。

·         每個字元列可以又不同的字符集,請參閱第10章:「字符集支援」。

·         在myisam索引檔案裡又乙個標誌,它表明表是否被正確關閉。如果用--myisam-recover選項啟動mysqld,myisam表在開啟得時候被自動檢查,如果被表被不恰當地關閉,就修復表。

·         如果你用--update-state選項執行myisamchk,它標註表為已檢查。myisamchk --fast只檢查那些沒有這個標誌的表。

·myisamchk --analyze為部分鍵儲存統計資訊,也為整個鍵儲存統計資訊。

·myisampack可以打包blob和varchar列。

myisam也支援下列特徵:

·         支援true varchar型別;varchar列以儲存在2個位元組中的長度來開始。

·         有varchar的表可以有固定或動態記錄長度。

·         varchar和char列可以多達64kb。

·         乙個被搞亂的已計算索引對可對unique來使用。這允許你在表內任何列的合併上有unique。(儘管如此,你不能在乙個unique已計算索引上搜尋)。

對myisam儲存引擎,有乙個更詳細的論壇在http://forums.mysql.com/list.php?21。

MyISAM儲存引擎

支援事務,支援外來鍵,尤其是訪問速度快,對事務完 整性沒有要求或者以select insert為主的應用基本都可以使用這個引擎來建立表。每個myisam在磁碟上儲存成3個檔案,其中檔名和表名都相同,但是副檔名分別為 1 frm 儲存表定義 2 myd mydata,儲存資料 3 myi myinde...

MyISAM儲存引擎

支援事務,支援外來鍵,尤其是訪問速度快,對事務完 整性沒有要求或者以select insert為主的應用基本都可以使用這個引擎來建立表。每個myisam在磁碟上儲存成3個檔案,其中檔名和表名都相同,但是副檔名分別為 1 frm 儲存表定義 2 myd mydata,儲存資料 3 myi myinde...

MyISAM儲存引擎

myisam是mysql的預設儲存引擎。myisam不支援事物,外來鍵,其優點的是快。myisam在磁碟上儲存為3個檔案,分別是 frm 儲存定義 myd mydate,儲存資料 myi myindex,儲存引擎 資料檔案和索引檔案可以放置在不同的目錄下。myisam表的索引檔案和資料檔案可以放置到...