一種提升數據庫服務器性能的方法及系統的制作方法
【技術領域】
[0001]本發明涉及服務器性能提升技術領域,特別是涉及一種提升數據庫服務器性能的方法及系統。
【背景技術】
[0002]目前,互聯網技術的快速發展給人們的日常生活帶來了越來越多的豐富多彩的網絡資源,基于此,公司對于服務器的需求特別是數據庫服務器的需求呈現特別快的增長。同時,隨著今后高度信息化的社會發展,數據庫在各個領域的使用越來越廣泛,面向政府,企業,還有國家的銀行業和交通業的應用系統的信息量和用戶數都在迅猛增長,數據庫的應用市場就會出現很激烈的競爭,這樣應用系統也隨之對數據庫就提出了高性能的要求。
[0003]然而,在大規模級的數據庫應用系統的開發過程中,很多程序員僅關注系統功能的實現,在系統訪問性能方面的考慮較少,再或者是僅僅從數據庫本身角度出發來提高數據庫的性能,要從大數據量的數據表種快速查詢出相關數據已變得非常困難。
[0004]基于此,亟需一種能夠快速簡單且有效地提升數據庫服務器性能的方法。
【發明內容】
[0005]有鑒于此,本發明提供了一種提升數據庫服務器性能的方法及系統,以實現能夠快速簡單且有效地提升數據庫服務器性能的目的。
[0006]為解決上述技術問題,本發明提供一種提升數據庫服務器性能的方法,包括:
[0007]在數據庫服務器啟動時,獲取預設的運行腳本;
[0008]其中,所述運行腳本包括共享內存大小參數,數據交換屬性、CPU運行速度以及numa機制設置選項;所述共享內存大小參數的內容為最大共享內存,所述數據交換屬性的內容為不使用內存進行交換,所述CPU運行速度的內容為最大運行速度以及所述numa機制設置選項為關閉numa機制;
[0009]依據所述運行腳本,將所述數據庫服務器的操作系統中的共享內存大小參數設置為最大共享內存,并將所述操作系統中的數據交換屬性設置為不使用內存進行交換;
[0010]將所述操作系統中的CPU運行速度設置為最大運行速度,并關閉numa機制。
[0011]上述方法中,優選的,所述運行腳本還包括10調度器的調度策略,所述10調度器的調度策略的內容為deadline策略,該方法還包括:
[0012]將所述操作系統中的10調度器的調度策略設置為deadline策略。
[0013]上述方法中,優選的,所述運行腳本還包括信號量數量,所述信號量數量的內容為最大信號量;該方法還包括:
[0014]將所述操作系統中的信號量數量設置為最大信號量,使所述信號量的數量適應進程的運行。
[0015]本發明還提供了一種提升數據庫服務器性能的系統,包括:
[0016]運行腳本獲取單元,用于在數據庫服務器啟動時,獲取預設的運行腳本;
[0017]其中,所述運行腳本包括共享內存大小參數,數據交換屬性、CPU運行速度以及numa機制設置選項;所述共享內存大小參數的內容為最大共享內存,所述數據交換屬性的內容為不使用內存進行交換,所述CPU運行速度的內容為最大運行速度以及所述numa機制設置選項為關閉numa機制;
[0018]第一設置單元,用于依據所述運行腳本,將所述數據庫服務器的操作系統中的共享內存大小參數設置為最大共享內存,并將所述操作系統中的數據交換屬性設置為不使用內存進行交換;
[0019]第二設置單元,用于將所述操作系統中的CPU運行速度設置為最大運行速度,并關閉numa機制。
[0020]上述系統中,優選的,所述運行腳本還包括10調度器的調度策略,所述10調度器的調度策略的內容為deadline策略,該系統還包括:
[0021]第三設置單元,用于將所述操作系統中的10調度器的調度策略設置為deadline策略。
[0022]上述系統中,優選的,所述運行腳本還包括信號量數量,所述信號量數量的內容為最大信號量;該系統還包括:
[0023]第四設置單元,用于將所述操作系統中的信號量數量設置為最大信號量,使所述信號量的數量適應進程的運行。
[0024]以上本發明提供的一種提升數據庫服務器性能的方法及系統中,由于操作系統默認參數的配置只是較平均的配置,不適合固定的某個具體應用的配置,因此主要是針對數據庫服務器的操作系統的運行參數進行改變,將這種參數改成數據庫需要的且最大的配置,讓數據庫執行的時候不會因為操作系統本身的參數限制因素,從而給查詢或者插入性能帶來影響,以提升服務器性能。基于本發明所提供的技術方案,用戶只需要寫一個運行腳本,把要改的參數寫進腳本,每次啟動機器時自動運行該運行腳本即可,實現了快速簡單且有效地提升數據庫服務器性能的目的。
【附圖說明】
[0025]為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據提供的附圖獲得其他的附圖。
[0026]圖1為本發明實施例提供的一種提升數據庫服務器性能的方法的流程圖;
[0027]圖2為本發明實施例提供的一種參數修改整體結構示意圖;
[0028]圖3為本發明實施例提供的一種帶有交換空間的內存分配圖;
[0029]圖4為本發明實施例提供的一種提升數據庫服務器性能的系統的結構框圖示意圖。
【具體實施方式】
[0030]下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
[0031]本發明的核心是提供一種提升數據庫服務器性能的方法及系統,以實現能夠快速簡單且有效地提升數據庫服務器性能的目的。
[0032]為了使本技術領域的人員更好地理解本發明方案,下面結合附圖和【具體實施方式】對本發明作進一步的詳細說明。
[0033]參考圖1,圖1示出了本發明實施例提供的一種提升數據庫服務器性能的方法的流程圖,該方法具體可以包括如下步驟:
[0034]步驟S100、在數據庫服務器啟動時,獲取預設的運行腳本;
[0035]其中,運行腳本包括共享內存大小參數,數據交換屬性、CPU運行速度以及numa機制設置選項;共享內存大小參數的內容為最大共享內存,數據交換屬性的內容為不使用內存進行交換,CPU運行速度的內容為最大運行速度以及numa機制設置選項為關閉numa機制。
[0036]本發明主要針對的是數據庫服務器,從操作系統的角度來優化。參考圖2,示出了一種參數修改整體結構示意圖。一般情況下,服務器上安裝的操作系統是通用的配置,不會針對特殊的應用。我們利用這一點來達到優化數據庫的目的。
[0037]步驟S101、依據運行腳本,將數據庫服務器的操作系統中的共享內存大小參數設置為最大共享內存,并將操作系統中的數據交換屬性設置為不使用內存進行交換。
[0038]上述步驟S101是從操作系統中的內存角度對數據庫服務器性能進行優化。在實際應用中,操作系統中的參數kernel, shmmax, kernel, shmall,kernel, shmmni指定了最大共享內存段,我們把這個值調節到盡量大的內存,這里我們使用全部內存的90%。再配合上參數vm.swappiness,把這個值設為0,代表盡量不使用內存交換,默認的配置是60,代表著應用程序所使用的內存的60%都是放在磁盤上的。這兩個參數的設定可以讓數據庫的執行中所使用的內存盡量的多,而且所用到的內存全部在物理內存中。分配的內存圖如圖3所示,圖3示出了一種帶有交換空間的內存分配圖。
[0039]步驟S102、將操作系統中的CPU運行速度設置為最大運行速度,并關閉numa機制。
[0040]上述步驟S102是從操作系統中的CPU運行速度和訪問內存的速度對數據庫服務器性能進行優化。在實際應用中,一般的操作系統中在工作不是繁忙的時候,CPU會處在一個節能模式中,即運行在一個較小的頻率內,這時為了讓我們的應用程序盡可能的使用CPU資源,所以我們要把CPU的模式改變成全速運行狀態。具體實施時可以采用以下命令實現:cpupower frequency-set-g performance ο
[0041]下面考慮的問題是即使CPU傳遞運行速度很快,但是訪問內存的速度很慢,也是不行的。所以我們要改進一下CPU訪問內存的速度。cent0S7系統中默認開啟numa機制,SP把CPU和內存劃分為各自不同的塊,這樣同一個塊內的CPU訪問自己塊的內存是很快的,但是訪問別的塊內存就會很慢。我們考慮到數據庫的應用是要用到所有的內存和所有的CPU,并不一定要把內存分塊來訪問,所以把這個numa機制關閉掉。以下有三種方法關閉numa機制的方法:1.硬件層,在B1S中設置關閉;2.0S內核,啟動時設置numa = off ;3.可以用numactl命令將內存分配策略修改為interleave (交叉)。
[0042]實際上,除了上述步驟S101和步驟S102分別從內存、CPU運行速度和訪問內存的速度的角度能夠對數據庫服務器性能進行優化之外,還可以從10調度器的調度策略和信號量數量設置方面進行優化,具體內容如下:
[0043]首先,運行腳本還包括10調度器的調度策略,10調度器的調度策略的內容為deadline策略,在獲取該運行腳本后,將操作系統中的10調度器的調度策略設置為deadline 策略。
[0044]在實際應用中,Linux有四種 10 調度算法:CFQ,Deadline,Anticipatory 和 Ν00Ρ,CFQ是默認的10調度算法。完全隨機的訪問環境下,CFQ與Dead