程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 教你為MySQL數據庫換擋加快

教你為MySQL數據庫換擋加快

編輯:MySQL綜合教程

教你為MySQL數據庫換擋加快。本站提示廣大學習愛好者:(教你為MySQL數據庫換擋加快)文章只能為提供參考,不一定能成為您想要的結果。以下是教你為MySQL數據庫換擋加快正文


MySQL的自帶引擎確定是夠用了,然則在有些情形下,其他的引擎能夠要比手頭所用更合適完成義務。假如情願的話,你乃至可使用MySQL++ API來創立本身的數據庫引擎,就像打穿氣缸裝上本身的化油器。如今讓我們來看看你該若何選擇引擎,和若何在可用引擎之間切換。
  選擇你的引擎
  你能用的數據庫引擎取決於MySQL在裝置的時刻是若何被編譯的。要添加一個新的引擎,就必需從新編譯MySQL。僅僅為了添加一個特征而編譯運用法式的概念關於Windows的開辟人員來講能夠很奇異,然則在Unix世界裡,這曾經成了尺度。在缺省情形下,MySQL支撐三個引擎:ISAM、MyISAM和HEAP。別的兩品種型InnoDB和Berkley(BDB),也經常可使用。
  ISAM
  ISAM是一個界說明白且歷經時光考驗的數據表格治理辦法,它在設計之時就斟酌到數據庫被查詢的次數要弘遠於更新的次數。是以,ISAM履行讀取操作的速度很快,並且不占用年夜量的內存和存儲資本。ISAM的兩個重要缺乏的地方在於,它不支撐事務處置,也不克不及夠容錯:假如你的硬盤瓦解了,那末數據文件就沒法恢復了。假如你正在把ISAM用在症結義務運用法式裡,那就必需常常備份你一切的及時數據,經由過程其復制特征,MySQL可以或許支撐如許的備份運用法式。
  MyISAM
  MyISAM是MySQL的ISAM擴大格局和缺省的數據庫引擎。除供給ISAM裡所沒有的索引和字段治理的年夜量功效,MyISAM還應用一種表格鎖定的機制,來優化多個並發的讀寫操作。其價值是你須要常常運轉OPTIMIZE TABLE敕令,來恢復被更新機制所糟蹋的空間。MyISAM還有一些有效的擴大,例如用來修單數據庫文件的MyISAMChk對象和用來恢復糟蹋空間的MyISAMPack對象。
  MyISAM強調了疾速讀取操作,這能夠就是為何MySQL遭到了Web開辟如斯喜愛的重要緣由:在Web開辟中你所停止的年夜量數據操作都是讀取操作。所以,年夜多半虛擬主機供給商和Internet平台供給商(Internet Presence Provider,IPP)只許可應用MyISAM格局。
  HEAP
  HEAP許可只駐留在內存裡的暫時表格。駐留在內存裡讓HEAP要比ISAM和MyISAM都快,然則它所治理的數據是不穩固的,並且假如在關機之前沒有停止保留,那末一切的數據都邑喪失。在數據行被刪除的時刻,HEAP也不會糟蹋年夜量的空間。HEAP表格在你須要應用SELECT表達式來選擇和操控數據的時刻異常有效。要記住,在用完表格以後就刪除表格。讓我再反復一遍:在你用完表格以後,不要忘卻刪除表格。
  InnoDB和Berkley DB
  InnoDB和Berkley DB(BDB)數據庫引擎都是培養MySQL靈巧性的技巧的直接產物,這項技巧就是MySQL++ API。在應用MySQL的時刻,你所面臨的每個挑釁簡直都源於ISAM和MyISAM數據庫引擎不支撐事務處置也不支撐外來鍵。雖然要比ISAM和MyISAM引擎慢許多,然則InnoDB和BDB包含了對事務處置和外來鍵的支撐,這兩點都是前兩個引擎所沒有的。如前所述,假如你的設計須要這些特征中的一者或許二者,那你就要自願應用後兩個引擎中的一個了。
  假如感到本身切實其實技巧高明,你還可以或許應用MySQL++來創立本身的數據庫引擎。這個API為你供給了操作字段、記載、表格、數據庫、銜接、平安帳號的功效,和樹立諸如MySQL如許DBMS所須要的一切其他有數功效。深刻講授API曾經超越了本文的規模,然則你須要懂得MySQL++的存在及其可交流引擎面前的技巧,這一點是很主要的。估量這個插件式數據庫引擎的模子乃至可以或許被用來為MySQL創立當地的XML供給器(XML provider)。(任何讀到本文的MySQL++開辟人員可以把這一點看成是個請求。)
  讓一切的靈巧性成為能夠的開關是供給給ANSI SQL的MySQL擴大——TYPE參數。MySQL可以或許讓你在表格這一層指定命據庫引擎,所以它們有時刻也指的是table formats。上面的示例代碼注解了若何創立分離應用MyISAM、ISAM和HEAP引擎的表格。要留意,創立每一個表格的代碼是雷同的,除最初的TYPE參數,這一參數用來指定命據引擎。

CREATE TABLE tblMyISAM (
  id INT NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (id),
  value_a TINYINT
  ) TYPE=MyISAM
  CREATE TABLE tblISAM (
  id INT NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (id),
  value_a TINYINT
  ) TYPE=ISAM
  CREATE TABLE tblHeap (
  id INT NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (id),
  value_a TINYINT
  ) TYPE=Heap

你也能夠應用ALTER TABLE敕令,把原本的表格從一個引擎挪動到另外一個引擎。上面的代碼顯示了若何應用ALTER TABLE把MyISAM表格挪動到InnoDB的引擎:

ALTER TABLE tblMyISAM CHANGE TYPE=InnoDB

  MySQL用三步來完成這一目標。起首,這個表格的一個正本被創立。然後,任何輸出數據的轉變都被排入隊列,同時這個正本被挪動到另外一個引擎。最初,任何排入隊列的數據轉變都被送交到新的表格裡,而本來的表格被刪除。
  ALTER TABLE捷徑
  假如只是想把表格從ISAM更新為MyISAM,你可使用mysql_convert_table_format敕令,而不須要編寫ALTER TABLE表達式。
  你可使用SHOW TABLE敕令(這是MySQL對ANSI尺度的另外一個擴大)來肯定哪一個引擎在治理著特定的表格。SHOW TABLE會前往一個帶有多半據列的成果集,你可以用這個成果集來查詢取得一切類型的信息:數據庫引擎的稱號在Type字段裡。上面的示例代碼解釋了SHOW TABLE的用法:

SHOW TABLE STATUS FROM tblInnoDB

  SHOW TABLE的調換辦法
  你可以用SHOW CREATE TABLE [TableName]來取回SHOW TABLE可以或許取回的信息。最初,假如你想應用沒有被編譯成MySQL也沒有被激活的引擎,那是沒有效的,MySQL不會提醒這一點。而它只會給你供給一個缺省格局(MyISAM)的表格。除應用缺省的表格格局外,還有方法讓MySQL給失足誤提醒,然則就如今而言,假如不克不及確定特定的數據庫引擎能否可用的話,你要應用SHOW TABLE來檢討表格格局。
  更多的選擇意味著更好的機能
  用於特定表格的引擎都須要從新編譯和追蹤,斟酌到這類的額定龐雜性,為何你照樣想要應用非缺省的數據庫引擎呢?謎底很簡略:要調劑數據庫來知足你的請求。
  可以確定的是,MyISAM切實其實快,然則假如你的邏輯設計須要事務處置,你便可以自在應用支撐事務處置的引擎。進一步講,因為MySQL可以或許許可你在表格這一層運用數據庫引擎,所以你可以只對須要事務處置的表格來停止機能優化,而把不須要事務處置的表格交給加倍簡便的MyISAM引擎。關於MySQL而言,靈巧性才是症結。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved