![本章對數(shù)據(jù)庫技術的發(fā)展概況作了簡要的說明_第1頁](http://file4.renrendoc.com/view/82098ad86eb4d4fd19f8cbd4cf66987f/82098ad86eb4d4fd19f8cbd4cf66987f1.gif)
![本章對數(shù)據(jù)庫技術的發(fā)展概況作了簡要的說明_第2頁](http://file4.renrendoc.com/view/82098ad86eb4d4fd19f8cbd4cf66987f/82098ad86eb4d4fd19f8cbd4cf66987f2.gif)
![本章對數(shù)據(jù)庫技術的發(fā)展概況作了簡要的說明_第3頁](http://file4.renrendoc.com/view/82098ad86eb4d4fd19f8cbd4cf66987f/82098ad86eb4d4fd19f8cbd4cf66987f3.gif)
![本章對數(shù)據(jù)庫技術的發(fā)展概況作了簡要的說明_第4頁](http://file4.renrendoc.com/view/82098ad86eb4d4fd19f8cbd4cf66987f/82098ad86eb4d4fd19f8cbd4cf66987f4.gif)
![本章對數(shù)據(jù)庫技術的發(fā)展概況作了簡要的說明_第5頁](http://file4.renrendoc.com/view/82098ad86eb4d4fd19f8cbd4cf66987f/82098ad86eb4d4fd19f8cbd4cf66987f5.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、PAGE 24程序員突擊MySQL原理與Web系統(tǒng)開發(fā).PAGE 25第1章 MySQL導論:.;第1章 MySQL導論本章對數(shù)據(jù)庫技術的開展概略作了簡要的闡明,同時引見一些常用的小型數(shù)據(jù)庫和大型數(shù)據(jù)庫,重點引見MySQL數(shù)據(jù)庫。經(jīng)過本章的閱讀,讀者將對MySQL的開展情況、特點及其運用領域有一定的了解。1.3節(jié)論述MySQL的插件式體系構造,簡單闡明各種存儲引擎的特點及選擇方法和技巧。1.4節(jié)重點引見MySQL最常用的兩種存儲引擎,即MyISAM和InnoDB。1.1 數(shù)據(jù)庫概述在學習MySQL之前,首先簡單引見一下數(shù)據(jù)庫的根本概念。舉個簡單的例子來闡明:每個人都有很多親戚和朋友,為了堅持與
2、他們聯(lián)絡,我們經(jīng)常用一個筆記本將他們的姓名、地址、等信息都記錄下來,這樣要查誰的或地址就很方便。這個“通訊錄就是一個最簡單的“數(shù)據(jù)庫,每個人的姓名、地址、郵箱等信息就是這個數(shù)據(jù)庫中的“數(shù)據(jù)。我們可以在筆記本這個“數(shù)據(jù)庫中添加新朋友的個人信息,也可以由于某個朋友的變動而修正他的號碼這個“數(shù)據(jù)。總而言之,我們運用筆記本這個“數(shù)據(jù)庫是為了能隨時查到某位親戚或朋友的地址、或號碼這些“數(shù)據(jù)。當我們的親戚朋友不多時,也答應以很快地從筆記本中找到所需的數(shù)據(jù),但是當筆記本中的數(shù)據(jù)很多時,也許就要破費不少時間去查找某個朋友的聯(lián)絡方式了。而將這個筆記本數(shù)字化,也就是說將它的內(nèi)容錄入到計算機中,例如,存放在MySQ
3、L中,那么,即使我們有數(shù)以萬計的聯(lián)絡人,我們也可以在一瞬間找到他們。這就是數(shù)據(jù)庫的由來和作用。隨著信息產(chǎn)業(yè)的開展,數(shù)據(jù)庫在社會中發(fā)揚了越來越重要的作用??梢哉f,幾乎一切的信息系統(tǒng)都依賴于數(shù)據(jù)庫。通俗地講,數(shù)據(jù)庫就是存放數(shù)據(jù)的倉庫,而這個倉庫是存放在計算機存儲設備上,而且數(shù)據(jù)是按照一定格式存放的。按照數(shù)據(jù)庫實際的定義,數(shù)據(jù)庫是長期存儲在計算機內(nèi)的、有組織的、可共享的數(shù)據(jù)集合。在今天,電子商務、電子政務等都得到了迅速的開展,并由此產(chǎn)生了大量的數(shù)據(jù)。為了可以高效、準確地處置分析這些數(shù)據(jù),人們便運用了數(shù)據(jù)庫。為了將數(shù)據(jù)存儲在數(shù)據(jù)庫中,通常將描畫事物特征的假設干個數(shù)據(jù)組成一個數(shù)據(jù)記錄Record。例如,
4、通訊錄中的聯(lián)絡人,可以寫成如下方式:聯(lián)絡人姓名,地址,郵箱并將其稱之為記錄型,也就是數(shù)據(jù)的邏輯構造。它是對聯(lián)絡人這一事務的籠統(tǒng)描畫。其中,“聯(lián)絡人也稱為記錄名,通常在關系數(shù)據(jù)庫中,也作為根本表的表名。姓名、地址、郵箱等稱為字段field,在關系數(shù)據(jù)庫中,也就是各個根本表的表項。對于每個字段可以賦予特定的值,例如:張三,倉基社區(qū)sz263這就成為了一條記錄。在關系數(shù)據(jù)庫中,假設干條記錄便構成一張表。數(shù)據(jù)庫帶來的最直接的益處,就是實現(xiàn)了數(shù)據(jù)獨立性。所謂數(shù)據(jù)獨立性,是指數(shù)據(jù)與用戶運用程序之間的獨立性,也就是實現(xiàn)了運用程序與數(shù)據(jù)的分別。對于大多數(shù)運用程序而言,如一個電子商務
5、網(wǎng)站,它必然需求有后臺數(shù)據(jù)的支持才干運作。然而,這些后臺數(shù)據(jù)是以什么方式存放在物理磁盤上,網(wǎng)站運用程序并不用關懷,甚至當數(shù)據(jù)庫的邏輯構造發(fā)生變化時,如數(shù)據(jù)庫中原來的記錄型是商品商品編號,商品稱號,價錢,更改為商品商品編號,商品稱號,價錢,數(shù)量,原先的網(wǎng)站運用程序也不用更改。前者稱之為數(shù)據(jù)的物理獨立性,后者叫做數(shù)據(jù)的邏輯獨立性。【特別提示】數(shù)據(jù)獨立性對于系統(tǒng)維護而言相當重要,數(shù)據(jù)庫將數(shù)據(jù)以及程序進展了分別,當數(shù)據(jù)存儲方式,或者邏輯構造有改動時,運用程序可以堅持不變。假設沒有數(shù)據(jù)獨立性,程序和數(shù)據(jù)將會高度耦合,對于系統(tǒng)維護而言,就是一場“災難。1.1.1 數(shù)據(jù)庫技術的開展在數(shù)據(jù)庫系統(tǒng)產(chǎn)生之前,人們
6、對計算機數(shù)據(jù)的管理閱歷了人工管理階段20世紀50年代中期以前和文件系統(tǒng)管理階段20世紀50年代后到60年代中期。在人工管理階段,人們對數(shù)據(jù)的處置才干很低。從硬件上看,計算機內(nèi)存小,計算速度低;從軟件上看,沒有操作系統(tǒng)的支持,更沒有數(shù)據(jù)庫管理軟件。因此,在這個階段,數(shù)據(jù)總量不大,數(shù)據(jù)不能長期保管,數(shù)據(jù)與運用程序不隔離,運用程序需求隨著數(shù)據(jù)存儲方式的變化而變化。在文件系統(tǒng)階段,計算機的存儲器增大,計算速度大大提高,并且配備了操作系統(tǒng)。在這個階段,數(shù)據(jù)可以長期存放,并采用文件系統(tǒng)管理數(shù)據(jù)。但是,運用文件系統(tǒng)管理數(shù)據(jù)存在許多缺陷,數(shù)據(jù)冗余度大,邏輯獨立性差。1964年,美國通用電器公司的Bachman
7、等人勝利開發(fā)了世界上第一個DBMSDatabase Management SystemIDS系統(tǒng),標志著人們對數(shù)據(jù)的管理進入了數(shù)據(jù)庫系統(tǒng)階段。與文件系統(tǒng)相比,數(shù)據(jù)庫系統(tǒng)實現(xiàn)了數(shù)據(jù)的整體構造化。在文件系統(tǒng)中,雖然存在記錄內(nèi)的構造性,但整體上數(shù)據(jù)是無構造的,即不同文件之間的記錄是沒有聯(lián)絡的。但在數(shù)據(jù)庫系統(tǒng)中,不僅存在記錄內(nèi)部的聯(lián)絡,而且還描畫了數(shù)據(jù)之間的聯(lián)絡,實現(xiàn)了數(shù)據(jù)的整體構造化。這是數(shù)據(jù)庫系統(tǒng)與文件系統(tǒng)的本質(zhì)差別。同時,數(shù)據(jù)庫系統(tǒng)使數(shù)據(jù)面向整個運用系統(tǒng),降低了數(shù)據(jù)的冗余度,實現(xiàn)了數(shù)據(jù)的共享。表達數(shù)據(jù)庫整體構造性的典型例如就是外鍵約束。如圖1-1所示,在訂單記錄中的收貨人編號必需存在于描畫收貨人
8、信息的特定的記錄收貨人中;否那么,這便是一個非法的收貨人編號。在數(shù)據(jù)庫中,不同記錄或表之間的這種聯(lián)絡,便使數(shù)據(jù)庫數(shù)據(jù)整體構造化。圖1-1 外鍵約束數(shù)據(jù)庫系統(tǒng)的開展閱歷了以下幾個階段。第一代數(shù)據(jù)庫技術以層次數(shù)據(jù)庫和網(wǎng)狀數(shù)據(jù)庫為代表。其主要特點是支持三級方式構造;用指針來表示數(shù)據(jù)之間的聯(lián)絡;數(shù)據(jù)定義言語Data Definaition Language,DDL和數(shù)據(jù)支配言語Data Manipulation Language,DML相對獨立;數(shù)據(jù)庫采用過程性導航式言語,用戶在操作 HYPERLINK wiki.ccw/%E6%95%B0%E6%8D%AE%E5%BA%93 o 數(shù)據(jù)庫 數(shù)據(jù)庫時不但
9、闡明要做什么,還要闡明怎樣做。例如,在查找語句中不但要闡明查找的對象,而且要規(guī)定存取途徑。這和如今被廣泛運用的非過程性言語SQL是不同的。第二代數(shù)據(jù)庫技術,也就是如今被廣泛運用的關系數(shù)據(jù)庫系統(tǒng)。MySQL正是屬于這類數(shù)據(jù)庫。關系數(shù)據(jù)庫有嚴厲的數(shù)學實際作為根底,概念明晰,易于運用。1970年,美國IBM公司San Jose研討實驗室研討員E.F.Codd提出了關系數(shù)據(jù)庫模型,奠定了關系數(shù)據(jù)庫實際的根底。E.F.Codd也因此獲得了1981年的計算機圖靈獎。1974年, San Jose實驗室研制勝利System R,這是世界上最早的關系數(shù)據(jù)庫管理系統(tǒng)RDBMS。1980年后,眾多RDBMS產(chǎn)品相
10、繼推出,包括Oracle、Infomix、Sybase等。1990年后,RDBMS不斷開展,可以支持分布式數(shù)據(jù)庫、開放環(huán)境下異構數(shù)據(jù)庫互連,OLTPOn-Line Transaction Processing聯(lián)機事務處置和OLAPOn-Line Analytical Processing聯(lián)機分析處置。第三代數(shù)據(jù)庫技術,以面向?qū)ο髷?shù)據(jù)庫為代表。這一代數(shù)據(jù)庫管理系統(tǒng)基于擴展的關系數(shù)據(jù)庫模型或者面向?qū)ο髷?shù)據(jù)庫模型,目前,該技術尚未完全成熟。但是它支持包括數(shù)據(jù)、對象的管理,可以很好地和面向?qū)ο笤O計技術相交融。因此,許多商品化的關系數(shù)據(jù)庫管理系統(tǒng)也都進展了擴展,添加了面向?qū)ο筇匦?,開展成ORDBMSOb
11、ject-Relation DBMS。1.1.2 數(shù)據(jù)模型模型是對現(xiàn)實事物的一種籠統(tǒng)。它是人們?yōu)榱烁玫匮杏懍F(xiàn)實事物而建立的一種對現(xiàn)實事物的模擬。它客觀地表現(xiàn)了現(xiàn)實事物的特征。由于計算機只能存儲數(shù)據(jù),而不能存儲處置現(xiàn)實事物。因此,必需先將現(xiàn)實事物轉化為數(shù)據(jù)模型,才干交給計算機處置。例如,在網(wǎng)上購物時,計算機需求處置用戶訂單。但是計算機并無法直接處置一張訂單,因此必需先將訂單轉化為計算機可以存儲和處置的數(shù)據(jù)。而這些數(shù)據(jù)構造,表達了訂單的數(shù)據(jù)特征,就是一種數(shù)據(jù)模型。數(shù)據(jù)庫中的數(shù)據(jù)模型普通包括數(shù)據(jù)構造、數(shù)據(jù)操作和完好性約束3個要素。例如,訂單訂單號,商品名,單價,件數(shù),收貨人編號就是訂單的一種數(shù)據(jù)構
12、造。由于用戶可以有下訂單、撤銷訂單等操作,這些操作能夠會引起對訂單數(shù)據(jù)的插入、修正和刪除。有時還會有查詢等操作,這就是數(shù)據(jù)操作。而訂單的單價、件數(shù)不能夠為負數(shù),這就約束了兩者的取值范圍。這是一種完好性約束,稱之為實體完好性。假設此時有數(shù)據(jù)構造:收貨人收貨人編號,姓名,性別,地址,。顯然,在訂單訂單號,商品名,單價,件數(shù),收貨人編號中的收貨人編號必需存在收貨人收貨人編號,姓名,性別,地址,之中,否那么訂單中的收貨人編號就毫無意義。這種完好性約束,稱之為參照完好性。1概念數(shù)據(jù)模型概念數(shù)據(jù)模型Conceptual Data Model是最上層的數(shù)據(jù)模型。它與詳細的數(shù)據(jù)庫類型無關,是數(shù)據(jù)庫設計人員和用
13、戶交流的言語。概念數(shù)據(jù)模型非常接近現(xiàn)實世界,運用于數(shù)據(jù)庫設計的初始階段。最常見而且被廣泛運用的概念模型是實體-聯(lián)絡E-R模型,簡稱E-R模型。2構造數(shù)據(jù)模型目前,構造數(shù)據(jù)模型中最常用的構造數(shù)據(jù)模型有4種。分別是:層次模型、網(wǎng)狀模型、關系模型和面向?qū)ο竽P?。其中,層次模型和網(wǎng)狀模型統(tǒng)稱為非關系模型。它們的數(shù)據(jù)構造可以和圖論中的有向圖相對應,比較直觀。層次模型在現(xiàn)實生活中,許多實體之間的聯(lián)絡就是一種自然的層次關系。例如,一個文件系統(tǒng)的目錄構造,就是一個很好的例子。層次模型中,每個結點只需一個雙親結點。整個模型中,也只需根結點沒有雙親結點。每個結點都表示一個實體型集。實體之間的聯(lián)絡用結點之間的連線表
14、示。這種聯(lián)絡是雙親結點與子女結點之間的一對多聯(lián)絡。因此,層次模型表達一對一、一對多的聯(lián)絡是非常直觀的。但是,對于表達多對多聯(lián)絡時,層次模型需求經(jīng)過輔助手段才干表現(xiàn),顯得蠢笨、復雜。網(wǎng)狀模型層次模型可以方便地表示現(xiàn)實世界中的層次關系。而實踐上,現(xiàn)實世界中存在著大量的非層次關系。對于這些關系,采用層次模型是很不直接的。而網(wǎng)狀模型可以抑制這個 缺陷。例如,用戶的權限分配。同一用戶可以擁有多種不同的權限,而同一權限可以被系統(tǒng)的多個不同用戶同時擁有,這就是多對多的聯(lián)絡。圖1-2顯示了用戶與權限的多對多關系。圖1-2 多對多關系關系模型關系模型是如今最重要的一種數(shù)據(jù)模型。自20世紀80、90年代以來,軟件
15、廠商新推出的數(shù)據(jù)庫管理系統(tǒng)幾乎都是以關系模型為根底的。如今,包括MySQL在內(nèi)的多種數(shù)據(jù)庫都是基于關系模型的。關系模型的邏輯構造是一張二維表,簡稱表,也可稱之為關系。它由行和列組成。二維表中的一列也可以稱之為屬性。如表1-1所示,訂單表有5列,其屬性分別是訂單號、商品名、單價、件數(shù)、收貨人編號。二維表的表頭,即訂單號,商品名,單價,件數(shù),收貨人編號對應一個關系方式。表1-1所對應的關系方式可以描畫為:訂單訂單號,商品名,單價,件數(shù),收貨人編號。在二維表中,除了表頭以外的恣意非空行為一個元組,即一條記錄。如0001,專家導學基于MySQL的JavaB/S系統(tǒng)開發(fā),50,1,000325就是一個元
16、組。表1-1 訂單表訂 單 號商 品 名單 價件 數(shù)收貨人編號0001專家導學基于MySQL的Java B/S系統(tǒng)開發(fā)5010003250002專家導學Tomcat運用開發(fā)502000333面向?qū)ο竽P兔嫦驅(qū)ο驩bject Oriented,OO是當前計算機界關懷的重點,它是20世紀90年代軟件開發(fā)方法的主流。面向?qū)ο蟮母拍詈瓦\用已超越了程序設計和軟件開發(fā),擴展到很寬的范圍。對象是人們要進展研討的任何事物,從最簡單的整數(shù)到復雜的飛機等均可看作對象,它不僅能表示詳細的事物,還能表示籠統(tǒng)的規(guī)那么、方案或事件。對象模型表示了靜態(tài)的、構造化的系統(tǒng)數(shù)據(jù)性質(zhì),描畫了系統(tǒng)的靜態(tài)構造,它是從客觀世界實體的對象
17、關系角度來描畫的,表現(xiàn)了對象的相互關系。該模型主要關懷系統(tǒng)中對象的構造、屬性和操作,它是分析階段3個模型的中心,是其他兩個模型的框架。動態(tài)模型是與時間和變化有關的系統(tǒng)性質(zhì)。該模型描畫了系統(tǒng)的控制構造,它表示了瞬間的、行為化的系統(tǒng)控制性質(zhì),它關懷的是系統(tǒng)的控制、操作的執(zhí)行順序,它表示從對象的事件和形狀的角度出發(fā),表現(xiàn)了對象的相互行為。該模型描畫的系統(tǒng)屬性是觸發(fā)事件、事件序列、形狀、事件與形狀的組織。運用形狀圖作為描畫工具。它涉及事件、形狀、操作等重要概念。功能模型描畫了系統(tǒng)的一切計算。功能模型指出發(fā)生了什么,動態(tài)模型確定什么時候發(fā)生,而對象模型確定發(fā)生的客體。功能模型闡明一個計算如何從輸入值得到
18、輸出值,它不思索計算的次序。功能模型由多張數(shù)據(jù)流圖組成。數(shù)據(jù)流圖用來表示從源對象到目的對象的數(shù)據(jù)值的流向,它不包含控制信息,控制信息在動態(tài)模型中表示,同時數(shù)據(jù)流圖也不表示對象中值的組織,值的組織在對象模型中表示。3物理數(shù)據(jù)模型物理數(shù)據(jù)模型是描畫數(shù)據(jù)在存儲介質(zhì)商組織構造的數(shù)據(jù)模型,它不但與詳細的DBMS有關,而且還與操作系統(tǒng)和硬件有關,是物理層次的數(shù)據(jù)模型。為了保證數(shù)據(jù)的獨立性和可移植性,DBMS完成了大部分物理數(shù)據(jù)模型的實現(xiàn)任務,而設計者只需關懷設計索引等特殊構造即可。1.1.3 常用數(shù)據(jù)庫引見1AccessAccess是Microsoft的產(chǎn)品,伴隨著Office一同發(fā)布。作為一個單文件的數(shù)
19、據(jù)庫系統(tǒng),它運用簡單,但是功能并不強大,不支持事務、觸發(fā)器、存儲過程等運用。不適用于對可靠性要求較高的場所。2HSQLDBHSQLDB是一個開源純Java的數(shù)據(jù)庫,小巧方便。具有規(guī)范的SQL語法和Java接口,支持事務處置,支持Java存儲過程和函數(shù)。它屬于BSD的license,可以自在下載,并且可以安裝運用在商業(yè)產(chǎn)品之上。3SQLITESQLITE是開源單一文件數(shù)據(jù)庫。支持ACID事務,觸發(fā)器;零配置,不需安裝,支持數(shù)據(jù)大小達2TB。但它不支持外鍵,內(nèi)部采用UTF8存儲數(shù)據(jù),對于中文數(shù)據(jù)的處置,都必需調(diào)用編碼函數(shù),略有不便。4SQL ServerSQL Server是由微軟開發(fā)的一款數(shù)據(jù)庫
20、管理系統(tǒng)。其最新版本是SQL Server 2021,適宜于中小企業(yè)運用,只能在Windows操作系統(tǒng)下運轉。目前包含多種版本,如學習版、任務組版、開發(fā)版、規(guī)范版、企業(yè)版和挪動版,用戶可以根據(jù)實踐情況選擇適宜本人的版本。但是除學習版外,其他版本價錢不菲,其中企業(yè)版售價約為35萬人民幣,規(guī)范版售價約為7萬人民幣。5OracleOracle數(shù)據(jù)庫是Oracle公司的產(chǎn)品,是目前最為流行的大型數(shù)據(jù)庫之一,可以運轉在Windows和類UNIX等多種操作系統(tǒng)下,適宜于大型企業(yè)運用。目前最新版本是Oracle 11g。Oracle提供的功能是其他中小型數(shù)據(jù)庫望塵莫及的。Oracle提供了高度的可用性、可伸
21、縮性、可管理性和平安性,支持集群運用、數(shù)據(jù)倉庫、內(nèi)容管理等功能。但Oracle數(shù)據(jù)庫價錢較高,各項產(chǎn)品的售價大約在2萬50萬人民幣不等。而且,Oracle數(shù)據(jù)庫的學習周期較長,不易掌握。6DB2DB2是IBM5個軟件品牌之一,屬于大型數(shù)據(jù)庫,是Oracle的強有力的競爭對手??梢赃\轉在多種不同的操作系統(tǒng)下,包括UNIX、Windows、AS/400和OS/390。DB2對商業(yè)智能、內(nèi)容和記錄管理、異構數(shù)據(jù)庫集成有較好的支持。其價錢大約在2萬美圓左右。1.2 MySQL簡介一開場MySQL是作為小型輕量級關系數(shù)據(jù)庫推出的,主要定位于小型信息系統(tǒng)開發(fā)中的數(shù)據(jù)管理。近年來,隨著其研發(fā)技術的不斷提高和
22、版本的繼續(xù)晉級,MySQL在運用開發(fā)中正表現(xiàn)出越來越出色的穩(wěn)定性和可靠性。1.2.1 MySQL是什么MySQL是最流行的開放源碼SQL數(shù)據(jù)庫管理系統(tǒng),它是由MySQL AB公司開發(fā)、發(fā)布并支持的。MySQLAB是由多名MySQL開發(fā)人興辦的一家商業(yè)公司。它是一家第二代開放源碼公司,結合了開放源碼價值取向、方法和勝利的商業(yè)模型。MySQL的正式發(fā)音是My Ess Que Ell而不是my sequel。MySQL的網(wǎng)站MySQL上給出了關于MySQL的最新信息。在本書撰寫時,MySQL的最新版本為6.0,但假設無特殊闡明,本書中以MySQL5.1為例進展論述。MySQL是一種數(shù)據(jù)庫管理系統(tǒng)。數(shù)
23、據(jù)庫是數(shù)據(jù)的構造化集合。它可以是任何東西,從簡單的購物清單到畫展,或企業(yè)網(wǎng)絡中的海量信息。要想將數(shù)據(jù)添加到數(shù)據(jù)庫,或訪問、處置計算機數(shù)據(jù)庫中保管的數(shù)據(jù),需求運用數(shù)據(jù)庫管理系統(tǒng),如MySQL效力器。計算機是處置大量數(shù)據(jù)的理想工具,因此,數(shù)據(jù)庫管理系統(tǒng)在計算機運用方面扮演著關鍵的角色,或是作為獨立的適用工具,或是作為其他運用程序的組成部分。MySQL是一種關系數(shù)據(jù)庫管理系統(tǒng)。關系數(shù)據(jù)庫將數(shù)據(jù)保管在不同的表中,而不是將一切數(shù)據(jù)放在一個大的倉庫內(nèi)。這樣就添加了速度并提高了靈敏性。MySQL的SQL指的是“構造化查詢言語。SQL是用于訪問數(shù)據(jù)庫的最常用規(guī)范化言語,它是由ANSI/ISOSQL規(guī)范定義的。
24、SQL規(guī)范自1986年以來不斷演化開展,有數(shù)種版本。1.2.2 MySQL的特點開放源代碼“開放源碼意味著任何人都能運用和改動軟件。任何人都能從Internet上下載MySQL軟件,而無須支付任何費用。假設情愿,可以研討源碼并進展恰當?shù)母?,以滿足本人的需求。MySQL軟件采用了GPLGNU通用公共答應證, HYPERLINK /licenses/ t _top /licenses/,定義了在不同情況下可以用軟件做的事和不可做的事。假設對GPL不稱心,或需求在商業(yè)運用程序中嵌入MySQL代碼,也可從MySQL AB公司購買商業(yè)答應版本。由此可見,與普通的商用數(shù)據(jù)庫相
25、比,MySQL不僅在價錢上遠遠勝于它們,而且由于源代碼的開發(fā),提供了商用數(shù)據(jù)庫沒有的靈敏性。反響速度數(shù)據(jù)庫的反響速度是相當重要的。它直接決議了運用系統(tǒng)的性能。在MySQL網(wǎng)站公布的基準測試結果發(fā)現(xiàn),MySQL對于某些指令的執(zhí)行速度,甚至比SQLServer和Oracle等商用數(shù)據(jù)庫更快。MySQL效力器已能提供豐富和有用的功能。它具有良好的連通性、速度和平安性,這使得MySQL很適宜作為Internet上的數(shù)據(jù)庫。易用性不像Oracle或者DB2等大型數(shù)據(jù)庫系統(tǒng),MySQL的易用性相當好。初學者幾乎只需求幾個小時就能掌握MySQL的根本知識。同時,MySQL有一本詳細的運用手冊、大量的在線指南
26、、一個廣泛的開發(fā)社區(qū)和大量的書籍。因此,學習MySQL不會給用戶帶來任何不便和不快。同時,MySQL提供了良好的GUI工具,使得MySQL的運用和管理更加方便、簡捷。多種任務方式 MySQL數(shù)據(jù)庫軟件是一種客戶端/效力器系統(tǒng),由支持不同后端的一個多線程SQL效力器、數(shù)種不同的客戶端程序和庫、眾多管理工具和廣泛的運用編程接口API組成。MySQL效力器還有嵌入式版本。它可以集成到任何運用程序當中。支持多種數(shù)據(jù)類型MySQL支持帶符號/無符號整數(shù),1、2、3、4、8字節(jié)長,F(xiàn)LOAT、DOUBLE、CHAR、VARCHAR、TEXT、BLOB、DATE、TIME、DATETIME、TIMESTAM
27、P、YEAR、SET、ENUM以及OpenGIS空間類型,定長和可變長度記錄。這些數(shù)據(jù)類型可以滿足幾乎一切運用程序的運用。為了優(yōu)化存儲,在任何情況下均應運用最準確的類型。例如,假設列的值的范圍為199999,假設運用整數(shù),那么MEDIUMINT UNSIGNED是最好的類型。在一切可以表示該列值的類型中,該類型運用的存儲空間最少??缮炜s性和限制MySQL效力器可以處置含5千萬條記錄的數(shù)據(jù)庫,甚至有些用戶將MySQL用于含60000個表和約50億行的數(shù)據(jù)庫。每個表可支持高達64條索引在MySQL4.1.2之前為32條。每條索引可由116個列或列元素組成。最大索引寬度為1000字節(jié)在MySQL 4
28、.1.2之前為500字節(jié)。索引可使器具備CHAR、VARCHAR、BLOB或TEXT列類型的列前綴。在MySQL5.1中所支持的表的大小幾乎可以滿足任何用戶的需求。實踐上,表的大小限制并不取決于MySQL本身,而取決于操作系統(tǒng)所支持的文件系統(tǒng)。InnoDB存儲引擎將InnoDB表保管在一個表空間內(nèi),該表空間可由數(shù)個文件創(chuàng)建。這樣,表的大小就能超越單獨文件的最大容量。表空間可包括原始磁盤分區(qū),從而使得很大的表成為能夠。表空間的最大容量為64TB。在表1-2中,列出了一些關于操作系統(tǒng)文件大小限制的例如。表1-2 操作系統(tǒng)文件大小的限制操 作 系 統(tǒng)文件大小的限制Linux 2.2-Intel 32
29、-bit2GBLFS: 4GBLinux 2.4+using ext3 filesystem4TBSolaris 9/1016TBNetWare w/NSS filesystem8TBwin32 w/ FAT/FAT322GB/4GBwin32 w/ NTFS2TB能夠更大MacOS X w/ HFS+2TB多用戶支持MySQL是一個完全多用戶系統(tǒng),這意味著多個客戶可以同時訪問和運用一個或更多的MySQL數(shù)據(jù)庫。這對于網(wǎng)絡的運用程序要求支持由多個遠程客戶同時建立的銜接是具有特殊意義的。MySQL也包括一個強有力的、靈敏的權限系統(tǒng),它允許管理者運用基于用戶和基于主機的認證方案的組合來限制對敏感數(shù)
30、據(jù)的訪問??梢浦残訫ySQL主要在LinuxSuSE和Red Hat、FreeBSD和Sun Solaris版本8和版本9上開發(fā)。但是可以移植到多種操作系統(tǒng)。要求MySQL效力器支持線程,客戶端那么需求C+編譯器即可。MySQL支持的系統(tǒng)包括Linux、Solaria、FreeBSD、OS/l、MacOS以及Windows 95/98/Me/2000/XP和NT,它可以在一系列體系構造上運轉,包括Intel x86、Alpha、SPARC、PowaPC和IA64,它還支持從低檔的386系列到高檔的Pentinum機器和IBM.zSeries大型機等很多的硬件配置。遵照現(xiàn)有規(guī)范MySQL效力器可
31、以任務在不同的SQL方式下,并能針對不同的客戶端以不同的方式運用這些方式。這樣,運用程序就能對效力器操作進展量身定制以滿足本人的需求。這類方式定義了MySQL應支持的SQL語法,以及應該在數(shù)據(jù)上執(zhí)行何種確認檢查。這樣,就能在眾多不同的環(huán)境下,與其他數(shù)據(jù)庫效力器一同更容易地運用MySQL??梢赃\用-sql-mode=modes選項,經(jīng)過啟動MySQL來設置默許的SQL方式。從MySQL 4.1開場,也能在啟動之后,運用SET SESSION|GLOBAL sql_mode=modes語句,經(jīng)過設置sql_mode變量更改方式。國際化MySQL效力器可運用多種言語向客戶端提供錯誤音訊,極大地優(yōu)化了
32、與用戶的交互 方式。對數(shù)種不同字符集的全面支持,包括gbk、gb2321、latin1cp1252、german、big5、ujis等。從MySQL 4.1開場,提供了對Unicode的支持。 廣泛的運用程序支持MySQL提供面向各種編程言語的API,如C、C+、ODBC、Java、PHP、Perl、Python、Tcl等的API。因此,具有廣泛的順應性。事務支持事務是保證數(shù)據(jù)庫并發(fā)性和數(shù)據(jù)一致性的重要手段之一。它是用戶定義的一組操作序列的集合,是數(shù)據(jù)恢復和并發(fā)控制的根本單位。一個事務中的操作,要么全部被執(zhí)行,要么全部不被執(zhí)行。MySQL提供了事務和非事務支持的存儲引擎。InnoDB存儲引擎提
33、供了全面的ACID兼容性。對于那些非事務支持的存儲引擎,MySQL也提供了保證數(shù)據(jù)一致性的有效方法。【特別提示】所謂ACID,即原子性Atomicity、一致性Consistency、隔離性Isolation和繼續(xù)性Durability,是事務所具備的4個特性。原子性指一個事務是一個不可分割的邏輯任務單位,事務中一切的操作要么全部完成,要么全都不做。一致性指事務的執(zhí)行結果必需使數(shù)據(jù)庫從一個一致性形狀變到另一個一致性形狀。隔離性指一個事務的執(zhí)行不能被其他事務干擾,即事務內(nèi)部的操作及其一切的數(shù)據(jù)對并發(fā)執(zhí)行的其他事務是隔離的,并發(fā)執(zhí)行的各個事務互不干擾。繼續(xù)性指一個事務一旦被提交,它對數(shù)據(jù)庫中數(shù)據(jù)的
34、改動是耐久的,其他操作或缺點不對其產(chǎn)生影響,即當事務被提交后,即使系統(tǒng)解體,但事務對數(shù)據(jù)庫的影響依然存在而且耐久。外鍵支持外鍵是保證參照完好性的重要手段之一。InnoDB存儲引擎支持對外鍵約束的檢查功能,這些約束包括CASCADE、ON DELETE和ONUPDATE。對于InnoDB之外的其他存儲引擎,MySQL效力器可以解析CREATE TABLE語句中的FOREIGN KEY語法,但不能運用或保管它。視圖支持MySQL5.0開場曾經(jīng)支持視圖功能包括可更新視圖。在5.0.1和更高版本中,提供了二進制版的視圖功能。View視圖非常有用,它允許用戶像單個表那樣訪問一組關系表,它提供了對外方式的
35、支持,有利于數(shù)據(jù)庫設計更好地面向終端用戶。視圖也能限制對行的訪問特定表的子集。對于列控制的訪問,可運用MySQL效力器中的高級權限系統(tǒng)。存儲過程和觸發(fā)器MySQL5.1中曾經(jīng)支持存儲過程和根本的觸發(fā)器功能。觸發(fā)器是與表有關的命名數(shù)據(jù)庫對象,當表上出現(xiàn)特定事件時,將激活該對象。采用多處置器和多線程為了利用多處置器體系構造,MySQL采用多線程設計,輪詢在多個處置器之間分派線程,以到達更高的并行度。根據(jù)不同的平臺,MySQL運用各種線程程序包。復制復制是一種數(shù)據(jù)發(fā)布機制,它運轉在遠間隔 的地方放置表和數(shù)據(jù)庫副本,以運用戶可以更加方便地訪問它們。MySQL支持單項、異步的復制。產(chǎn)品數(shù)據(jù)庫就是運用這種
36、復制機制的典型。例如,一個國內(nèi)或全球公司能夠只需一個通用的集中更新產(chǎn)品的數(shù)據(jù)庫,但是每個本地辦公室都能運用它。其方法不是每次需求訪問數(shù)據(jù)庫時都查詢遠程的表,而是為每個人發(fā)布一個副本,這樣的方法會更有效,由于每個辦公室只負擔一次傳輸?shù)拈_銷。復制機制依賴MySQL日志機制來追蹤對數(shù)據(jù)庫的一切改動。主數(shù)據(jù)庫把這個日志傳送給從數(shù)據(jù)庫,然后從數(shù)據(jù)庫在本人的數(shù)據(jù)上運用這個日志。一個從數(shù)據(jù)庫不能阻止用戶在復制環(huán)境以外的情況下更新日志,因此必需確保這種情況不會發(fā)生,以確保數(shù)據(jù)庫同步確實信度。1.2.3 MySQL的運用對于中小型網(wǎng)站的后臺數(shù)據(jù)庫,假設不情愿選擇微軟的產(chǎn)品與MySQL相比它們非常昂貴,現(xiàn)實上,M
37、ySQL正是SQL Server的強勁對手,那么MySQL幾乎成為獨一的選擇??梢哉f,MySQL是中小型數(shù)據(jù)庫的首選和主流產(chǎn)品。然而,MySQL不僅局限于中小型數(shù)據(jù)庫領域,由于它極好的擴展性,作為大型數(shù)據(jù)庫運用,MySQL依然有不俗的表現(xiàn),本節(jié)將簡單引見一下MySQL作為大型數(shù)據(jù)庫運用的案例。1Cox通訊公司用MySQL構建大型數(shù)據(jù)倉庫Cox是全美第四大有線電視提供商,為大約630萬用戶提供效力。作為財富 500 強之一,Cox公司以其高容量、可靠寬帶傳送網(wǎng)絡和優(yōu)秀的客戶效力著稱。為了保證優(yōu)質(zhì)的性能和客戶效力級別,Cox開發(fā)了一個宏大的數(shù)據(jù)倉庫運用。MySQL數(shù)據(jù)庫運用于這個企業(yè)關鍵性系統(tǒng)的中
38、心。Cox運用兩臺IBMx系列效力器做成了雙機MySQL效力器。用于對外提供查詢和實時輪詢polling每天大約10萬次。MySQL數(shù)據(jù)庫管理各種有線modem信息,維護電纜固件,向用戶提供實時支持接口、加速內(nèi)部、用戶趨勢和分析。同時,該數(shù)據(jù)庫集成了公司預定的輪詢和用于數(shù)據(jù)發(fā)掘以建立射頻車間的永久錯誤識別規(guī)范。每天,Cox經(jīng)過MySQL從120多萬有線modem中取出數(shù)據(jù)。整個數(shù)據(jù)庫包含超越3600個表和20億行數(shù)據(jù)。每兩小時MySQL處置大約400萬次插入操作。Cox運用LAMP軟件架構,運用Linux+Apache+MySQL+PHP+Perl輪詢運用Perl言語編寫,同時用Perl搜集輪
39、詢的數(shù)據(jù)并存入主MySQL數(shù)據(jù)庫中。運用基于Web的前端采用 PHP,到達了報告和實時輪詢的特性。2Los Alamos國家實驗室依托MySQL管理超越7TB的數(shù)據(jù)Los Alamos國家實驗室是美國能源部下屬28個實驗室之一,是新墨西哥最大的研討所。該研討實驗室有8個數(shù)據(jù)庫,包含科學文獻以及相關元數(shù)據(jù),如摘要、作者簡歷和參考書目等。每個數(shù)據(jù)庫于不同的提供者,數(shù)據(jù)存成了特殊的格式,研討人員查找起來非常不方便。為處理這個問題,該實驗室開發(fā)了一個擔任的數(shù)據(jù)庫運用SerchPlus,包含5500萬科學期刊文獻,能在任何地方經(jīng)過閱讀器查詢和訪問。作為一個高性能的數(shù)據(jù)庫,MySQL在Los Alamos
40、實驗室強健、平安和可擴展的SerchPlus系統(tǒng)中起到了關鍵作用。MySQL在工程中表達了以下優(yōu)勢。高性能:MySQL存儲了14億行數(shù)據(jù),采用MyISAM存儲引擎使運用呼應時間非常迅速。平安性:采用MySQL提供平安登錄。復制:查詢圖書館將數(shù)據(jù)庫在防火墻外也復制一套,這樣同時能對內(nèi)部人員和外部人員運用。3Evite公司依托MySQL傳送數(shù)以百萬的約請Evite是全球領先的交互多媒體公司InterActive公司的免費在線活動方案效力。Evite網(wǎng)站向600萬用戶提供效力,每個月發(fā)出900萬份約請函。Evite 的勝利使得它的流量每年以80%的速度增長。以前Evite運用Oracle長達4年。但
41、他們覺得Oracle非常昂貴,而且對沒有閱歷的員工來說很難運用。同時,公司需求性能和擴展性好的數(shù)據(jù)庫來滿足日益增長的業(yè)務需求。僅用了一年,MySQL就成為Evite公司IT架構中的關鍵部分。幾乎一切Evite網(wǎng)站都運用MySQL,同時它也用來作為企業(yè)級關鍵性的數(shù)據(jù)倉庫。MySQL在運用中,表達了以下優(yōu)勢。運用簡單:無論是開發(fā)者還是管理人員都很容易上手,無須新增數(shù)據(jù)庫專家??煽啃裕涸谝荒甓嗟臅r間里,MySQL非常穩(wěn)定可靠,跟上了流量增長80%的需求。支持全文本搜索:經(jīng)過全文本搜索,Evite將過濾副本的時間從20小時降到了兩 小時。1.3 MySQL體系構造綜述在MySQL 5.1中,MySQL
42、 AB引入了新的插件式存儲引擎體系構造,允許將存儲引擎加載到正在運轉的MySQL效力器中。1.3.1 插件式存儲引擎體系構造數(shù)據(jù)庫管理人員經(jīng)過選擇相應的存儲引擎,而不是經(jīng)過編碼的方式來實現(xiàn)特定的需求。由于MySQL效力器體系構造在存儲級別上提供了一致和簡單的運用模型和API,運用程序編程人員和DBA可以不再思索一切的底層實施細節(jié)。因此,雖然不同的存儲引擎具有不同的才干,運用程序與存儲引擎之間是相對獨立的。在圖1-3中,以圖形方式引見了MySQL插件式存儲引擎體系構造。圖1-3 MySQL插件式存儲引擎體系構造插件式存儲引擎體系構造提供了規(guī)范的管理和支持效力的集合。存儲引擎本身是數(shù)據(jù)庫效力器的組
43、件,擔任對在物理效力器層上的根本數(shù)據(jù)進展實踐的I/O操作。這是一種高效的模塊化體系構造,它為那些希望專注于特定運用需求的人員提供了宏大的便利,這類特殊運用需求包括數(shù)據(jù)倉庫、事務處置、高可用性等,同時還能利用獨立于任何存儲引擎的一組接口和效力。運用程序編程人員和DBA經(jīng)過位于存儲引擎之上的API和效力層來運用MySQL數(shù)據(jù)庫。由于不是直接操作各種存儲引擎,所以即使由于運用程序需求而改動了底層的存儲引擎,或需求添加一個或多個額外的存儲引擎,并不需求進展大的編碼或者額外的操作。MySQL效力器體系構造提供了一致和易于運用的API,這類API適用于多種存儲引擎,經(jīng)過這種方式,該構造將運用程序與存儲引擎
44、的底層復雜性隔分開來。1.3.2 公共MySQL數(shù)據(jù)庫效力器層MySQL插件式存儲引擎是MySQL數(shù)據(jù)庫效力器中的組件,擔任為數(shù)據(jù)庫執(zhí)行實踐的數(shù)據(jù)I/O操作,并且提供一些特定的運用例如視圖、外鍵、事務支持等。運用特殊存儲引擎的主要優(yōu)點之一在于,為了實現(xiàn)每種特殊的運用僅需提供特殊運用所需的特性,因此,數(shù)據(jù)庫中的系統(tǒng)開銷較小,最終結果具有更有效和更高的數(shù)據(jù)庫性能。這也是MySQL被一直視為具有高性能的緣由之一,在行業(yè)規(guī)范基準方面,它能匹敵或擊敗專有的整體式數(shù)據(jù)庫。從技術角度上看,在不同的存儲引擎中,各種存儲引擎所提供的不同效力主要有以下幾個方面的區(qū)別。并發(fā)性:某些運用程序比其他運用程序具有更多的顆
45、粒級鎖定要求如行級鎖定。選擇正確的鎖定戰(zhàn)略可以減少開銷,并有助于整體性能的提升。它還包括對多種才干的支持,如多版本并發(fā)性控制MVCC或“快照讀取等。事務支持:并非一切的運用程序都需求事務,但對確實需求事務的運用程序來說,可以選擇支持事務的存儲引擎,例如InnoDB引擎。參照完好性:經(jīng)過DDL定義的外鍵,效力器需求強迫堅持關系數(shù)據(jù)庫的援用完 整性。物理存儲:包括各種各樣的物理格式,從表和索引的總的頁大小、存儲數(shù)據(jù)所需的格式到物理磁盤。索引支持:不同的運用程序傾向于采用不同的索引戰(zhàn)略,每種存儲引擎通常有本人的編制索引方法,但某些索引方法如B-tree索引對幾乎一切的存儲引擎來說是一樣的。內(nèi)存高速緩
46、沖:不同的運用程序往往需求不同的緩存區(qū)大小和分配戰(zhàn)略,雖然某些內(nèi)存高速緩沖對一切存儲引擎來說是一樣的如用于用戶銜接的高速緩沖、MySQL的高速查詢高速緩沖等,而各種存儲引擎不同的內(nèi)存高速緩沖管理方式可以根據(jù)運用程序需求進展選擇。性能:包括針對并行操作的多I/O線程、線程并發(fā)性、數(shù)據(jù)庫檢查點、成批插入處置等。每個存儲引擎都是為了實現(xiàn)呼應特定的需求而設計的。因此,在設計數(shù)據(jù)庫時,應該盡量防止運用我們并不需求的特性,選擇適宜的存儲引擎。這樣可以減少效力器額外的負擔,提高效力器的效率。例如,在一個根本不需求事務的系統(tǒng)中,就應該防止選用支持事務的存儲引擎。這也就是MySQL插件式存儲引擎構造比運用專門的
47、存儲引擎構造優(yōu)越的 地方?!咎貏e提示】對于整個效力器或方案,并不一定要運用一樣的存儲引擎,可以為方案中的每個表運用不同的存儲引擎,以滿足該表特定的需求,這點很重要。1.4 MySQL引擎 在默許情況下,MySQL支持3個引擎:ISAM、 MyISAM和HEAP。另外兩種類型,即InnoDB和BerkleyBDB也常運用。用戶能用的數(shù)據(jù)庫引擎取決于MySQL在安裝時是如何被編譯的。要添加一個新的引擎,就必需重新編譯MySQL。1.4.1 選擇存儲引擎MySQL提供的各種存儲引擎在設計時思索了不同的運用情況。為了更有效地運用插件式存儲體系構造,最好了解各種存儲引擎的優(yōu)點和缺陷。在圖1-4的表格中,
48、概要展現(xiàn)了與MySQL提供的存儲引擎。圖1-4 MySQL存儲引擎概要下面簡單引見常用的存儲引擎。MyISAM:默許的MySQL插件式存儲引擎,它是在Web、數(shù)據(jù)倉儲和其他運用環(huán)境下最常運用的存儲引擎之一。經(jīng)過設置STORAGE_ENGINE配置變量,可以更改MySQL效力器的默許存儲引擎。InnoDB:用于事務處置運用程序,具有眾多特性,包括ACID事務支持。BDB:可替代InnoDB的事務引擎,支持COMMIT、ROLLBACK和其他事務特性。Memory:將一切數(shù)據(jù)保管在RAM中,在需求快速查找援用和其他類似數(shù)據(jù)的環(huán)境下,可提供極快的訪問。Merge:允許MySQLDBA或開發(fā)人員將一系
49、列等同的MyISAM表以邏輯方式組合在一同,并作為一個對象援用它們。適宜于諸如數(shù)據(jù)倉儲等VLDB環(huán)境。Archive:為大量很少援用的歷史、歸檔或平安審計信息的存儲和檢索提供了完美的處理方案。Federated:可以將多個分別的MySQL效力器鏈接起來,從多個物理效力器創(chuàng)建一個邏輯數(shù)據(jù)庫。非常適宜于分布式環(huán)境或數(shù)據(jù)集市的運用。Cluster/NDB:MySQL的簇式數(shù)據(jù)庫引擎,尤其適宜于具有高性能查找要求的運用程序,這類查找需求還要求具有最高的正常任務時間和可用性。Other:其他存儲引擎包括CSV援用由逗號隔開的用作數(shù)據(jù)庫表的文件,Blackhole用于暫時制止對數(shù)據(jù)庫的運用程序輸入,以及E
50、xample引擎可為快速創(chuàng)建定制的插件式存儲引擎提供協(xié)助 。特別要留意,以下存儲引擎提供了事務支持。InnoDB:經(jīng)過MVCC支持事務,允許COMMIT、ROLLBACK和保管點。NDB:經(jīng)過MVCC支持事務,允許COMMIT和ROLLBACK。BDB:支持事務,允許COMMIT和ROLLBACK?!咎貏e提示】MVCCMultiversion Concurrency Control是指多版本并發(fā)控制,是一種數(shù)據(jù)庫并發(fā)控制的手段。當檢索數(shù)據(jù)庫時,每個事務都看到一個數(shù)據(jù)的一段時間前的快照一個數(shù)據(jù)庫版本,而不論正在處置的數(shù)據(jù)當前的形狀。這樣,假設對每個數(shù)據(jù)庫會話進展事務隔離,即可防止一個事務看到由于
51、其他并行的事務更新同一行數(shù)據(jù)而導致的不一致的數(shù)據(jù)。運用MVCC多版本并發(fā)控制比鎖模型的主要優(yōu)點是在MVCC中,對檢索讀數(shù)據(jù)的鎖要求與寫數(shù)據(jù)的鎖要求不沖突,所以讀不會阻塞寫,而寫也從不阻塞讀。1.4.2 運用存儲引擎可以在創(chuàng)建新表時指定存儲引擎,或經(jīng)過運用ALTER TABLE語句指定存儲引擎。 要想在創(chuàng)建表時指定存儲引擎,可以運用ENGINE參數(shù):CREATE TABLE engineTest(id INT) ENGINE = MyISAM;要想更改已有表的存儲引擎,可運用ALTER TABLE語句:ALTER TABLE engineTest ENGINE = ARCHIVE;1.4.3 M
52、yISAM存儲引擎1MyISAM的特點MyISAM是默許存儲引擎。它基于更老的ISAM引擎,但提供了許多擴展功能留意MySQL 5.1不支持ISAM。 每個MyISAM在磁盤上存儲成3個文件。每個文件以表名命名,擴展名指明了文件的類型。.frm文件存儲表定義。數(shù)據(jù)文件的擴展名為.MYDMYData。索引文件的擴展名為.MYIMYIndex。 要明確指定運用一個MyISAM表格,可以運用ENGINE表選項:CREATE TABLE t (i INT) ENGINE = MYISAM;老版本的MySQL運用TYPE而不是ENGINE例如,TYPE = MYISAM。MySQL 5.1為向下兼容而支
53、持這個語法,但引薦運用新的關鍵字ENGINE。 除非默許存儲引擎被改動,否那么不需求顯示聲明MyISAM引擎。 MyISAM存儲引擎有以下一些特征:1一切數(shù)據(jù)值先存儲低字節(jié)。這使得數(shù)據(jù)庫和操作系統(tǒng)分別。二進制兼容的獨一要求是機器運用補碼和IEEE浮點格式現(xiàn)代的大部分計算機都支持這兩種格式。2先存儲數(shù)據(jù)低字節(jié)并不會嚴重地影響速度;數(shù)據(jù)行中的字節(jié)普通是沒有對齊的,順序讀取一個沒有對齊的字節(jié)與反向讀取這個字節(jié)所占用幾乎一樣的資源。而為了獲得更好的索引緊縮,一切的鍵值都先存儲高字節(jié)。 3假設文件系統(tǒng)和操作系統(tǒng)支持大文件,那么MyISAM也可以支持這些大文件。4一個MyISAM表最多可以有232行。假設
54、希望MyISAM支持更大的表,可以運用-with-big-tables選項,那么表的大小可達2322行。5每張MyISAM表支持最多64個索引。每個索引最多能有16列。 6最大的鍵長度是1000字節(jié)。假設鍵長度超越250字節(jié),那么會運用1024字節(jié)的存儲塊去存放這個鍵。7可以在BLOB和TEXT列上建立索引。8在索引的列中允許出現(xiàn)NULL值,每個鍵運用01個字節(jié)。 9可以把數(shù)據(jù)文件和索引文件放在不同目錄,運用DATA DIRECTORY和INDEX DIRECTORY選項CREATE TABLE可以獲得更高的速度。10每個字符列可以支持不同的字符集。 11在MyISAM索引文件中有一個標志,它
55、闡明表能否被正確封鎖。假設用-myisam-recover選項啟動MySQLd,MyISAM表在翻開時會自動檢查,假設表沒有恰當?shù)胤怄i,就會修復該表。 12假設運用-update-state選項運轉myisamchk,它標注表為已檢查。myisamchk- fast只檢查那些沒有這個標志的表。 13myisampack可以打包BLOB和VARCHAR列。14含有VARCHAR的表可以有固定或動態(tài)記錄長度。15VARCHAR和CHAR列的總長度可以達64KB。2MyISAM選項配置下面簡單引見幾個對MyISAM表行為有影響的MySQLd選項。1-myisam-recover=mode 設置MyI
56、SAM表解體時的自動恢復方式。表1-3列舉了Mode的取值。表1-3 Mode的取值及含義選 項描 述DEFAULT與沒有運用-myisam-recover選項一樣BACKUP假設在恢復過程中,數(shù)據(jù)文件被更改了,將tbl_name.MYD文件備份為tbl_name-datetime.BAKFORCE即使.MYD文件將喪失多行也進展強迫恢復QUICK假設沒有刪除塊,不要檢查表中的行2-delay-key-write=ALL 不刷新MyISAM表的鍵緩沖區(qū)。假設指定這個選項,那么不應該訪問被另一個程序占用的MyISAM表例如MySQL效力器或myisamchk,這樣做會破壞表的索引。以下系統(tǒng)變量影
57、響MyISAM表的行為:bulk_insert_buffer_size 用在塊插入優(yōu)化中的樹緩沖區(qū)的大小,這是對每個線程的限制。myisam_max_sort_file_size MySQL在重建MyISAM表索引時可以運用的暫時文件的最大長度,以字節(jié)為單位。假設文件大小超越這個值,建立索引的效率就會降低。myisam_sort_buffer_size 設置恢復表時運用的緩沖區(qū)的大小。假設用-myisam-recover自動恢復選項啟動MySQLd,那么當效力器翻開一個MyISAM表時,假設發(fā)現(xiàn)以下恣意一種情況:表能否標注為解體。表的翻開計數(shù)器變量不為0,并且效力器以-skip-externa
58、l-locking方式運轉。將會進展如下操作:檢查表能否有錯。假設效力器發(fā)現(xiàn)一個錯誤,它試著快速表修復排序且不重新創(chuàng)建數(shù)據(jù)文件。 假設修復由于數(shù)據(jù)文件中的一個錯誤而失敗例如,一個主鍵反復錯誤,效力器會再次嘗試修復,并重建數(shù)據(jù)文件。 假設修復依然失敗,效力器用舊修復選項方法再重試一次修復一行接一行地寫,不排序。這個方法應該能修復任何類型的錯誤,并且只需求很少的磁盤空間。 假設恢復不可以從之前完成的語句中恢復一切行,而且沒有為-myisam-recover選項值指定FORCE,自動修復將會終止,并在錯誤日志中寫一條錯誤信息:Error: Couldnt repair table: test.g00
59、pages假設指定FORCE,那么會出現(xiàn)以下信息:Warning: Found 344 of 354 rows when repairing ./test/g00pages假設自動恢復方式運用BACKUP,恢復進程會創(chuàng)建名為tbl_name-datetime.BAK的備份文件。這時可以運用一個腳本,自動把這些文件從數(shù)據(jù)庫目錄移到備份媒質(zhì)上。1.4.4 InnoDB存儲引擎1InnoDB概述InnoDB給MySQL提供了具有提交、回滾和解體恢復才干的事務平安ACID兼容存儲引擎。InnoDB鎖定在行級并且也在SELECT語句提供一個Oracle風格的非鎖定讀。這些特征提高了多用戶并發(fā)的性能。In
60、noDB中行級鎖定適宜非常小的空間,因此沒有在InnoDB中擴展鎖定的需求,InnoDB也支持外鍵約束。在SQL查詢中,可以自在地將InnoDB類型表與其他類型的MySQL表混合運用。InnoDB是為處置大量數(shù)據(jù)而設計的。與其他基于磁盤的關系數(shù)據(jù)庫引擎相比,它具有較高的CPU效率。InnoDB存儲引擎完全與MySQL效力器整合,InnoDB存儲引擎為在內(nèi)存中建立本人的緩沖池來緩存數(shù)據(jù)和索引。InnoDB在一個表空間中存儲表和索引,表空間可以包含數(shù)個文件或原始磁盤分區(qū)。這與MyISAM表不同,在MyISAM表中每個表被存在單獨的文件中,因此即使在文件大小被限制在2GB的文件系統(tǒng)上,InnoDB
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年全球及中國推進器控制系統(tǒng)行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球IO-Link信號燈行業(yè)調(diào)研及趨勢分析報告
- 2025建筑施工勞務勞動合同內(nèi)、外墻保溫
- 臨時急需資金借款合同
- 提高數(shù)據(jù)可視化技能的技能培訓
- 技術服務合同經(jīng)典
- 提高團隊領導力的培訓方法
- 委托國際貿(mào)易傭金合同書
- 零配件采購合同
- 石材大板購銷合同
- (正式版)CB∕T 4552-2024 船舶行業(yè)企業(yè)安全生產(chǎn)文件編制和管理規(guī)定
- 病案管理質(zhì)量控制指標檢查要點
- 2024年西藏中考物理模擬試題及參考答案
- 九型人格與領導力講義
- 藥品經(jīng)營和使用質(zhì)量監(jiān)督管理辦法培訓試題及答案2023年9月27日國家市場監(jiān)督管理總局令第84號公布
- 人教版五年級上冊數(shù)學脫式計算練習200題及答案
- 卵巢黃體囊腫破裂教學查房
- 醫(yī)院定崗定編
- 計算機網(wǎng)絡畢業(yè)論文3000字
- 2023年大學物理化學實驗報告化學電池溫度系數(shù)的測定
- 腦出血的護理課件腦出血護理查房PPT
評論
0/150
提交評論