真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

關(guān)于myisamnosql的信息

為什么選擇PostgreSQL而不是MySQL

David

創(chuàng)新互聯(lián)專注于企業(yè)成都營(yíng)銷網(wǎng)站建設(shè)、網(wǎng)站重做改版、零陵網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5高端網(wǎng)站建設(shè)、商城建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)公司、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為零陵等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

Bolton是一名獨(dú)立開發(fā)者,他使用PostgreSQL和MySQL都已有超過十年的時(shí)間。近日,他撰文闡述了選擇PostgreSQL而不是MySQL的理由。他認(rèn)為,MySQL之所以仍然如此流行是因?yàn)槊總€(gè)Linux

Web托管軟件包中都包含它。但隨著Oracle將其收購(gòu),MySQL的開源程度大不如前。而PostgreSQL不僅發(fā)展更快,還加入了JSON支持,成為少數(shù)幾個(gè)支持NoSQL的關(guān)系型數(shù)據(jù)庫(kù)之一。

MySQL/MariaDB的當(dāng)前版本是5.7.6(MariaDB為MySQL創(chuàng)建者M(jìn)onty

Widenius創(chuàng)建的一個(gè)MySQL分支),PostgreSQL的版本是9.4.1。Bolton從以下幾個(gè)方面對(duì)比了兩者的最新版本:

ANSI標(biāo)準(zhǔn)兼容性:與先前的版本相比,MySQL已經(jīng)有了長(zhǎng)足的進(jìn)步,但MySQL背后的哲學(xué)是,如果客戶喜歡,他們就會(huì)支持非標(biāo)準(zhǔn)擴(kuò)展,而PostgreSQL從開始就將標(biāo)準(zhǔn)構(gòu)建到平臺(tái)里。不過,二者殊途同歸,差別不大;

ACID遵從性:PostgreSQL有一個(gè)存儲(chǔ)引擎,而MySQL有9個(gè),但只有MyIsam和InnoDB與大部分用戶有關(guān),其中,后者為默認(rèn)存儲(chǔ)引擎。InnoDB和PostgreSQL都完全遵循ACID,差別不大;

無鎖表修改:MyIsam使用表級(jí)鎖來提升速度,這會(huì)導(dǎo)致寫互斥。但PostgreSQL和InnoDB均使用行級(jí)鎖,差別不大;

子查詢:長(zhǎng)期以來,這一直是MySQL的一個(gè)弱點(diǎn),雖然5.6.5作了重大改進(jìn),但PostgreSQL對(duì)表連接支持得更好,尤其是MySQL不支持全外連接,因此,這方面PostgreSQL勝過MySQL;

JSON支持和NoSQL:PostgreSQL最近增加了JSON支持,與傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)相比,它提供了更大的數(shù)據(jù)存儲(chǔ)靈活性,因此,這方面PostgreSQL勝過MySQL。

此外,Bolton指出,選擇PostgreSQL還有如下理由:

更好的許可:PostgreSQL采用類似MIT的許可協(xié)議,允許開發(fā)人員做任何事情,包括在開源或閉源產(chǎn)品中商用,而MySQL的客戶端遵循GPL許可協(xié)議,所以開發(fā)人員必須向Oracle付費(fèi)或者將自己的應(yīng)用程序開源;

更好的數(shù)據(jù)一致性:

PostgreSQL會(huì)在數(shù)據(jù)插入和更新之前進(jìn)行嚴(yán)格的驗(yàn)證,確保數(shù)據(jù)合法才會(huì)進(jìn)行相應(yīng)的操作,但在MySQL中,開發(fā)人員需要將服務(wù)器設(shè)定為嚴(yán)格SQL模式才能達(dá)到同樣的目的,否則可能會(huì)產(chǎn)生不規(guī)范數(shù)據(jù);

服務(wù)器擴(kuò)展:MySQL提供了插件程序API,支持C/C++或任何兼容C的語(yǔ)言,而且從5.7.3版本開始支持全文搜索,PostgreSQL有一個(gè)類似的系統(tǒng)但支持的語(yǔ)言更多,包括C/C++、Java、.Net、Perl、

Python、Ruby、Tcl、ODBC等,它甚至可以在單獨(dú)的進(jìn)程中運(yùn)行用戶提供的代碼;除了所有關(guān)系型數(shù)據(jù)庫(kù)都包含的有關(guān)數(shù)據(jù)庫(kù)、表和列的一般信息外,PostgreSQL系統(tǒng)目錄中還可以包含關(guān)于數(shù)據(jù)類型、函數(shù)和存取方法的信息,開發(fā)人員可以通過修改這些信息實(shí)現(xiàn)擴(kuò)展。

為什么不把MySQL放進(jìn)內(nèi)存來代替NOSQL

有兩種方法,一種方法使用mysql的check table和repair table 的sql語(yǔ)句,另一種方法是使用MySQL提供的多個(gè)myisamchk, isamchk數(shù)據(jù)檢測(cè)恢復(fù)工具。前者使用起來比較簡(jiǎn)便。推薦使用。

1. check table 和 repair table

登陸mysql 終端:

mysql -uxxxxx -p dbname

check table tabTest;

如果出現(xiàn)的結(jié)果說Status是OK,則不用修復(fù),如果有Error,可以用:

repair table tabTest;

進(jìn)行修復(fù),修復(fù)之后可以在用check table命令來進(jìn)行檢查。在新版本的phpMyAdmin里面也可以使用check/repair的功能。

2. myisamchk, isamchk

其中myisamchk適用于MYISAM類型的數(shù)據(jù)表,而isamchk適用于ISAM類型的數(shù)據(jù)表。這兩條命令的主要參數(shù)相同,一般新的系統(tǒng)都使用MYISAM作為缺省的數(shù)據(jù)表類型,這里以myisamchk為例子進(jìn)行說明。當(dāng)發(fā)現(xiàn)某個(gè)數(shù)據(jù)表出現(xiàn)問題時(shí)可以使用:

myisamchk tablename.MYI

進(jìn)行檢測(cè),如果需要修復(fù)的話,可以使用:

myisamchk -of tablename.MYI

關(guān)于myisamchk的詳細(xì)參數(shù)說明,可以參見它的使用幫助。需要注意的時(shí)在進(jìn)行修改時(shí)必須確保MySQL服務(wù)器沒有訪問這個(gè)數(shù)據(jù)表,保險(xiǎn)的情況下是最好在進(jìn)行檢測(cè)時(shí)把MySQL服務(wù)器Shutdown掉。

-----------------------------

另外可以把下面的命令放在你的rc.local里面啟動(dòng)MySQL服務(wù)器前:

[ -x /tmp/mysql.sock ] /pathtochk/myisamchk -of /DATA_DIR/*/*.MYI

其中的/tmp/mysql.sock是MySQL監(jiān)聽的Sock文件位置,對(duì)于使用RPM安裝的用戶應(yīng)該是/var/lib/mysql/mysql.sock,對(duì)于使用源碼安裝則是/tmp/mysql.sock可以根據(jù)自己的實(shí)際情況進(jìn)行變更,而pathtochk則是myisamchk所在的位置,DATA_DIR是你的MySQL數(shù)據(jù)庫(kù)存放的位置。

需要注意的時(shí),如果你打算把這條命令放在你的rc.local里面,必須確認(rèn)在執(zhí)行這條指令時(shí)MySQL服務(wù)器必須沒有啟動(dòng)!檢測(cè)修復(fù)所有數(shù)據(jù)庫(kù)(表)

互聯(lián)網(wǎng)背景下,為什么用NoSql

本文將從單機(jī)MySQL的場(chǎng)景出發(fā),簡(jiǎn)述一下隨著網(wǎng)站的訪問量越來越大,數(shù)據(jù)庫(kù)部署的演進(jìn)過程,到為什么要用MySQL的必要性。

大數(shù)據(jù)時(shí)代的數(shù)據(jù)有3V的特點(diǎn):海量Volume、多樣Variety、實(shí)時(shí)Velocity。

互聯(lián)網(wǎng)網(wǎng)站需求的3高的特點(diǎn):高并發(fā)、高可擴(kuò)、高性能。

一、單機(jī)MySql

當(dāng)一個(gè)網(wǎng)站的訪問量不大時(shí),用單個(gè)數(shù)據(jù)庫(kù)完全可以輕松應(yīng)付。

在那個(gè)時(shí)候,更多的都是靜態(tài)網(wǎng)頁(yè),動(dòng)態(tài)交互類型的網(wǎng)站不多。

上述架構(gòu)下,我們來看看數(shù)據(jù)存儲(chǔ)的瓶頸是什么?

1.數(shù)據(jù)量的總大小 一個(gè)機(jī)器放不下時(shí)

2.數(shù)據(jù)的索引(B+ Tree)一個(gè)機(jī)器的內(nèi)存放不下時(shí)

3.訪問量(讀寫混合)一個(gè)實(shí)例不能承受

如果滿足了上述1 or 3個(gè),進(jìn)化......

二、Memcached(緩存)+Mysql+垂直拆分

后來,隨著訪問量的上升,幾乎大部分使用MySQL架構(gòu)的網(wǎng)站在數(shù)據(jù)庫(kù)上都開始出現(xiàn)了性能問題,web程序不再僅僅專注在功能上,同時(shí)也在追求性能。程序員們開始大量的使用緩存技術(shù)來緩解數(shù)據(jù)庫(kù)的壓力,優(yōu)化數(shù)據(jù)庫(kù)的結(jié)構(gòu)和索引。開始比較流行的是通過文件緩存來緩解數(shù)據(jù)庫(kù)壓力,但是當(dāng)訪問量繼續(xù)增大的時(shí)候,多臺(tái)web機(jī)器通過文件緩存不能共享,大量的小文件緩存也帶了了比較高的IO壓力。在這個(gè)時(shí)候,Memcached就自然的成為一個(gè)非常時(shí)尚的技術(shù)產(chǎn)品。

Memcached作為一個(gè)獨(dú)立的分布式的緩存服務(wù)器,為多個(gè)web服務(wù)器提供了一個(gè)共享的高性能緩存服務(wù),在Memcached服務(wù)器上,又發(fā)展了根據(jù)hash算法來進(jìn)行多臺(tái)Memcached緩存服務(wù)的擴(kuò)展,然后又出現(xiàn)了一致性hash來解決增加或減少緩存服務(wù)器導(dǎo)致重新hash帶來的大量緩存失效的弊端

三、MySql主從復(fù)制讀寫分離

由于數(shù)據(jù)庫(kù)的寫入壓力增加,Memcached只能緩解數(shù)據(jù)庫(kù)的讀取壓力。讀寫集中在一個(gè)數(shù)據(jù)庫(kù)上讓數(shù)據(jù)庫(kù)不堪重負(fù),大部分網(wǎng)站開始使用主從復(fù)制技術(shù)來達(dá)到讀寫分離,以提高讀寫性能和讀庫(kù)的可擴(kuò)展性。Mysql的master-slave模式成為這個(gè)時(shí)候的網(wǎng)站標(biāo)配了。

四、分庫(kù)分表+水平拆分+Mysql集群

在Memcached的高速緩存,MySQL的主從復(fù)制,讀寫分離的基礎(chǔ)之上,這時(shí)MySQL主庫(kù)的寫壓力開始出現(xiàn)瓶頸,而數(shù)據(jù)量的持續(xù)猛增,由于MyISAM使用表鎖,在高并發(fā)下會(huì)出現(xiàn)嚴(yán)重的鎖問題,大量的高并發(fā)MySQL應(yīng)用開始使用InnoDB引擎代替MyISAM。

同時(shí),開始流行使用分表分庫(kù)來緩解寫壓力和數(shù)據(jù)增長(zhǎng)的擴(kuò)展問題。這個(gè)時(shí)候,分表分庫(kù)成了一個(gè)熱門技術(shù),是面試的熱門問題也是業(yè)界討論的熱門技術(shù)問題。也就在這個(gè)時(shí)候,MySQL推出了還不太穩(wěn)定的表分區(qū),這也給技術(shù)實(shí)力一般的公司帶來了希望。雖然MySQL推出了MySQL Cluster集群,但性能也不能很好滿足互聯(lián)網(wǎng)的要求,只是在高可靠性上提供了非常大的保證。

五、Mysql的擴(kuò)展性瓶頸

MySQL數(shù)據(jù)庫(kù)也經(jīng)常存儲(chǔ)一些大文本字段,導(dǎo)致數(shù)據(jù)庫(kù)表非常的大,在做數(shù)據(jù)庫(kù)恢復(fù)的時(shí)候就導(dǎo)致非常的慢,不容易快速恢復(fù)數(shù)據(jù)庫(kù)。比如1000萬(wàn)4KB大小的文本就接近40GB的大小,如果能把這些數(shù)據(jù)從MySQL省去,MySQL將變得非常的小。關(guān)系數(shù)據(jù)庫(kù)很強(qiáng)大,但是它并不能很好的應(yīng)付所有的應(yīng)用場(chǎng)景。MySQL的擴(kuò)展性差(需要復(fù)雜的技術(shù)來實(shí)現(xiàn)),大數(shù)據(jù)下IO壓力大,表結(jié)構(gòu)更改困難,正是當(dāng)前使用MySQL的開發(fā)人員面臨的問題。

六、為什么用Nosql

今天我們可以通過第三方平臺(tái)(如:Google,Facebook等)可以很容易的訪問和抓取數(shù)據(jù)。用戶的個(gè)人信息,社交網(wǎng)絡(luò),地理位置,用戶生成的數(shù)據(jù)和用戶操作日志已經(jīng)成倍的增加。我們?nèi)绻獙?duì)這些用戶數(shù)據(jù)進(jìn)行挖掘,那SQL數(shù)據(jù)庫(kù)已經(jīng)不適合這些應(yīng)用了, NoSQL數(shù)據(jù)庫(kù)的發(fā)展也卻能很好的處理這些大的數(shù)據(jù)。下面給大家看一下,web應(yīng)用數(shù)據(jù)量的增長(zhǎng)圖:

七、Nosql是什么

NoSQL(NoSQL = Not Only SQL ),意即“不僅僅是SQL”,

泛指非關(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類型的web2.0純動(dòng)態(tài)網(wǎng)站已經(jīng)顯得力不從心,暴露了很多難以克服的問題,而非關(guān)系型的數(shù)據(jù)庫(kù)則由于其本身的特點(diǎn)得到了非常迅速的發(fā)展。NoSQL數(shù)據(jù)庫(kù)的產(chǎn)生就是為了解決大規(guī)模數(shù)據(jù)集合多重?cái)?shù)據(jù)種類帶來的挑戰(zhàn),尤其是大數(shù)據(jù)應(yīng)用難題,包括超大規(guī)模數(shù)據(jù)的存儲(chǔ)。

(例如谷歌或Facebook每天為他們的用戶收集萬(wàn)億比特的數(shù)據(jù))。這些類型的數(shù)據(jù)存儲(chǔ)不需要固定的模式,無需多余操作就可以橫向擴(kuò)展。

八、Nosql的優(yōu)勢(shì)

1.易擴(kuò)展

NoSQL數(shù)據(jù)庫(kù)種類繁多,但是一個(gè)共同的特點(diǎn)都是去掉關(guān)系數(shù)據(jù)庫(kù)的關(guān)系型特性。

數(shù)據(jù)之間無關(guān)系,這樣就非常容易擴(kuò)展。也無形之間,在架構(gòu)的層面上帶來了可擴(kuò)展的能力。

2.大數(shù)據(jù)量,高性能

NoSQL數(shù)據(jù)庫(kù)都具有非常高的讀寫性能,尤其在大數(shù)據(jù)量下,同樣表現(xiàn)優(yōu)秀。

這得益于它的無關(guān)系性,數(shù)據(jù)庫(kù)的結(jié)構(gòu)簡(jiǎn)單。一般MySQL使用Query Cache,每次表的更新Cache就失效,是一種大粒度的Cache,在針對(duì)web2.0的交互頻繁的應(yīng)用,Cache性能不高。而NoSQL的Cache是記錄級(jí)的,是一種細(xì)粒度的Cache,所以NoSQL在這個(gè)層面上來說就要性能高很多了。

3.多樣靈活的數(shù)據(jù)模型

NoSQL無需事先為要存儲(chǔ)的數(shù)據(jù)建立字段,隨時(shí)可以存儲(chǔ)自定義的數(shù)據(jù)格式。而在關(guān)系數(shù)據(jù)庫(kù)里,增刪字段是一件非常麻煩的事情。如果是非常大數(shù)據(jù)量的表,增加字段簡(jiǎn)直就是一個(gè)噩夢(mèng)。

九、Nosql數(shù)據(jù)庫(kù)的四大分類

鍵值(Key-Value)存儲(chǔ)

列存儲(chǔ)

文檔存儲(chǔ)

圖形存儲(chǔ)

常見的有:Redis、Memcache、MongoDB,這里就不一 一 介紹了。


分享名稱:關(guān)于myisamnosql的信息
網(wǎng)頁(yè)鏈接:http://weahome.cn/article/dsdgise.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部