一、數(shù)據(jù)庫(kù)文件存放在NAS中,會(huì)有什么問題
性能下降100倍左右。數(shù)據(jù)庫(kù)是典型IO密集型系統(tǒng),CPU都不太重要最重要的是存儲(chǔ)了。EMC就做存儲(chǔ)都能做到幾百億規(guī)模。甲骨文現(xiàn)在都推薦全SSD了。數(shù)據(jù)庫(kù)確實(shí)吃內(nèi)存,但是更吃磁盤,一年報(bào)廢幾個(gè)也是常事。所以還必須搞磁盤陣列。即使如此,磁盤陣列全掛也不是那么少見。
不用NAS的主要原因在于兩個(gè):
1.數(shù)據(jù)庫(kù)是延時(shí)敏感型,而NAS多數(shù)工作在以太網(wǎng)環(huán)境下,而TCP/IP協(xié)議決定了這個(gè)協(xié)議的數(shù)據(jù)可靠性不夠強(qiáng),IO還可以亂序傳送,而數(shù)據(jù)庫(kù)是絕不可以亂序的。所以不得不等最慢的那個(gè)IO完成再做下一個(gè)。
2.除了NETAPP之外,所有的NAS幾乎都是在SAN基礎(chǔ)的陣列加NAS GATEWAY。那么,多了一層必然增加延時(shí)降低效率。
要用nas看中的是數(shù)據(jù)持久性,擴(kuò)展性,增值服多,特別是vm場(chǎng)景,且單個(gè)nas的總iops和帶寬都比本地盤高,所以在負(fù)載稍大時(shí),nas對(duì)業(yè)務(wù)層體現(xiàn)出來(lái)的性能更高。從單個(gè)請(qǐng)求看,協(xié)議上的差別開銷從來(lái)都可忽略,即使是http,協(xié)議層上如果性能有差別,一定在crc計(jì)算,安全算法,通信模型上的不同; 對(duì)于本地盤和nas開銷看,主要在因nas拉遠(yuǎn),有一次網(wǎng)絡(luò)開銷,對(duì)于db的io模型有兩類,掃表的順序大io,考驗(yàn)帶寬,網(wǎng)絡(luò)開銷可忽略,索引處理的隨機(jī)小io,這個(gè)需考慮使用什么盤,負(fù)載來(lái)看,如一次hdd盤隨機(jī)讀10ms,一次網(wǎng)絡(luò)100us,影響多少可簡(jiǎn)單估一下,另外網(wǎng)絡(luò)使用rdma時(shí)廷更低,且一旦負(fù)載上來(lái)后,接近本地盤能力,nas性能更好,所以在想用nas的場(chǎng)景,性能不是問題。但為什么推薦使用nas的少呢,的確有的存儲(chǔ)廠商在nas優(yōu)化不夠,另外有兼容性風(fēng)險(xiǎn),db開發(fā)時(shí)基本使用本地盤測(cè)試,相同os文件操作api,極個(gè)別api在本地盤是原子的,但nas是兩條命今,在極端場(chǎng)景要出問題,不是說(shuō)每種db都有問題,自少postgresql要打個(gè)補(bǔ)丁。
延伸閱讀:
二、分布式存儲(chǔ)的優(yōu)勢(shì)
可擴(kuò)展:分布式存儲(chǔ)系統(tǒng)可以擴(kuò)展到數(shù)百甚至數(shù)千個(gè)這樣的集群大小,并且系統(tǒng)的整體性能可以線性增長(zhǎng)。
高可用性:在分布式文件系統(tǒng)中,高可用性包含兩層,一是整個(gè)文件系統(tǒng)的可用性,二是數(shù)據(jù)的完整和一致性
低成本:分布式存儲(chǔ)系統(tǒng)的自動(dòng)容錯(cuò)和自動(dòng)負(fù)載平衡允許在成本較低服務(wù)器上構(gòu)建分布式存儲(chǔ)系統(tǒng)。此外,線性可擴(kuò)展性還能夠增加和降低服務(wù)器的成本。
彈性存儲(chǔ): 可以根據(jù)業(yè)務(wù)需要靈活地增加或縮減數(shù)據(jù)存儲(chǔ)以及增刪存儲(chǔ)池中的資源,而不需要中斷系統(tǒng)運(yùn)行。