一般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引數,這一引數用來指定資料引擎。
mysql資料庫加索引 mysql資料庫加索引
新增普通索引 alter table cmf cz czfjbxx add index index xz xz alter table cmf cz czfjbxx add index index zzyt zzyt alter table cmf cz czrxx add index index ...
為mysql資料庫建立索引
建立和刪除索引 索引的建立可以在create table語句中進行,也可以單獨用create index或alter table來給表增加索引。刪除索引可以利用alter table或drop index語句來實現。1 使用alter table語句建立索引。語法如下 alter table tab...
為mysql資料庫建立索引
code 如下 create table mytable id serial primary key,category id int not null default 0,user id int not null default 0,adddate int not null default 0 很簡...