mysqli,甚至是pdo。mysql好像在5.4以上的版本要廢棄了,況且pdo在防注入漏洞比mysql好。
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名注冊(cè)、網(wǎng)頁(yè)空間、營(yíng)銷軟件、網(wǎng)站建設(shè)、興國(guó)網(wǎng)站維護(hù)、網(wǎng)站推廣。
mariadb與mysql都屬于同一類數(shù)據(jù)庫(kù)管理系統(tǒng)。但是mariadb與mysql在使用范圍和使用目的上都有所不同,兩者的主要功能都是為了通過(guò)開源社區(qū)在維護(hù)中,從而獲得GPL授權(quán)許可。從關(guān)系上來(lái)看,mariadb是屬于數(shù)據(jù)庫(kù)管理系統(tǒng)的開發(fā)和升級(jí)版本,它僅僅代表MySQL的一個(gè)分支。
1. mariadb與mysql的開發(fā)目的不同
mariadb是由MySQL的創(chuàng)始人主導(dǎo)開發(fā),在他家公司MySQL賣給sun之后,又被甲骨文收購(gòu),這也就意味著MySQL的所有權(quán),現(xiàn)在屬于甲骨文網(wǎng)站。因而不得不另行開發(fā)mariadb想要通過(guò)功能完善,從而實(shí)現(xiàn)完全替代MySQL的產(chǎn)品,所以在使用的范圍上兩者是完全兼容的,并且前者的使用范圍更廣,他可以實(shí)行包括API和命令行,最終想要達(dá)到的目的是完全兼容MySQL。蔣丹來(lái)說(shuō),前者只是后者的一個(gè)替代品和升級(jí)產(chǎn)品,在開發(fā)過(guò)程將misqil的弊端進(jìn)行兼容,從而實(shí)現(xiàn)整體SQL的升級(jí)。
2. mariadb與mysql的適用范圍
Mariadb的客戶端包括Dbedit和navi act系列windows,macos等數(shù)據(jù)庫(kù)中的專有應(yīng)用程序,以及在heidisql中,它能夠支持mariadb的所有版本。通俗易懂的來(lái)講,mariadb實(shí)現(xiàn)了對(duì)MySQL的完全兼容之后,還增添了許多新的功能,從而來(lái)讓本地的非阻塞操作得到支持以及推動(dòng)了進(jìn)度報(bào)告。相對(duì)來(lái)說(shuō),mariadb的使用范圍要大于MySQL,但是由于兩者都在不斷更新,最新的MySQL 5.4 innodb的性能也在不斷提升,這也就意味著所有的MySQL的連接器應(yīng)用程序同樣可以在mariadb的操控工作,并且實(shí)現(xiàn)一個(gè)更加封閉的軟件項(xiàng)目。
為給那些只為獲得答案的看眾節(jié)省時(shí)間。提前下個(gè)結(jié)論,
mysql目前暫不具備并行運(yùn)行某一查詢的能力
。相信很多人有一個(gè)誤解,似乎MySQL 5.4對(duì)某一查詢帶來(lái)的性能改進(jìn)是非常巨大的。事實(shí)上,這需要針對(duì)具體應(yīng)用來(lái)講,如果追求某個(gè)具體查詢的響應(yīng)時(shí)間,5.4 將比5.1或之前的版本差。簡(jiǎn)單的來(lái)說(shuō),5.4提高的是并發(fā)量,而不是減少單條語(yǔ)句的執(zhí)行時(shí)間。
初次看到這個(gè)話題的人要注意幾個(gè)概念,并行和多線程不是同一個(gè)概念。“同時(shí)進(jìn)行”的技術(shù)分很多類,有
查詢間的并行,
查詢內(nèi)的并行和操作內(nèi)的并行
。舉個(gè)生活中的例子,
如果你與其他人合租房子的話,早上起來(lái)后,多個(gè)人可以同時(shí)刷牙,洗臉和做飯,大家各忙各的(雖然女房客可能會(huì)給廁所加上mutex而其他人只能在原地spin)。單單這套房子來(lái)說(shuō),它在較短的時(shí)間內(nèi)解決了好幾個(gè)人的早上洗漱問題。這就是查詢間并發(fā)了。
早上諸多行動(dòng)中,以刷牙、做飯、吃飯這三個(gè)動(dòng)作為例,我們通常的做法是把微波爐轉(zhuǎn)上,然后刷牙,刷牙結(jié)束后,早飯也弄好了(至少我是這么做的),這樣我們達(dá)到了查詢內(nèi)的并行。
再細(xì)化下去,現(xiàn)在加一個(gè)動(dòng)作:整理電腦包,按照上一種方式我們可以按這樣的順序做事情:做飯刷牙 02 02 02—》 02 02 02吃飯 02 02 02 02 — -》02 整理電腦包
如果你有兩只手的話,我們可以用一只手刷牙,另外一只手整理電腦包,這樣進(jìn)一步縮短你的運(yùn)行時(shí)間,這樣你就做到了操作內(nèi)的并行。
總結(jié)起來(lái):第一種情況整體吞吐量很大,但個(gè)人的準(zhǔn)備時(shí)間可能更長(zhǎng)了。第二種情況,個(gè)人的處理時(shí)間減少了。 第三種情況,個(gè)人的處理時(shí)間進(jìn)一步減少。
有興趣的人可以在
database system concepts
這本書中了解相關(guān)概念。查詢間的并行對(duì)于數(shù)據(jù)庫(kù)管理軟件來(lái)說(shuō)是再正常不過(guò)的功能,所以下面我們將直接跳過(guò)這類“同時(shí)進(jìn)行”。從理論上講,數(shù)據(jù)庫(kù)的多個(gè)模塊:IO、SQL解析和SQL執(zhí)行等都可以達(dá)到并行執(zhí)行的目的。
通過(guò)將關(guān)系劃分到多個(gè)磁盤來(lái)減少?gòu)拇疟P檢索關(guān)系所需的時(shí)間,從而使得數(shù)據(jù)庫(kù)IO可以并行執(zhí)行。另外在一個(gè)查詢中的多個(gè)聯(lián)接操作和排序操作也可并行發(fā)生。對(duì)等值聯(lián)接和自然聯(lián)接, 可以將兩個(gè)輸入關(guān)系劃分到多個(gè)處理器上, 各處理器在本地計(jì)算聯(lián)接.
當(dāng)然以上討論的一切一切都基于CPU是多核的。
但是目前我個(gè)人不支持mysql并行化,這也符合很大一部分mysql開發(fā)人員的意見。理由:
就mysql目前的應(yīng)用來(lái)看,使用者更在意mysql數(shù)據(jù)庫(kù)的吞吐量,而不是效應(yīng)速度(當(dāng)然了,響應(yīng)速度也是很重要的)。mysql目前的簡(jiǎn)單架構(gòu)replication可大幅提高數(shù)據(jù)庫(kù)端的吞吐量。
目前現(xiàn)存的其他開源技術(shù)亦能滿足并行查詢的需求如hadoop、map reduce。
最后,我們還可以利用mysql proxy來(lái)達(dá)到并行的目的。查詢?cè)趍ysql proxy中被劃分成多個(gè)部分,各個(gè)部分可在不同的mysql服務(wù)器上查詢獲得數(shù)據(jù),再由mysql proxy合并返回給讀者。
1. sudo apt-get install mysql-server
2. apt-get isntall mysql-client
3. sudo apt-get install libmysqlclient-dev
安裝過(guò)程中會(huì)提示設(shè)置密碼什么的,注意設(shè)置了不要忘了,安裝完成之后可以使用如下命令來(lái)檢查是否安裝成功