三、表類型
很多MySQL使用者可能很驚訝,MySQL確實為使用者提供5種不同的表類型,稱為DBD、HEAP、ISAM、MERGE和MyIASM。DBD歸為事務安全類,而其他為非事務安全類。
3.1、事務安全
DBD
Berkeley DB(DBD)表是支援交易處理的表,由Sleepycat軟體公司(http://www.sleepycat.com)開發。它提供MySQL使用者期待已久的功能-事務控制。事務控制在任何資料庫系統中都是一個極有價值的功能,因為它們確保一組命令能成功地執行。
3.2、非事務安全
HEAP
HEAP表是MySQL中存取資料最快的表。這是因為他們使用儲存在動態記憶體中的一個雜湊索引。另一個要點是如果MySQL或伺服器崩潰,資料將丟失。
ISAM
ISAM表是早期MySQL版本的預設表類型,直到MyIASM開發出來。建議不要再使用它。
MERGE
MERGE是一個有趣的新類型,在3.23.25之後出現。一個MERGE表實際上是一個相同MyISAM表的集合,合并成一個表,主要是為了效率原因。這樣可以提高速度、搜尋效率、修複效率並節省磁碟空間。
MyIASM
這是MySQL的預設表類型。它基於IASM代碼,但有很多有用的擴充。MyIASM比較好的原因:
MyIASM表小於IASM表,所以使用較少資源。
MyIASM表在不同的平台上二進位層可移植。
更大的鍵碼尺寸,更大的鍵碼上限。
3.3、指定表類型
你可在建立表時指定表的類型。下例建立一個HEAP表:
--------------------------------------------------------------------------------
mysql>CREATE TABLE email_addresses TYPE=HEAP (
->email char(55) NOT NULL,
->name char(30) NOT NULL,
->PRIMARY KEY(email) );
--------------------------------------------------------------------------------
BDB表需要一些配置工作,參見http://www.mysql.com/doc/B/D/BDB_overview.html。
3.4、更多的表類型
為了使MySQL管理工作更有趣,即將發布的MySQL 4.0將提供兩種新的表類型,稱為Innobase和Gemeni。
4、最佳化工具
MySQL伺服器本身提供了幾條內建命令用於協助最佳化。
4.1、SHOW
你可能有興趣知道MySQL伺服器究竟更了什麼,下列命令給出一個總結:
--------------------------------------------------------------------------------
mysql>show status;
--------------------------------------------------------------------------------
它給出了一個相當長的狀態變數及其值的列表。有些變數包含了異常終止客戶的數量、異常終止串連的數量、串連嘗試的次數、最大並發串連數和大量其他有用的資訊。這些資訊對找出系統問題和低效極具價值。
SHOW還能做更多的事情。它可以顯示關於記錄檔、特定資料庫、表、索引、進程和許可權表中有價值的資訊。詳見MySQL手冊。
4.2、EXPLAIN
當你面對SELECT語句時,EXPLAIN解釋SELECT命令如何被處理。這不僅對決定是否應該增加一個索引,而且對決定一個複雜的Join如何被MySQL處理都是有協助的。
4.3、OPTIMIZE
OPTIMIZE語句允許你恢複空間和合并資料檔案片段,對包含變長行的表進行了大量更新和刪除後,這樣做特別重要。OPTIMIZE目前只工作於MyIASM和BDB表。