午夜无码人妻aⅴ大片色欲张津瑜,国产69久久久欧美黑人A片,色妺妺视频网,久久久久国产综合AV天堂

如何進行Linux設備IO研究與數(shù)據(jù)庫性能調(diào)優(yōu)

本篇文章給大家分享的是有關如何進行Linux設備IO研究與數(shù)據(jù)庫性能調(diào)優(yōu),小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

成都創(chuàng)新互聯(lián)公司專注于梅里斯網(wǎng)站建設服務及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供梅里斯營銷型網(wǎng)站建設,梅里斯網(wǎng)站制作、梅里斯網(wǎng)頁設計、梅里斯網(wǎng)站官網(wǎng)定制、成都微信小程序服務,打造梅里斯網(wǎng)絡公司原創(chuàng)品牌,更為您提供梅里斯網(wǎng)站排名全網(wǎng)營銷落地服務。

如何在Linux系統(tǒng)里對數(shù)據(jù)庫及設備IO庫進行調(diào)優(yōu)?

數(shù)據(jù)庫系統(tǒng)是基于文件系統(tǒng)的,其性能和設備讀寫的機制有密切的關系。和數(shù)據(jù)庫性能密切相關的文件I/O操作的三個操作:

open               打開文件

write                寫文件

fdatasync        flush操作(將文件緩存刷到磁盤上)。

一、Open操作

open("test.file",O_WRONLY|O_APPDENT|O_SYNC))

系統(tǒng)調(diào)用Open會為該進程一個文件描述符fd。這里使用了O_WRONLY|O_APPDENT|O_SYNC打開文件:

1. O_WRONLY表示我們以"寫"的方式打開,告訴內(nèi)核我們需要向文件中寫入數(shù)據(jù);

2. O_APPDENT告訴內(nèi)核以"追加"的方式寫文件;

3. O_DSYNC告訴內(nèi)核,當向文件寫入數(shù)據(jù)的時候,只有當數(shù)據(jù)寫到了磁盤時,寫入操作才算完成(write才返回成功)。

4. 和O_DSYNC同類的文件標志,還有O_SYNC,O_RSYNC,O_DIRECT。

(1) O_SYNC比O_DSYNC更嚴格,不僅要求數(shù)據(jù)已經(jīng)寫到了磁盤,而且對應的數(shù)據(jù)文件的屬性(例如文件長度等)也需要更新完成才算write操作成功??梢奜_SYNC較之O_DSYNC要多做一些操作。

(2) O_RSYNC表示文件讀取時,該文件的OS cache必須已經(jīng)全部flush到磁盤了;

(3) 如果使用O_DIRECT打開文件,則讀/寫操作都會跳過OS cache,直接在device(disk)上讀/寫。因為沒有了OS cache,所以會O_DIRECT降低文件的順序讀寫的效率。

二、Write操作

write(fd,buf,6)

在使用open打開文件獲得文件描述符之后,我們就可以調(diào)用write函數(shù)來寫入數(shù)據(jù)了,write會根據(jù)前面的open參數(shù)不同,而表現(xiàn)不同。

三、Flush階段

fdatasync(fd) == -1

write操作后,我們還調(diào)用了fdatasync來確保文件數(shù)據(jù)flush到了disk上。fdatasync返回成功后,那么可以認為數(shù)據(jù)已經(jīng)寫到了磁盤上。像這樣的flush的函數(shù)還有fsync、sync。

1. Fsync和fdatasync的區(qū)別等同于O_SYNC和O_DSYNC的區(qū)別。

2. Sync函數(shù)表示將文件在OS cache中的數(shù)據(jù)排入寫隊列,并不確認是否真的寫磁盤了,所以sync并不可以靠。

忽略文件打開的過程,通常我們會說“寫文件”有兩個階段,一個是調(diào)用write我們稱為寫數(shù)據(jù)階段(其實是受open的參數(shù)影響),調(diào)用fsync(或者fdatasync)我們稱為flush階段。Linux上的塊設備的操作可以分為兩類:

***類是使用C標準庫中的fopen/fread/fwrite 系列的函數(shù),我們可以稱其為 buffered I/O。

具體的I/O path如下:

Application<->Library Buffer<->Operation System Cache<->File System/Volume Manager<->Device

library buffer是標準庫提供的用戶空間的buffer,可以通過setvbuf改變其大小。

第二類是使用Linux的系統(tǒng)調(diào)用的open/read/write 系列的函數(shù),我們可以稱其為 non-buffered I/O。

Application<-> Operation System Cache <->File System/Volume Manager<->Device

此外,我們可以通過設置open的O_DIRECT 標志來實現(xiàn)Direct I/O (或者叫Raw I/O ),即繞過OS Cache,直接讀取Device ( that's what we want^o^ ), 等于將OS cache換成自己管理的cache。不過,Linus在郵件列表中建議不這么做,而是使用posix_fadvice, madvice。中表明Direct I/O比buffered I/O的性能高很多。

在MySQL中,參數(shù)Innodb_flush_method(Linux)可以設定為:Fdatasync、O_DSYNC、O_DIRECT。我們看看這個三個參數(shù)是如何影響程序MySQL對日志和數(shù)據(jù)文件的操作:


Open logFlush logOpen datafileFlush data
Fdatasync
fsync()
fsync()
O_DSYNCO_SYNC
 

 
fsync()
O_DIRECT
 
fsync()O_DIRECTFsync()

fdatasync被認為是安全的,因為在MySQL總會調(diào)用fsync來flush數(shù)據(jù)。使用O_DSYNC是有些風險的,有些OS會忽略該參數(shù)O_SYNC 。

我們看到O_DIRECT和fdatasync和很類似,但是它會使用O_DIRECT 來打開數(shù)據(jù)文件。有數(shù)據(jù)表明,如果是大量隨機寫入操作,O_DIRECT 會提升效率。但是順序?qū)懭牒妥x取效率都會降低。所以使用O_DIRECT需要謹慎。

mysql   innodb 對應相關參數(shù):

innodb_flush_method有三個值,分別是fdatasync,O_DSYNC和O_DIRECT,其中fdatasync是默認值。

它們控制了InnoDB刷新日志和數(shù)據(jù)的模式。

fdatasync:InnoDB使用fsync()函數(shù)去更新日志和數(shù)據(jù)文件。

O_DSYNC:InnoDB使用O_SYNC模式打開并更新日志文件,用fsync()函數(shù)去更新數(shù)據(jù)文件。

O_DIRECT:InnoDB使用O_DIRECT模式打開數(shù)據(jù)文件,用fsync()函數(shù)去更新日志和數(shù)據(jù)文件。

我們看到O_DIRECT和fdatasync和很類似,但是它會使用O_DIRECT 來打開數(shù)據(jù)文件。有數(shù)據(jù)表明,如果是大量隨機寫入操作,O_DIRECT 會提升效率。但是順序?qū)懭牒妥x取效率都會降低。所以使用O_DIRECT需要謹慎。

以上就是如何進行Linux設備IO研究與數(shù)據(jù)庫性能調(diào)優(yōu),小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降摹OM隳芡ㄟ^這篇文章學到更多知識。更多詳情敬請關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

分享題目:如何進行Linux設備IO研究與數(shù)據(jù)庫性能調(diào)優(yōu)
本文路徑:http://www.ekvhdxd.cn/article10/ghdgdo.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、自適應網(wǎng)站、App設計、建站公司定制網(wǎng)站、面包屑導航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設計