MySQL數(shù)據(jù)庫(kù)的相關(guān)介紹

2016年11月14日04:53:23 發(fā)表評(píng)論 4,484 ℃

MySQL是一個(gè)關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),由瑞典MySQL AB 公司開(kāi)發(fā),目前屬于 Oracle 旗下產(chǎn)品。MySQL 最流行的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),在 WEB 應(yīng)用方面MySQL是最好的 RDBMS (Relational Database Management System,關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)) 應(yīng)用軟件之一。

MySQL是一種關(guān)聯(lián)數(shù)據(jù)庫(kù)管理系統(tǒng),關(guān)聯(lián)數(shù)據(jù)庫(kù)將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個(gè)大倉(cāng)庫(kù)內(nèi),這樣就增加了速度并提高了靈活性。

MySQL所使用的 SQL 語(yǔ)言是用于訪問(wèn)數(shù)據(jù)庫(kù)的最常用標(biāo)準(zhǔn)化語(yǔ)言。MySQL 軟件采用了雙授權(quán)政策,它分為社區(qū)版和商業(yè)版,由于其體積小、速度快、總體擁有成本低,尤其是開(kāi)放源碼這一特點(diǎn),一般中小型網(wǎng)站的開(kāi)發(fā)都選擇 MySQL 作為網(wǎng)站數(shù)據(jù)庫(kù)。

由于其社區(qū)版的性能卓越,搭配 PHP 和 Apache 可組成良好的開(kāi)發(fā)環(huán)境。

MySQL數(shù)據(jù)庫(kù)應(yīng)用環(huán)境

與其他的大型數(shù)據(jù)庫(kù)例如 Oracle、DB2、SQL Server等相比,MySQL 自有它的不足之處,但是這絲毫也沒(méi)有減少它受歡迎的程度。對(duì)于一般的個(gè)人使用者和中小型企業(yè)來(lái)說(shuō),MySQL提供的功能已經(jīng)綽綽有余,而且由于 MySQ L是開(kāi)放源碼軟件,因此可以大大降低總體擁有成本。

Linux作為操作系統(tǒng),Apache 或Nginx作為 Web 服務(wù)器,MySQL 作為數(shù)據(jù)庫(kù),PHP/Perl/Python作為服務(wù)器端腳本解釋器。由于這四個(gè)軟件都是免費(fèi)或開(kāi)放源碼軟件(FLOSS),因此使用這種方式不用花一分錢(qián)(除開(kāi)人工成本)就可以建立起一個(gè)穩(wěn)定、免費(fèi)的網(wǎng)站系統(tǒng),被業(yè)界稱為“LAMP“或“LNMP”組合。

MySQL數(shù)據(jù)庫(kù)的系統(tǒng)特性

1.使用 C和 C++編寫(xiě),并使用了多種編譯器進(jìn)行測(cè)試,保證了源代碼的可移植性。

2.支持 AIX、FreeBSD、HP-UX、Linux、Mac OS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris、Windows等多種操作系統(tǒng)。

3.為多種編程語(yǔ)言提供了 API。這些編程語(yǔ)言包括 C、C++、Python、Java、Perl、PHP、Eiffel、Ruby,.NET和 Tcl 等。

4.支持多線程,充分利用 CPU 資源。

5.優(yōu)化的 SQL查詢算法,有效地提高查詢速度。

6.既能夠作為一個(gè)單獨(dú)的應(yīng)用程序應(yīng)用在客戶端服務(wù)器網(wǎng)絡(luò)環(huán)境中,也能夠作為一個(gè)庫(kù)而嵌入到其他的軟件中。

7.提供多語(yǔ)言支持,常見(jiàn)的編碼如中文的 GB 2312、BIG5,日文的 Shift_JIS等都可以用作數(shù)據(jù)表名和數(shù)據(jù)列名。

8.提供 TCP/IP、ODBC 和 JDBC等多種數(shù)據(jù)庫(kù)連接途徑。

9.提供用于管理、檢查、優(yōu)化數(shù)據(jù)庫(kù)操作的管理工具。

10.支持大型的數(shù)據(jù)庫(kù)??梢蕴幚?yè)碛猩锨f(wàn)條記錄的大型數(shù)據(jù)庫(kù)。

11.支持多種存儲(chǔ)引擎。

12.MySQL 是開(kāi)源的,所以你不需要支付額外的費(fèi)用。

13.MySQL 使用標(biāo)準(zhǔn)的 SQL數(shù)據(jù)語(yǔ)言形式。

14.MySQL 對(duì) PHP 有很好的支持,PHP是目前最流行的 Web 開(kāi)發(fā)語(yǔ)言。

15.MySQL是可以定制的,采用了 GPL協(xié)議,你可以修改源碼來(lái)開(kāi)發(fā)自己的 MySQL 系統(tǒng)。

16.在線 DDL/更改功能,數(shù)據(jù)架構(gòu)支持動(dòng)態(tài)應(yīng)用程序和開(kāi)發(fā)人員靈活性(5.6新增)

17.復(fù)制全局事務(wù)標(biāo)識(shí),可支持自我修復(fù)式集群(5.6新增)

18.復(fù)制無(wú)崩潰從機(jī),可提高可用性(5.6新增)

19.復(fù)制多線程從機(jī),可提高性能(5.6新增)

20.3倍更快的性能(5.7新增)

21.新的優(yōu)化器(5.7新增)

22.原生JSON支持(5.7新增)

23.多源復(fù)制(5.7新增)

24.GIS的空間擴(kuò)展(5.7新增)

MySQL數(shù)據(jù)庫(kù)的存儲(chǔ)引擎

MyISAMMySQL 5.0 之前的默認(rèn)數(shù)據(jù)庫(kù)引擎,最為常用。擁有較高的插入,查詢速度,但不支持事務(wù)

InnoDB事務(wù)型數(shù)據(jù)庫(kù)的首選引擎,支持ACID事務(wù),支持行級(jí)鎖定, MySQL 5.5 起成為默認(rèn)數(shù)據(jù)庫(kù)引擎

BDB源 自 Berkeley DB,事務(wù)型數(shù)據(jù)庫(kù)的另一種選擇,支持Commit 和Rollback 等其他事務(wù)特性

Memory所有數(shù)據(jù)置于內(nèi)存的存儲(chǔ)引擎,擁有極高的插入,更新和查詢效率。但是會(huì)占用和數(shù)據(jù)量成正比的內(nèi)存空間。并且其內(nèi)容會(huì)在 MySQL 重新啟動(dòng)時(shí)丟失

Merge將一定數(shù)量的 MyISAM 表聯(lián)合而成一個(gè)整體,在超大規(guī)模數(shù)據(jù)存儲(chǔ)時(shí)很有用

Archive非常適合存儲(chǔ)大量的獨(dú)立的,作為歷史記錄的數(shù)據(jù)。因?yàn)樗鼈儾唤?jīng)常被讀取。Archive 擁有高效的插入速度,但其對(duì)查詢的支持相對(duì)較差

Federated將不同的 MySQL 服務(wù)器聯(lián)合起來(lái),邏輯上組成一個(gè)完整的數(shù)據(jù)庫(kù)。非常適合分布式應(yīng)用

Cluster/NDB高冗余的存儲(chǔ)引擎,用多臺(tái)數(shù)據(jù)機(jī)器聯(lián)合提供服務(wù)以提高整體性能和安全性。適合數(shù)據(jù)量大,安全和性能要求高的應(yīng)用

CSV: 邏輯上由逗號(hào)分割數(shù)據(jù)的存儲(chǔ)引擎。它會(huì)在數(shù)據(jù)庫(kù)子目錄里為每個(gè)數(shù)據(jù)表創(chuàng)建一個(gè) .csv 文件。這是一種普通文本文件,每個(gè)數(shù)據(jù)行占用一個(gè)文本行。CSV 存儲(chǔ)引擎不支持索引。

BlackHole:黑洞引擎,寫(xiě)入的任何數(shù)據(jù)都會(huì)消失,一般用于記錄 binlog 做復(fù)制的中繼

EXAMPLE 存儲(chǔ)引擎是一個(gè)不做任何事情的存根引擎。它的目的是作為 MySQL 源代碼中的一個(gè)例子,用來(lái)演示如何開(kāi)始編寫(xiě)一個(gè)新存儲(chǔ)引擎。同樣,它的主要興趣是對(duì)開(kāi)發(fā)者。EXAMPLE 存儲(chǔ)引擎不支持編索引。

另外,MySQL 的存儲(chǔ)引擎接口定義良好。有興趣的開(kāi)發(fā)者可以通過(guò)閱讀文檔編寫(xiě)自己的存儲(chǔ)引擎。

MySQL數(shù)據(jù)庫(kù)的應(yīng)用架構(gòu)

單點(diǎn)(Single),適合小規(guī)模應(yīng)用

復(fù)制(Replication),適合中小規(guī)模應(yīng)用

集群(Cluster),適合大規(guī)模應(yīng)用

MySQL數(shù)據(jù)庫(kù)的索引功能

索引是一種特殊的文件(InnoDB 數(shù)據(jù)表上的索引是表空間的一個(gè)組成部分),它們包含著對(duì)數(shù)據(jù)表里所有記錄的引用指針。索引不是萬(wàn)能的,索引可以加快數(shù)據(jù)檢索操作,但會(huì)使數(shù)據(jù)修改操作變慢。每修改數(shù)據(jù)記錄,索引就必須刷新一次。為了在某種程度上彌補(bǔ)這一缺陷,許多 SQL 命令都有一個(gè) DELAY_KEY_WRITE 項(xiàng)。這個(gè)選項(xiàng)的作用是暫時(shí)制止 MySQL 在該命令每插入一條新記錄和每修改一條現(xiàn)有之后立刻對(duì)索引進(jìn)行刷新,對(duì)索引的刷新將等到全部記錄插入/修改完畢之后再進(jìn)行。在需要把許多新記錄插入某個(gè)數(shù)據(jù)表的場(chǎng)合,DELAY_KEY_WRITE 選項(xiàng)的作用將非常明顯。另外,索引還會(huì)在硬盤(pán)上占用相當(dāng)大的空間。因此應(yīng)該只為最經(jīng)常查詢和最經(jīng)常排序的數(shù)據(jù)列建立索引。注意,如果某個(gè)數(shù)據(jù)列包含許多重復(fù)的內(nèi)容,為它建立索引就沒(méi)有太大的實(shí)際效果。

從理論上講,完全可以為數(shù)據(jù)表里的每個(gè)字段分別建一個(gè)索引,但 MySQL 把同一個(gè)數(shù)據(jù)表里的索引總數(shù)限制為16個(gè)。

1.InnoDB 數(shù)據(jù)表的索引

與 InnoDB數(shù)據(jù)表相比,在 InnoDB 數(shù)據(jù)表上,索引對(duì) InnoDB 數(shù)據(jù)表的重要性要大得多。在 InnoDB 數(shù)據(jù)表上,索引不僅會(huì)在搜索數(shù)據(jù)記錄時(shí)發(fā)揮作用,還是數(shù)據(jù)行級(jí)鎖定機(jī)制的苊、基礎(chǔ)。“數(shù)據(jù)行級(jí)鎖定”的意思是指在事務(wù)操作的執(zhí)行過(guò)程中鎖定正在被處理的個(gè)別記錄,不讓其他用戶進(jìn)行訪問(wèn)。這種鎖定將影響到(但不限于)SELECT、LOCKINSHAREMODE、SELECT、FORUPDATE 命令以及 INSERT、UPDATE 和 DELETE 命令。出于效率方面的考慮,InnoDB 數(shù)據(jù)表的數(shù)據(jù)行級(jí)鎖定實(shí)際發(fā)生在它們的索引上,而不是數(shù)據(jù)表自身上。顯然,數(shù)據(jù)行級(jí)鎖定機(jī)制只有在有關(guān)的數(shù)據(jù)表有一個(gè)合適的索引可供鎖定的時(shí)候才能發(fā)揮效力。

2.限制

如果 WHERE 子句的查詢條件里有不等號(hào)(WHERE coloum !=),MySQL 將無(wú)法使用索引。類(lèi)似地,如果 WHERE 子句的查詢條件里使用了函數(shù)(WHERE DAY(column)=),MySQL 也將無(wú)法使用索引。在 JOIN 操作中(需要從多個(gè)數(shù)據(jù)表提取數(shù)據(jù)時(shí)),MySQL 只有在主鍵和外鍵的數(shù)據(jù)類(lèi)型相同時(shí)才能使用索引。

如果 WHERE 子句的查詢條件里使用比較操作符 LIKE 和 REGEXP,MySQL 只有在搜索模板的第一個(gè)字符不是通配符的情況下才能使用索引。比如說(shuō),如果查詢條件是 LIKE 'abc%‘,MySQL 將使用索引;如果查詢條件是 LIKE '%abc’,MySQL 將不使用索引。

在 ORDER BY 操作中,MySQL 只有在排序條件不是一個(gè)查詢條件表達(dá)式的情況下才使用索引。(雖然如此,在涉及多個(gè)數(shù)據(jù)表查詢里,即使有索引可用,那些索引在加快 ORDER BY 方面也沒(méi)什么作用)。如果某個(gè)數(shù)據(jù)列里包含許多重復(fù)的值,就算為它建立了索引也不會(huì)有很好的效果。比如說(shuō),如果某個(gè)數(shù)據(jù)列里包含的凈是些諸如 “0/1” 或 “Y/N” 等值,就沒(méi)有必要為它創(chuàng)建一個(gè)索引。

MySQL數(shù)據(jù)庫(kù)的索引類(lèi)別

1.普通索引

普通索引(由關(guān)鍵字 KEY 或 INDEX 定義的索引)的唯一任務(wù)是加快對(duì)數(shù)據(jù)的訪問(wèn)速度。因此,應(yīng)該只為那些最經(jīng)常出現(xiàn)在查詢條件(WHERE column =)或排序條件(ORDER BY column)中的數(shù)據(jù)列創(chuàng)建索引。只要有可能,就應(yīng)該選擇一個(gè)數(shù)據(jù)最整齊、最緊湊的數(shù)據(jù)列(如一個(gè)整數(shù)類(lèi)型的數(shù)據(jù)列)來(lái)創(chuàng)建索引。

2.唯一索引

普通索引允許被索引的數(shù)據(jù)列包含重復(fù)的值。比如說(shuō),因?yàn)槿擞锌赡芡?,所以同一個(gè)姓名在同一個(gè)“員工個(gè)人資料”數(shù)據(jù)表里可能出現(xiàn)兩次或更多次。

如果能確定某個(gè)數(shù)據(jù)列將只包含彼此各不相同的值,在為這個(gè)數(shù)據(jù)列創(chuàng)建索引的時(shí)候就應(yīng)該用關(guān)鍵字UNIQUE 把它定義為一個(gè)唯一索引。這么做的好處:一是簡(jiǎn)化了 MySQL 對(duì)這個(gè)索引的管理工作,這個(gè)索引也因此而變得更有效率;二是 MySQL 會(huì)在有新記錄插入數(shù)據(jù)表時(shí),自動(dòng)檢查新記錄的這個(gè)字段的值是否已經(jīng)在某個(gè)記錄的這個(gè)字段里出現(xiàn)過(guò)了;如果是,MySQL 將拒絕插入那條新記錄。也就是說(shuō),唯一索引可以保證數(shù)據(jù)記錄的唯一性。事實(shí)上,在許多場(chǎng)合,人們創(chuàng)建唯一索引的目的往往不是為了提高訪問(wèn)速度,而只是為了避免數(shù)據(jù)出現(xiàn)重復(fù)。

3.主索引

在前面已經(jīng)反復(fù)多次強(qiáng)調(diào)過(guò):必須為主鍵字段創(chuàng)建一個(gè)索引,這個(gè)索引就是所謂的“主索引”。主索引與唯一索引的唯一區(qū)別是:前者在定義時(shí)使用的關(guān)鍵字是 PRIMARY 而不是 UNIQUE。

4.外鍵索引

如果為某個(gè)外鍵字段定義了一個(gè)外鍵約束條件,MySQL 就會(huì)定義一個(gè)內(nèi)部索引來(lái)幫助自己以最有效率的方式去管理和使用外鍵約束條件。

5.復(fù)合索引

索引可以覆蓋多個(gè)數(shù)據(jù)列,如像 INDEX (columnA, columnB) 索引。這種索引的特點(diǎn)是 MySQL 可以有選擇地使用一個(gè)這樣的索引。如果查詢操作只需要用到 columnA 數(shù)據(jù)列上的一個(gè)索引,就可以使用復(fù)合索引 INDEX(columnA, columnB)。不過(guò),這種用法僅適用于在復(fù)合索引中排列在前的數(shù)據(jù)列組合。比如說(shuō),INDEX (A,B,C) 可以當(dāng)做 A 或 (A,B) 的索引來(lái)使用,但不能當(dāng)做 B、C 或 (B,C) 的索引來(lái)使用。

MySQL數(shù)據(jù)庫(kù)的索引長(zhǎng)度

在為 CHAR 和 VARCHAR 類(lèi)型的數(shù)據(jù)列定義索引時(shí),可以把索引的長(zhǎng)度限制為一個(gè)給定的字符個(gè)數(shù)(這個(gè)數(shù)字必須小于這個(gè)字段所允許的最大字符個(gè)數(shù))。這么做的好處是可以生成一個(gè)尺寸比較小、檢索速度卻比較快的索引文件。在絕大多數(shù)應(yīng)用里,數(shù)據(jù)庫(kù)中的字符串?dāng)?shù)據(jù)大都以各種各樣的名字為主,把索引的長(zhǎng)度設(shè)置為10~15 個(gè)字符已經(jīng)足以把搜索范圍縮小到很少的幾條數(shù)據(jù)記錄了。在為 BLOB 和 TEXT 類(lèi)型的數(shù)據(jù)列創(chuàng)建索引時(shí),必須對(duì)索引的長(zhǎng)度做出限制;MySQL 所允許的最大索引全文索引文本字段上的普通索引只能加快對(duì)出現(xiàn)在字段內(nèi)容最前面的字符串(也就是字段內(nèi)容開(kāi)頭的字符)進(jìn)行檢索操作。如果字段里存放的是由幾個(gè)、甚至是多個(gè)單詞構(gòu)成的較大段文字,普通索引就沒(méi)什么作用了。這種檢索往往以的形式出現(xiàn),這對(duì) MySQL 來(lái)說(shuō)很復(fù)雜,如果需要處理的數(shù)據(jù)量很大,響應(yīng)時(shí)間就會(huì)很長(zhǎng)。

這類(lèi)場(chǎng)合正是全文索引(full-textindex)可以大顯身手的地方。在生成這種類(lèi)型的索引時(shí),MySQL 將把在文本中出現(xiàn)的所有單詞創(chuàng)建為一份清單,查詢操作將根據(jù)這份清單去檢索有關(guān)的數(shù)據(jù)記錄。全文索引即可以隨數(shù)據(jù)表一同創(chuàng)建,也可以等日后有必要時(shí)再使用下面這條命令添加:

ALTER TABLE tablename ADD FULLTEXT(column1,column2)有了全文索引,就可以用 SELECT 查詢命令去檢索那些包含著一個(gè)或多個(gè)給定單詞的數(shù)據(jù)記錄了。下面是這類(lèi)查詢命令的基本語(yǔ)法:

SELECT * FROM tablename

WHERE MATCH (column1,column2) AGAINST('word1','word2','word3')

上面這條命令將把 column1 和 column2 字段里有 word1、word2 和 word3 的數(shù)據(jù)記錄全部查詢出來(lái)。

注解:InnoDB 數(shù)據(jù)表不支持全文索引。

mySQL查詢和索引

只有當(dāng)數(shù)據(jù)庫(kù)里已經(jīng)有了足夠多的測(cè)試數(shù)據(jù)時(shí),它的性能測(cè)試結(jié)果才有實(shí)際參考價(jià)值。如果在測(cè)試數(shù)據(jù)庫(kù)里只有幾百條數(shù)據(jù)記錄,它們往往在執(zhí)行完第一條查詢命令之后就被全部加載到內(nèi)存里,這將使后續(xù)的查詢命令都執(zhí)行得非???-不管有沒(méi)有使用索引。只有當(dāng)數(shù)據(jù)庫(kù)里的記錄超過(guò)了 1000 條、數(shù)據(jù)總量也超過(guò)了 MySQL 服務(wù)器上的內(nèi)存總量時(shí),數(shù)據(jù)庫(kù)的性能測(cè)試結(jié)果才有意義。

在不確定應(yīng)該在哪些數(shù)據(jù)列上創(chuàng)建索引的時(shí)候,人們從 EXPLAIN SELECT 命令那里往往可以獲得一些幫助。這其實(shí)只是簡(jiǎn)單地給一條普通的 SELECT 命令加一個(gè) EXPLAIN 關(guān)鍵字作為前綴而已。有了這個(gè)關(guān)鍵字,MySQL 將不是去執(zhí)行那條 SELECT 命令,而是去對(duì)它進(jìn)行分析。MySQL 將以表格的形式把查詢的執(zhí)行過(guò)程和用到的索引等信息列出來(lái)。

在 EXPLAIN 命令的輸出結(jié)果里,第1列是從數(shù)據(jù)庫(kù)讀取的數(shù)據(jù)表的名字,它們按被讀取的先后順序排列。type列指定了本數(shù)據(jù)表與其它數(shù)據(jù)表之間的關(guān)聯(lián)關(guān)系(JOIN)。在各種類(lèi)型的關(guān)聯(lián)關(guān)系當(dāng)中,效率最高的是 system,然后依次是 const、eq_ref、ref、range、index 和 All(All 的意思是:對(duì)應(yīng)于上一級(jí)數(shù)據(jù)表里的每一條記錄,這個(gè)數(shù)據(jù)表里的所有記錄都必須被讀取一遍——這種情況往往可以用一索引來(lái)避免)。

possible_keys 數(shù)據(jù)列給出了 MySQL 在搜索數(shù)據(jù)記錄時(shí)可選用的各個(gè)索引。key 數(shù)據(jù)列是 MySQL 實(shí)際選用的索引,這個(gè)索引按字節(jié)計(jì)算的長(zhǎng)度在 key_len 數(shù)據(jù)列里給出。比如說(shuō),對(duì)于一個(gè) INTEGER 數(shù)據(jù)列的索引,這個(gè)字節(jié)長(zhǎng)度將是4。如果用到了復(fù)合索引,在 key_len 數(shù)據(jù)列里還可以看到 MySQL 具體使用了它的哪些部分。作為一般規(guī)律,key_len 數(shù)據(jù)列里的值越小越好。

ref 數(shù)據(jù)列給出了關(guān)聯(lián)關(guān)系中另一個(gè)數(shù)據(jù)表里的數(shù)據(jù)列的名字。row 數(shù)據(jù)列是 MySQL 在執(zhí)行這個(gè)查詢時(shí)預(yù)計(jì)會(huì)從這個(gè)數(shù)據(jù)表里讀出的數(shù)據(jù)行的個(gè)數(shù)。row 數(shù)據(jù)列里的所有數(shù)字的乘積可以大致了解這個(gè)查詢需要處理多少組合。

最后,extra 數(shù)據(jù)列提供了與 JOIN 操作有關(guān)的更多信息,比如說(shuō),如果 MySQL 在執(zhí)行這個(gè)查詢時(shí)必須創(chuàng)建一個(gè)臨時(shí)數(shù)據(jù)表,就會(huì)在 extra 列看到 usingtemporary 字樣。

MySQL數(shù)據(jù)庫(kù)的安全設(shè)置

一、內(nèi)部安全性-保證數(shù)據(jù)目錄訪問(wèn)的安全

1.1數(shù)據(jù)庫(kù)文件。

1.2日志文件。

二、外部安全性-保證網(wǎng)絡(luò)訪問(wèn)的安全

2.1 MySQL 授權(quán)表的結(jié)構(gòu)和內(nèi)容

2.2 服務(wù)器控制客戶訪問(wèn)

2.3 避免授權(quán)表風(fēng)險(xiǎn)

2.4 不用 GRANT設(shè)置用戶

MySQL數(shù)據(jù)庫(kù)的管理工具

可以使用命令行工具管理 MySQL 數(shù)據(jù)庫(kù)(命令 mysql 和 mysqladmin),也可以從 MySQL 的網(wǎng)站下載圖形管理工具 MySQL Administrator, MySQL Query Browser 和 MySQL Workbench。

phpMyAdmin是由 php 寫(xiě)成的 MySQ L資料庫(kù)系統(tǒng)管理程程序,讓管理者可用 Web 界面管理 MySQL 資料庫(kù)。

phpMyBackupPro也是由 PHP 寫(xiě)成的,可以透過(guò) Web 界面創(chuàng)建和管理數(shù)據(jù)庫(kù)。它可以創(chuàng)建偽 cronjobs,可以用來(lái)自動(dòng)在某個(gè)時(shí)間或周期備份 MySQL 數(shù)據(jù)庫(kù)。

另外,還有其他的 GUI 管理工具,例如 mysql-front 以及 ems mysql manager, navicat等等。

MySQL數(shù)據(jù)庫(kù)的解決方法

MySQL 中文排序錯(cuò)誤的解決方法

mySQL方法1

在 MySQL 數(shù)據(jù)庫(kù)中,進(jìn)行中文排序和查找的時(shí)候,對(duì)漢字的排序和查找結(jié)果是錯(cuò)誤的。這種情況在 MySQL 的很多版本中都存在。如果這個(gè)問(wèn)題不解決,那么 MySQL 將無(wú)法實(shí)際處理中文。

出現(xiàn)這個(gè)問(wèn)題的原因是:MySQL 在查詢字符串時(shí)是大小寫(xiě)不敏感的,在編繹 MySQL 時(shí)一般以 ISO-8859 字符集作為默認(rèn)的字符集,因此在比較過(guò)程中中文編碼字符大小寫(xiě)轉(zhuǎn)換造成了這種現(xiàn)象,一種解決方法是對(duì)于包含中文的字段加上 "binary" 屬性,使之作為二進(jìn)制比較,例如將 "name char(10)" 改成 "name char(10)binary"。

mySQL方法2

如果你使用源碼編譯 MySQL,可以編譯 MySQL 時(shí)使用 --with--charset=gbk 參數(shù),這樣 MySQL 就會(huì)直接支持中文查找和排序了。

MySQL數(shù)據(jù)庫(kù)的授權(quán)問(wèn)題

授權(quán)協(xié)議

MySQL 遵守的不只是 GPL 協(xié)議,而是雙授權(quán)模式(dual license)即你在遵守 GPL 協(xié)議的開(kāi)源項(xiàng)目使用 MySQL,需要遵守 GPL 協(xié)議方能使用。如果你在非開(kāi)源項(xiàng)目使用(即軟件不打算開(kāi)放源代碼),且該軟件用來(lái)銷(xiāo)售,則需要向 MySQL 支付相應(yīng) license 費(fèi)用。

mySQL文件手冊(cè)bug

在 5.5.31 版本時(shí)人們發(fā)現(xiàn) Oracle 取消了其中的 GPL 協(xié)議,造成了一定的不安。有開(kāi)發(fā)者在 MySQL 程序臭蟲(chóng)網(wǎng)站上舉報(bào)這項(xiàng)授權(quán)錯(cuò)誤問(wèn)題,隨即 MySQL 工程服務(wù)總監(jiān) Yngve Svendsen 在網(wǎng)站上坦言,這的確是一個(gè)文件臭蟲(chóng),因?yàn)?man 手冊(cè)程序重新編譯時(shí)套用了錯(cuò)誤的授權(quán)內(nèi)容。不過(guò)仍然有人認(rèn)為,Oracle 取消開(kāi)源授權(quán)改采商業(yè)授權(quán)的“這一天遲早是要到來(lái)的”,并尋求其他代替方案。

MySQL數(shù)據(jù)庫(kù)的替代方案

隨著 MySQL 被 Oracle 收購(gòu),MySQL 的用戶和開(kāi)發(fā)者開(kāi)始質(zhì)疑開(kāi)源數(shù)據(jù)庫(kù)的命運(yùn),與此同時(shí)他們開(kāi)始尋找替代品。

有文章寫(xiě)到了放棄 MySQL 的五大理由:  

1. MySQL 不如其它關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)那樣成熟;

2. MySQL 是開(kāi)源的...但只有近似而已;

3. MySQL 的性能無(wú)法與競(jìng)爭(zhēng)對(duì)手相提并論;

4. MySQL 是 Oracle 所有的,而不是社區(qū)驅(qū)動(dòng)的;

5. 越來(lái)越多的強(qiáng)勁對(duì)手。

MariaDB

從 MySQL 轉(zhuǎn)向 MariaDB的代表廠家:谷歌(2013年9月)、RedHat(2013年6月)、維基百科(2013年4月)

MySQL 在 2008 年被Sun以10億美金所收購(gòu),MySQL 創(chuàng)始人 Michael Widenius 則不滿 Sun 開(kāi)發(fā)團(tuán)隊(duì)腳步過(guò)慢,憤而離職成立開(kāi)源數(shù)據(jù)庫(kù)聯(lián)盟,另外從現(xiàn)有 MySQL 程序代碼中,開(kāi)發(fā)出另一個(gè)延伸分支版本,也就是名為瑪莉亞數(shù)據(jù)庫(kù)的企業(yè)級(jí)開(kāi)源數(shù)據(jù)庫(kù)[14]  。

瑪莉亞數(shù)據(jù)庫(kù)如同 MySQL 的影子版本,瑪莉亞數(shù)據(jù)庫(kù)是 MySQL 的一個(gè)分支版本(branch),而不是衍生版本(folk),提供的功能可和 MySQL 完全兼容。

mySQLPostgreSQL

從 MySQL 轉(zhuǎn)向 PostgreSQL的代表廠家:蘋(píng)果(2011年)

PostgreSQL是一個(gè)自由的對(duì)象-關(guān)系數(shù)據(jù)庫(kù)服務(wù)器(數(shù)據(jù)庫(kù)管理系統(tǒng))。PostgreSQL支持大部分 SQL標(biāo)準(zhǔn)并且提供了許多其他現(xiàn)代特性:復(fù)雜查詢、外鍵、觸發(fā)器、視圖、事務(wù)完整性、MVCC。同樣,PostgreSQL 可以用許多方法擴(kuò)展,比如, 通過(guò)增加新的數(shù)據(jù)類(lèi)型、函數(shù)、操作符、聚集函數(shù)、索引方法、過(guò)程語(yǔ)言。并且,因?yàn)樵S可證的靈活,任何人都可以以任何目的免費(fèi)使用、修改、和分發(fā) PostgreSQL,不管是私用、商用、還是學(xué)術(shù)研究使用。

PostgreSQL 也受 NoSQL 思想的啟發(fā),希望能夠在今后可以給使用者更多可定制可調(diào)節(jié)的功能(不是說(shuō)這個(gè)成熟的關(guān)系性數(shù)據(jù)庫(kù)系統(tǒng)要向 NoSQL 轉(zhuǎn)變)。

mySQLNoSQL

NoSQL(NoSQL = Not Only SQL),意即“不僅僅是 SQL”,是一項(xiàng)全新的數(shù)據(jù)庫(kù)革命性運(yùn)動(dòng)。NoSQL指的是非關(guān)系型的數(shù)據(jù)庫(kù)。隨著互聯(lián)網(wǎng) web2.0網(wǎng)站的興起,傳統(tǒng)的關(guān)系數(shù)據(jù)庫(kù)在應(yīng)付 web2.0 網(wǎng)站,特別是超大規(guī)模和高并發(fā)的 SNS 類(lèi)型的 web2.0 純動(dòng)態(tài)網(wǎng)站已經(jīng)顯得力不從心,暴露了很多難以克服的問(wèn)題,而非關(guān)系型的數(shù)據(jù)庫(kù)則由于其本身的特點(diǎn)得到了非常迅速的發(fā)展。

其代表的開(kāi)源軟件如:Membase、MongoDB、Hypertable、Apache Cassandra、CouchDB等。

MySQL Server 新特性

一、表和索引的分區(qū)

二、行級(jí)復(fù)制

三、MySQL 基群基于磁盤(pán)的數(shù)據(jù)支持

四、MySQL 集群復(fù)制

五、增強(qiáng)的全文本搜索函數(shù)

六、增強(qiáng)的信息模式(數(shù)據(jù)字典)

七、可插入的 API

八、服務(wù)器日志表

九、XML(標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言的子集)/ XPath支持

十、實(shí)例管理器

十一、表空間備份

十二、mysql_upgrade 升級(jí)程序

十三、內(nèi)部任務(wù)/事件調(diào)度器

十四、新的性能工具和選項(xiàng)如 mysqlslap 

【騰訊云】云服務(wù)器、云數(shù)據(jù)庫(kù)、COS、CDN、短信等云產(chǎn)品特惠熱賣(mài)中

發(fā)表評(píng)論

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: