亚洲韩日午夜视频,欧美日韩在线精品一区二区三区,韩国超清无码一区二区三区,亚洲国产成人影院播放,久草新在线,在线看片AV色

您好,歡迎來到思海網(wǎng)絡(luò),我們將竭誠(chéng)為您提供優(yōu)質(zhì)的服務(wù)! 誠(chéng)征網(wǎng)絡(luò)推廣 | 網(wǎng)站備案 | 幫助中心 | 軟件下載 | 購(gòu)買流程 | 付款方式 | 聯(lián)系我們 [ 會(huì)員登錄/注冊(cè) ]
促銷推廣
客服中心
業(yè)務(wù)咨詢
有事點(diǎn)擊這里…  531199185
有事點(diǎn)擊這里…  61352289
點(diǎn)擊這里給我發(fā)消息  81721488
有事點(diǎn)擊這里…  376585780
有事點(diǎn)擊這里…  872642803
有事點(diǎn)擊這里…  459248018
有事點(diǎn)擊這里…  61352288
有事點(diǎn)擊這里…  380791050
技術(shù)支持
有事點(diǎn)擊這里…  714236853
有事點(diǎn)擊這里…  719304487
有事點(diǎn)擊這里…  1208894568
有事點(diǎn)擊這里…  61352289
在線客服
有事點(diǎn)擊這里…  531199185
有事點(diǎn)擊這里…  61352288
有事點(diǎn)擊這里…  983054746
有事點(diǎn)擊這里…  893984210
當(dāng)前位置:首頁(yè) >> 技術(shù)文章 >> 文章瀏覽
技術(shù)文章

MySQL數(shù)據(jù)庫(kù)引擎快速指導(dǎo)

添加時(shí)間:2013-1-22 21:22:56  添加: 思海網(wǎng)絡(luò) 
MySQL數(shù)據(jù)庫(kù)為開發(fā)人員所做的就好像是按按鈕換引擎;它讓你選擇數(shù)據(jù)庫(kù)引擎,并給你一條簡(jiǎn)單的途徑來切換它。

MySQL的自帶引擎肯定是夠用了,但是在有些情況下,其他的引擎可能要比手頭所用更適合完成任務(wù)。如果愿意的話,你甚至可以使用MySQL++ API來創(chuàng)建自己的數(shù)據(jù)庫(kù)引擎,就像打穿氣缸裝上自己的化油器。現(xiàn)在讓我們來看看你該如何選擇引擎,以及如何在可用引擎之間切換。

選擇你的引擎

你能用的數(shù)據(jù)庫(kù)引擎取決于MySQL在安裝的時(shí)候是如何被編譯的。要添加一個(gè)新的引擎,就必須重新編譯MySQL。僅僅為了添加一個(gè)特性而編譯應(yīng)用程序的概念對(duì)于Windows的開發(fā)人員來說可能很奇怪,但是在UNIX世界里,這已經(jīng)成為了標(biāo)準(zhǔn)。在缺省情況下,MySQL支持三個(gè)引擎:ISAM、MyISAM和HEAP。另外兩種類型InnoDB和Berkley(BDB),也常常可以使用。

ISAM

ISAM是一個(gè)定義明確且歷經(jīng)時(shí)間考驗(yàn)的數(shù)據(jù)表格管理方法,它在設(shè)計(jì)之時(shí)就考慮到數(shù)據(jù)庫(kù)被查詢的次數(shù)要遠(yuǎn)大于更新的次數(shù)。因此,ISAM執(zhí)行讀取操作的速度很快,而且不占用大量的內(nèi)存和存儲(chǔ)資源。ISAM的兩個(gè)主要不足之處在于,它不支持事務(wù)處理,也不能夠容錯(cuò):如果你的硬盤崩潰了,那么數(shù)據(jù)文件就無法恢復(fù)了。如果你正在把ISAM用在關(guān)鍵任務(wù)應(yīng)用程序里,那就必須經(jīng)常備份你所有的實(shí)時(shí)數(shù)據(jù),通過其復(fù)制特性,MySQL能夠支持這樣的備份應(yīng)用程序。

MyISAM

MyISAM是MySQL的ISAM擴(kuò)展格式和缺省的數(shù)據(jù)庫(kù)引擎。除了提供ISAM里所沒有的索引和字段管理的大量功能,MyISAM還使用一種表格鎖定的機(jī)制,來優(yōu)化多個(gè)并發(fā)的讀寫操作。其代價(jià)是你需要經(jīng)常運(yùn)行OPTIMIZE TABLE命令,來恢復(fù)被更新機(jī)制所浪費(fèi)的空間。MyISAM還有一些有用的擴(kuò)展,例如用來修復(fù)數(shù)據(jù)庫(kù)文件的MyISAMChk工具和用來恢復(fù)浪費(fèi)空間的MyISAMPack工具。

MyISAM強(qiáng)調(diào)了快速讀取操作,這可能就是為什么MySQL受到了Web開發(fā)如此青睞的主要原因:在Web開發(fā)中你所進(jìn)行的大量數(shù)據(jù)操作都是讀取操作。所以,大多數(shù)虛擬主機(jī)提供商和Internet平臺(tái)提供商(Internet Presence Provider,IPP)只允許使用MyISAM格式。

HEAP

HEAP允許只駐留在內(nèi)存里的臨時(shí)表格。駐留在內(nèi)存里讓HEAP要比ISAM和MyISAM都快,但是它所管理的數(shù)據(jù)是不穩(wěn)定的,而且如果在關(guān)機(jī)之前沒有進(jìn)行保存,那么所有的數(shù)據(jù)都會(huì)丟失。在數(shù)據(jù)行被刪除的時(shí)候,HEAP也不會(huì)浪費(fèi)大量的空間。HEAP表格在你需要使用SELECT表達(dá)式來選擇和操控?cái)?shù)據(jù)的時(shí)候非常有用。要記住,在用完表格之后就刪除表格。讓我再重復(fù)一遍:在你用完表格之后,不要忘記刪除表格。

InnoDB和Berkley DB

InnoDB和Berkley DB(BDB)數(shù)據(jù)庫(kù)引擎都是造就MySQL靈活性的技術(shù)的直接產(chǎn)品,這項(xiàng)技術(shù)就是MySQL++ API。在使用MySQL的時(shí)候,你所面對(duì)的每一個(gè)挑戰(zhàn)幾乎都源于ISAM和MyISAM數(shù)據(jù)庫(kù)引擎不支持事務(wù)處理也不支持外來鍵。盡管要比ISAM和MyISAM引擎慢很多,但是InnoDB和BDB包括了對(duì)事務(wù)處理和外來鍵的支持,這兩點(diǎn)都是前兩個(gè)引擎所沒有的。如前所述,如果你的設(shè)計(jì)需要這些特性中的一者或者兩者,那你就要被迫使用后兩個(gè)引擎中的一個(gè)了。

如果感覺自己的確技術(shù)高超,你還能夠使用MySQL++來創(chuàng)建自己的數(shù)據(jù)庫(kù)引擎。這個(gè)API為你提供了操作字段、記錄、表格、數(shù)據(jù)庫(kù)、連接、安全帳號(hào)的功能,以及建立諸如MySQL這樣DBMS所需要的所有其他無數(shù)功能。深入講解API已經(jīng)超出了本文的范圍,但是你需要了解MySQL++的存在及其可交換引擎背后的技術(shù),這一點(diǎn)是很重要的。估計(jì)這個(gè)插件式數(shù)據(jù)庫(kù)引擎的模型甚至能夠被用來為MySQL創(chuàng)建本地的XML提供器(XML provider)。(任何讀到本文的MySQL++開發(fā)人員可以把這一點(diǎn)當(dāng)作是個(gè)要求。)

開關(guān)

讓所有的靈活性成為可能的開關(guān)是提供給ANSI SQL的MySQL擴(kuò)展——TYPE參數(shù)。MySQL能夠讓你在表格這一層指定數(shù)據(jù)庫(kù)引擎,所以它們有時(shí)候也指的是table formats。下面的示例代碼表明了如何創(chuàng)建分別使用MyISAM、ISAM和HEAP引擎的表格。要注意,創(chuàng)建每個(gè)表格的代碼是相同的,除了最后的TYPE參數(shù),這一參數(shù)用來指定數(shù)據(jù)引擎。

以下為引用的內(nèi)容:
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命令,把原有的表格從一個(gè)引擎移動(dòng)到另一個(gè)引擎。下面的代碼顯示了如何使用ALTER TABLE把MyISAM表格移動(dòng)到InnoDB的引擎:

以下為引用的內(nèi)容:
ALTER TABLE tblMyISAM CHANGE TYPE=InnoDB

MySQL用三步來實(shí)現(xiàn)這一目的。首先,這個(gè)表格的一個(gè)副本被創(chuàng)建。然后,任何輸入數(shù)據(jù)的改變都被排入隊(duì)列,同時(shí)這個(gè)副本被移動(dòng)到另一個(gè)引擎。最后,任何排入隊(duì)列的數(shù)據(jù)改變都被送交到新的表格里,而原來的表格被刪除。

ALTER TABLE捷徑

如果只是想把表格從ISAM更新為MyISAM,你可以使用MySQL_convert_table_format命令,而不需要編寫ALTER TABLE表達(dá)式。

你可以使用SHOW TABLE命令(這是MySQL對(duì)ANSI標(biāo)準(zhǔn)的另一個(gè)擴(kuò)展)來確定哪個(gè)引擎在管理著特定的表格。SHOW TABLE會(huì)返回一個(gè)帶有多數(shù)據(jù)列的結(jié)果集,你可以用這個(gè)結(jié)果集來查詢獲得所有類型的信息:數(shù)據(jù)庫(kù)引擎的名稱在Type字段里。下面的示例代碼說明了SHOW TABLE的用法:

SHOW TABLE STATUS FROM tblInnoDB

SHOW TABLE的替換方法

你可以用SHOW CREATE TABLE [TableName]來取回SHOW TABLE能夠取回的信息。

最后,如果你想使用沒有被編譯成MySQL也沒有被激活的引擎,那是沒有用的,MySQL不會(huì)提示這一點(diǎn)。而它只會(huì)給你提供一個(gè)缺省格式(MyISAM)的表格。除了使用缺省的表格格式外,還有辦法讓MySQL給出錯(cuò)誤提示,但是就現(xiàn)在而言,如果不能肯定特定的數(shù)據(jù)庫(kù)引擎是否可用的話,你要使用SHOW TABLE來檢查表格格式。

更多的選擇意味著更好的性能

用于特定表格的引擎都需要重新編譯和追蹤,考慮到這種的額外復(fù)雜性,為什么你還是想要使用非缺省的數(shù)據(jù)庫(kù)引擎呢?答案很簡(jiǎn)單:要調(diào)整數(shù)據(jù)庫(kù)來滿足你的要求。

可以肯定的是,MyISAM的確快,但是如果你的邏輯設(shè)計(jì)需要事務(wù)處理,你就可以自由使用支持事務(wù)處理的引擎。進(jìn)一步講,由于MySQL能夠允許你在表格這一層應(yīng)用數(shù)據(jù)庫(kù)引擎,所以你可以只對(duì)需要事務(wù)處理的表格來進(jìn)行性能優(yōu)化,而把不需要事務(wù)處理的表格交給更加輕便的MyISAM引擎。對(duì)于MySQL而言,靈活性才是關(guān)鍵。

關(guān)鍵字:MySQL數(shù)據(jù)庫(kù)、引擎

分享到:

頂部 】 【 關(guān)閉
版權(quán)所有:佛山思海電腦網(wǎng)絡(luò)有限公司 ©1998-2024 All Rights Reserved.
聯(lián)系電話:(0757)22630313、22633833
中華人民共和國(guó)增值電信業(yè)務(wù)經(jīng)營(yíng)許可證: 粵B1.B2-20030321 備案號(hào):粵B2-20030321-1
網(wǎng)站公安備案編號(hào):44060602000007 交互式欄目專項(xiàng)備案編號(hào):200303DD003  
察察 工商 網(wǎng)安 舉報(bào)有獎(jiǎng)  警警  手機(jī)打開網(wǎng)站