MySQL數(shù)據(jù)庫引擎ISAM,myISAM,heap介紹_第1頁
MySQL數(shù)據(jù)庫引擎ISAM,myISAM,heap介紹_第2頁
MySQL數(shù)據(jù)庫引擎ISAM,myISAM,heap介紹_第3頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、MySQ數(shù)據(jù)庫引擎ISAM,mylSAM,heap介紹MySQL勺自帶引擎肯定是夠用了,但是在有些情況下,其他的引擎可能要比 手頭所用更適合完成任務。如果愿意的話,你甚至可以使用MySQL+AP來創(chuàng)建自己的數(shù)據(jù)庫引擎, 就像打穿氣缸裝上自己的化油器。 現(xiàn)在讓我們來看看你該如 何選擇引擎, 以及如何在可用引擎之間切換。 選擇你的引擎你能用的數(shù)據(jù)庫引擎 取決于MySQ在安裝的時候是如何被編譯的。要添加一個新的引擎,就必須重新 編譯MySQL僅僅為了添加一個特性而編譯應用程序的概念對于Windows的開發(fā)人員來說可能很奇怪,但是在UNIX世界里,這已經成為了標準。在缺省情況下, MySQ支持三個引擎

2、:ISAM MylSAMffi HEAP另外兩種類型InnoDB和Berkley (BDB,也常??梢允褂谩SAMISAM是一個定義明確且歷經時間考驗的數(shù)據(jù)表 格管理方法,它在設計之時就考慮到數(shù)據(jù)庫被查詢的次數(shù)要遠大于更新的次數(shù)。 因此,ISAM執(zhí)行讀取操作的速度很快,而且不占用大量的內存和存儲資源。ISAM 的兩個主要不足之處在于, 它不支持事務處理, 也不能夠容錯: 如果你的硬盤崩 潰了,那么數(shù)據(jù)文件就無法恢復了。如果你正在把ISA M用在關鍵任務應用程序里,那就必須經常備份你所有的實時數(shù)據(jù),通過其復制特性,MySQI能夠支持這樣的備份應用程序。MyISAMMyISA是MySQL勺ISA

3、M擴展格式和缺省的數(shù)據(jù)庫引 擎。除了提供ISAM里所沒有的索引和字段管理的大量功能,MyISAM還使用一種表格鎖定的機制,來優(yōu)化多個并發(fā)的讀寫操作。其代價是你需要經常運行 OPTIMIZETABL命令,來恢復被更新機制所浪費的空間。MylSAMS有一些有用的 擴展,例如用來修復數(shù)據(jù)庫文件的MyISAMChk工具和用來恢復浪費空間的MylSAMPac工具。MyISAM雖調了快速讀取操作,這可能就是為什么MySQ受到了 Web開發(fā)如此青睞的主要原因:在Web開發(fā)中你所進行的大量數(shù)據(jù)操作都是讀 取操作。 所以, 大多數(shù)虛擬主機提供商和 Internet 平臺提供商(InternetPresenceP

4、rovider ,IPP)只允許使用 MyISAM格式。HEAPHEA允許 只駐留在內存里的臨時表格。駐留在內存里讓 HEAP要比ISAM和MyISAM都快, 但是它所管理的數(shù)據(jù)是不穩(wěn)定的, 而且如果在關機之前沒有進行保存, 那么所有 的數(shù)據(jù)都會丟失。在數(shù)據(jù)行被刪除的時候,HEAP也不會浪費大量的空間。HEAP表格在你需要使用SELECT表達式來選擇和操控數(shù)據(jù)的時候非常有用。要記住, 在用完表格之后就刪除表格。 讓我再重復一遍: 在你用完表格之后, 不要忘記刪 除表格。InnoDB和BerkleyDBInnoDB和BerkleyDB (BDB數(shù)據(jù)庫引擎都是造就 MySQ靈活性的技術的直接產品,

5、這項技術就是MySQL+API在使用MySQL勺時 候,你所面對的每一個挑戰(zhàn)幾乎都源于ISAM和MyISAM數(shù)據(jù)庫引擎不支持事務處 理也不支持外來鍵。盡管要比ISAM和MyISAM引擎慢很多,但是InnoDB和BDB包括了對事務處理和外來鍵的支持, 這兩點都是前兩個引擎所沒有的。 如前所述, 如果你的設計需要這些特性中的一者或者兩者, 那你就要被迫使用后兩個引擎中 的一個了。如果感覺自己的確技術高超,你還能夠使用MySQL+來創(chuàng)建自己的數(shù)據(jù)庫引擎。這個 API 為你提供了操作字段、記錄、表格、數(shù)據(jù)庫、連接、安全帳 號的功能,以及建立諸如 MySQ這樣DBM新需要的所有其他無數(shù)功能。深入講 解A

6、PI已經超出了本文的范圍,但是你需要了解MySQL+的存在及其可交換引擎 背后的技術, 這一點是很重要的。 估計這個插件式數(shù)據(jù)庫引擎的模型甚至能夠被 用來為MySQ創(chuàng)建本地的XML提供器(XMLprovider)。(任何讀到本文的 MySQL+ 開發(fā)人員可以把這一點當作是個要求。 )按開關讓所有的靈活性成為可能的開關 是提供給ANSISQ啲MySQ擴展一一TYPE參數(shù)。MySQ能夠讓你在表格這一層指 定數(shù)據(jù)庫引擎,所以它們有時候也指的是 tableformats 。下面的示例代碼表明 了如何創(chuàng)建分別使用MyISAM ISAM和 HEAP引擎的表格。要注意,創(chuàng)建每個表格 的代碼是相同的,除了最后

7、的TYPE參數(shù),這一參數(shù)用來指定數(shù)據(jù)引擎。CREATETABLEtblMyISAM(idINTNOTNULLAUTO_INCREMENT,PRIMARYKEY(id),value_ aTINYINT)TYPE=MyISAMCREATETABLEtblISAM(idINTNOTNULLAUTO_INCREMENT,PRI MARYKEY(id),value_aTINYINT)TYPE=ISAMCREATETABLEtblHeap(idINTNOTNULLAU TO_INCREMENT,PRIMARYKEY(id),value_aTINYINT)TYPE=He你也可以使用 ALTERTABL命令,

8、把原有的表格從一個引擎移動到另一個引擎。下面的代碼顯 示了如何使用 ALTERTABLE把 MyISAM表格移動到InnoDB的引擎: ALTERTABLEtblMylSAMCHANGETYPE=l nn oDBM用S三步來實現(xiàn)這一目的。首先, 這個表格的一個副本被創(chuàng)建。 然后, 任何輸入數(shù)據(jù)的改變都被排入隊列, 同時這 個副本被移動到另一個引擎。 最后,任何排入隊列的數(shù)據(jù)改變都被送交到新的表 格里,而原來的表格被刪除。ALTERTABL捷徑如果只是想把表格從ISA M更新為 MyISAM, 你可以 使用 mysql_convert_table_format 命令, 而不需要編寫 ALTERT

9、ABL表達式。你可以使用 SHOWTAB命令 (這是MySQ對ANSI標準的另 一個擴展)來確定哪個引擎在管理著特定的表格。SHOWTABI會返回一個帶有多數(shù)據(jù)列的結果集, 你可以用這個結果集來查詢獲得所有類型的信息: 數(shù)據(jù)庫引擎 的名稱在Type字段里。下面的示例代碼說明了 SHOWTABL的用法: SHOWTABLESTATUSFROMtblInnoDBSHOWTABL替換方法你可以用 SHOWCREATETABLETableNa來取|回SHOWTAB能夠取回的信息。最后,如果你 想使用沒有被編譯成MySQ也沒有被激活的引擎,那是沒有用的,MySQ不會提 示這一點。而它只會給你提供一個缺省格式(MyISAM的表格。除了使用缺省的 表格格式外,還有辦法讓MySQ給出錯誤提示,但是就現(xiàn)在而言,如果不能肯定 特定的數(shù)據(jù)庫引擎是否可用的話,你要使用SHOWTAB來檢查表格格式。更多的選擇意味著更好的性能用于特定表格的引擎都需要重新編譯和追蹤, 考慮到這種 的額外復雜性, 為什么你還是想要使用非缺省的數(shù)據(jù)庫引擎呢?答案很簡單: 要 調整數(shù)據(jù)庫來滿足你的要求。可以肯定的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論