国产精品久久久久久2021,日韩精品无码av中文无码版,亚洲精品久久久午夜麻豆,无码成人精品日本动漫纯h

010-68421378
當(dāng)前您所在的位置:首頁>新聞中心>新品發(fā)布

Greenplum:內(nèi)存和負(fù)載管理!

發(fā)布時間:2019/07/25 瀏覽量:3820
Greenplum數(shù)據(jù)庫集群中,內(nèi)存管理對性能有顯著的影響。

Greenplum數(shù)據(jù)庫集群中,內(nèi)存管理對性能有顯著的影響。默認(rèn)設(shè)置適合于大部分環(huán)境。不要更改默認(rèn)設(shè)置,除非理解系統(tǒng)上的內(nèi)存特點和使用。

 

解決內(nèi)存不足錯誤

為Greenplum數(shù)據(jù)庫配置內(nèi)存

內(nèi)存配置計算實例

配置資源隊列

解決內(nèi)存不足錯誤

 

內(nèi)存不足錯誤消息表明Greenplum的Segment、主機和進程遇到了內(nèi)存不足錯誤。例如:

 

 

Greenplum數(shù)據(jù)庫中一些常見的導(dǎo)致內(nèi)存不足的情況是:

集群上可用的系統(tǒng)內(nèi)存(RAM)不足

內(nèi)存參數(shù)配置不當(dāng)

Segment級別有數(shù)據(jù)傾斜

查詢級別有操作性傾斜

 

下面是內(nèi)存不足情況的可能解決方案:

調(diào)優(yōu)查詢以要求較少的內(nèi)存

使用資源隊列降低查詢并發(fā)

降低Greenplum集群中每臺主機上的Segment數(shù)量

增加主機上的內(nèi)存

在數(shù)據(jù)庫級別上驗證gp_vmem_protect_limit配置參數(shù)。最大安全設(shè)置的計算請見為Greenplum數(shù)據(jù)庫配置內(nèi)存。

使用會話設(shè)置來降低特定查詢使用的statement_mem

在數(shù)據(jù)庫級別降低statement_mem

在資源隊列上設(shè)置內(nèi)存限額以限制資源隊列中執(zhí)行的查詢所使用的內(nèi)存

向集群中增加Segment主機本身不會緩解內(nèi)存不足問題。每個查詢使用的內(nèi)存由statement_mem參數(shù)決定,并且在查詢被調(diào)用時會設(shè)置它。不過,如果增加更多的主機允許每臺主機上的Segment數(shù)量降低,那么gp_vmem_protect_limit中分配的內(nèi)存量就可以上升。

 

為Greenplum數(shù)據(jù)庫配置內(nèi)存

如果周到地管理內(nèi)存,大部分內(nèi)存不足的情況是可以避免的。

 

并不總是可以增加系統(tǒng)內(nèi)存,但是用戶可以通過正確地配置內(nèi)存使用和設(shè)置資源隊列管理預(yù)期負(fù)載來防止內(nèi)存不足的情況。

 

有必要考慮由于失效導(dǎo)致鏡像Segment變成主Segment的內(nèi)存需求,以確保在主Segment或者Segment主機失效時集群能夠繼續(xù)運轉(zhuǎn)。

 

下面是推薦的操作系統(tǒng)以及Greenplum數(shù)據(jù)庫內(nèi)存設(shè)置:

 

不要配置OS使用巨型頁。

vm.overcommit_memory

這是一個Linux內(nèi)核參數(shù),在/etc/sysctl.conf中設(shè)置。它應(yīng)該總是被設(shè)置為2。它決定OS判斷可以給進程分配多少內(nèi)存時使用的方法,2是對于Greenplum數(shù)據(jù)庫唯一安全的設(shè)置。

vm.overcommit_ratio

這是一個Linux內(nèi)核參數(shù),在/etc/sysctl.conf中設(shè)置。它是可以用于應(yīng)用進程的RAM的百分?jǐn)?shù)。剩余的保留給操作系統(tǒng)。Red Hat上默認(rèn)為50。

把vm.overcommit_ratio設(shè)置得太高可能會導(dǎo)致沒有為操作系統(tǒng)保留足夠的內(nèi)存,進而導(dǎo)致Segment主機失效或者數(shù)據(jù)庫失效。將這個值設(shè)置得太低會降低并發(fā)量和通過降低Greenplum數(shù)據(jù)庫可用內(nèi)存量能運行的查詢復(fù)雜度。在增加這一設(shè)置時,有必要記住總是為操作系統(tǒng)活動保留一些內(nèi)存。

為vm.overcommit_ratio計算值的方法請見Segment內(nèi)存配置。

gp_vmem_protect_limit

使用gp_vmem_protect_limit設(shè)置實例能夠為在每個Segment數(shù)據(jù)庫中完成的所有工作分配的最大內(nèi)存。不要把這個值設(shè)置得高于系統(tǒng)上的物理RAM。如果gp_vmem_protect_limit太高,有可能耗盡系統(tǒng)上的內(nèi)存并且正常的操作可能會失敗,導(dǎo)致Segment失效。如果gp_vmem_protect_limit被設(shè)置為一個安全的較低值,系統(tǒng)上真正的內(nèi)存耗盡就能避免。查詢可能會因為達(dá)到限制而失敗,但是系統(tǒng)崩潰和Segment失效可以避免,這也是我們想要的行為。

為gp_vmem_protect_limit計算安全值的方法請見Segment內(nèi)存配置。

runaway_detector_activation_percent

失控查詢終止在Greenplum數(shù)據(jù)庫4.3.4中被引入,它能防止內(nèi)存不足的問題。runaway_detector_activation_percent系統(tǒng)參數(shù)控制觸發(fā)查詢終止的gp_vmem_protect_limit內(nèi)存利用率。默認(rèn)它被設(shè)置為90%。如果一個Segment利用的gp_vmem_protect_limit memory內(nèi)存的百分比超過指定的值,Greenplum數(shù)據(jù)庫會基于內(nèi)存使用終止查詢,從消耗內(nèi)存量最大的查詢開始。查詢會被挨個終止直至 gp_vmem_protect_limit的利用率重新低于指定的百分比。

statement_mem

使用statement_mem分配每個Segment數(shù)據(jù)庫中一個查詢所使用的內(nèi)存。如果要求額外的內(nèi)存,將會溢出到磁盤。按照下面的額方式為statement_mem設(shè)置最優(yōu)值:

 

 

statement_mem的默認(rèn)值是125MB。例如,一個使用默認(rèn)statement_mem值運行在Dell EMC DCA V2系統(tǒng)上的查詢將在每臺Segment服務(wù)器上使用1GB內(nèi)存(8個Segment ? 125MB)。為要求額外內(nèi)存完成的特定查詢在會話級別上設(shè)置statement_mem。在并發(fā)性低的集群上這種設(shè)置可以很好地管理查詢內(nèi)存。對于高并發(fā)的集群還是要使用資源隊列來控制在系統(tǒng)上運行什么以及運行多少。

gp_workfile_limit_files_per_query

設(shè)置gp_workfile_limit_files_per_query以限制每個查詢允許使用的臨時溢出文件(工作文件)的最大數(shù)量。當(dāng)查詢要求的內(nèi)存比它能分配的更多時,它將創(chuàng)建溢出文件。當(dāng)上述限制被超過時,查詢會被中止。默認(rèn)值為零,允許無限多的溢出文件并且可能會填滿文件系統(tǒng)。

gp_workfile_compress_algorithm

如果有很多溢出文件,則設(shè)置gp_workfile_compress_algorithm為壓縮這些溢出文件。壓縮溢出文件可能有助于避免IO操作導(dǎo)致磁盤子系統(tǒng)過載。

內(nèi)存配置計算實例

總RAM = 256GB

SWAP = 64GB

一個塊中有4臺主機,每臺主機上8個主Segment和8個鏡像Segment

失效期間每臺主機上的主Segment最大數(shù)目是11

vm.overcommit_ratio calculation

 

 

把vm.overcommit_ratio設(shè)置為98。

gp_vmem_protect_limit calculation

 

 

配置資源隊列

Greenplum數(shù)據(jù)庫的資源隊列為管理集群負(fù)載提供了一種強有力的機制。隊列可以被用來限制活動查詢的數(shù)量以及隊列中查詢可使用的內(nèi)存量。當(dāng)查詢被提交給Greenplum數(shù)據(jù)庫時,它會被加入一個資源隊列,資源隊列會決定該查詢是否應(yīng)該被接受并且何時有資源可用來執(zhí)行它。

 

不要使用默認(rèn)隊列。把所有角色關(guān)聯(lián)到一個用戶定義的資源隊列。

每個登錄用戶(角色)都被關(guān)聯(lián)到單個資源隊列,任何該用戶提交的查詢都由關(guān)聯(lián)的資源隊列處理。如果沒有為用戶的查詢明確地分派一個隊列,則會由默認(rèn)隊列pg_default處理之。

不要用gpadmin角色或者其他超級用戶角色運行查詢。

超級用戶會被從資源隊列限制中排除,因此超級用戶的查詢運行不會考慮在其所屬隊列上設(shè)置的限制。

使用ACTIVE_STATEMENTS資源隊列參數(shù)來限制特定隊列成員能夠并發(fā)運行的活動查詢數(shù)量。

使用MEMORY_LIMIT參數(shù)控制通過隊列運行的查詢可以利用的內(nèi)存總量。通過組合ACTIVE_STATEMENTS和MEMORY_LIMIT屬性,管理員可以完全控制從一個給定資源隊列發(fā)出的活動。

分配按如下方式進行:假定資源隊列sample_queue的ACTIVE_STATEMENTS被設(shè)置為10,而MEMORY_LIMIT被設(shè)置為2000MB。這限制該隊列在每個Segment上使用大約2GB內(nèi)存。對于每臺服務(wù)器有8個Segment的集群,sample_queue在每臺服務(wù)器上的總用量是16GB(2GB * 8 Segment/服務(wù)器)。如果Segment服務(wù)器有64GB內(nèi)存,系統(tǒng)中可以有不超過四個這種資源隊列,再多就會內(nèi)存不足(4隊列 * 16GB/隊列)。

注意通過使用STATEMENT_MEM,運行在隊列中的個體查詢能夠分配超過其內(nèi)存“份額”的內(nèi)存,從而降低隊列中其他查詢可用的內(nèi)存。

資源隊列優(yōu)先級可以被用來排列具有預(yù)期結(jié)果的負(fù)載。帶有MAX優(yōu)先權(quán)的隊列會扼殺所有其他隊列中的活動,直至MAX隊列完成所有查詢的運行。

根據(jù)負(fù)載和現(xiàn)狀動態(tài)修改資源隊列以匹配隊列的實際需求。

典型的環(huán)境中有基于當(dāng)前情況和系統(tǒng)適用類型而改變的操作流程。用戶可以把這些更改寫成腳本并且增加crontab項來執(zhí)行這些腳本。

使用gptoolkit查看資源隊列使用以及理解隊列如何工作。

下一篇:Greenplum:系統(tǒng)監(jiān)控和維護!
上一篇:eScan Enterprise Edition for MicrosoftSBS Standard:全面的反病毒解決方案!

                               

 京ICP備09015132號-996 | 違法和不良信息舉報電話:4006561155

                                   © Copyright 2000-2026 北京哲想軟件有限公司版權(quán)所有 | 地址:北京市海淀區(qū)西三環(huán)北路50號豪柏大廈C2座11層1105室

                         北京哲想軟件集團旗下網(wǎng)站:哲想軟件 | 哲想動畫

                            華滋生物