mysql內(nèi)存怎么設(shè)置 mysql內(nèi)存使用詳解

MySQL 內(nèi)存占用總是太高,你需要立即進(jìn)行這些操作……

生產(chǎn)環(huán)境中,MySQL 不經(jīng)意間吃掉全部的內(nèi)容,然后開始吃掉 SWAP,性能一降再降,怎么辦?

公司主營業(yè)務(wù):網(wǎng)站設(shè)計、網(wǎng)站制作、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。成都創(chuàng)新互聯(lián)公司是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊有機(jī)會用頭腦與智慧不斷的給客戶帶來驚喜。成都創(chuàng)新互聯(lián)公司推出許昌免費(fèi)做網(wǎng)站回饋大家。

可以從下面三點查看原因:

MySQL 使用內(nèi)存,有兩個途徑。

永久占用的內(nèi)容

比如全局緩沖區(qū)(Global Buffer)類別,是在服務(wù)器啟動期間從操作系統(tǒng)獲得的,不會釋放到任何一個別的進(jìn)程。

動態(tài)請求的內(nèi)存

線程緩沖區(qū)由MySQL使用,它是在處理新查詢時從操作系統(tǒng)請求的內(nèi)存。在執(zhí)行查詢之后,該內(nèi)存被釋放回操作系統(tǒng)。

這意味著 MySQL 的內(nèi)存使用,是 全局緩沖區(qū) 加上 線程緩沖區(qū) 以及 允許的最大連接數(shù) 。

對于專用數(shù)據(jù)庫服務(wù)器,該值需要保持在服務(wù)器內(nèi)存的90%以下。在共享服務(wù)器的情況下,它應(yīng)該保持在服務(wù)器內(nèi)存的50%以下。

檢查一下 MySQL 設(shè)置,有助于確定內(nèi)存使用情況,從而為 MySQL 分配合適的值。

一個近似的公式:

當(dāng)網(wǎng)站受到攻擊時,有可能在短時間內(nèi)建立異常高的連接數(shù)量。MySQL 中的 PROCESSLIST 可用于檢測頂級用戶并阻止對濫用連接的訪問。

找出查詢需要很長時間才能執(zhí)行的語句,因為這些查詢需要進(jìn)一步優(yōu)化服務(wù)器才能更好地執(zhí)行,可以通過服務(wù)器查詢?nèi)罩具M(jìn)行識別。由于查詢速度慢,導(dǎo)致磁盤讀取較多,導(dǎo)致內(nèi)存和CPU使用率較高,影響服務(wù)器性能。

最后,到了加內(nèi)存條的時候了。雖然在優(yōu)化數(shù)據(jù)庫設(shè)置之后,服務(wù)器會不斷地路由到使用交換內(nèi)存,但也必須增加內(nèi)存。俗話說:“巧婦難為無米之炊”,就是這個意思。

上面說的這些方向,大家可以在實際操作中驗證體會,希望大家在數(shù)據(jù)庫優(yōu)化的路上,麻溜順暢,砥礪前行。

linux 下怎么優(yōu)化mysql占用內(nèi)存?

修改mysql配置文件,優(yōu)化緩存大小和連接數(shù)連接方式,優(yōu)化sql語句 ,記得mysql好像是有工具可以查看最占用資源的sql語句,找到他,優(yōu)化他。

安裝好mysql后,配制文件應(yīng)該在/usr/local/mysql/share/mysql目錄中,配制文件有幾個,有my-huge點吸煙 f my-medium點吸煙 f my-large點吸煙 f my-small點吸煙 f,不同的流量的網(wǎng)站和不同配制的服務(wù)器環(huán)境,當(dāng)然需要有不同的配制文件了。

一般的情況下,my-medium點吸煙 f這個配制文件就能滿足我們的大多需要;一般我們會把配置文件拷貝到/etc/my點吸煙 f 只需要修改這個配置文件就可以了,使用mysqladmin variables extended-status _u root _p 可以看到目前的參數(shù),有3個配置參數(shù)是最重要的,即key_buffer_size,query_cache_size,table_cache。

key_buffer_size只對MyISAM表起作用,

key_buffer_size指定索引緩沖區(qū)的大小,它決定索引處理的速度,尤其是索引讀的速度。一般我們設(shè)為16M,實際上稍微大一點的站點 這個數(shù)字是遠(yuǎn)遠(yuǎn)不夠的,通過檢查狀態(tài)值Key_read_requests和Key_reads,可以知道key_buffer_size設(shè)置是否合理。比例 key_reads / key_read_requests應(yīng)該盡可能的低,至少是1:100,1:1000更好(上述狀態(tài)值可以使用SHOW STATUS LIKE ‘key_read%’獲得)。 或者如果你裝了phpmyadmin 可以通過服務(wù)器運(yùn)行狀態(tài)看到,筆者推薦用phpmyadmin管理mysql,以下的狀態(tài)值都是本人通過phpmyadmin獲得的實例分析:

這個服務(wù)器已經(jīng)運(yùn)行了20天

key_buffer_size _ 128M

key_read_requests _ 650759289

key_reads - 79112

比例接近1:8000 健康狀況非常好

MySQL內(nèi)存相關(guān)參數(shù)

相關(guān)查看命令

sql show global variables like 'innodb_buffer_pool_size';

sql show global status like 'Innodb_buffer_pool_pages_data';

sql show global status like 'Innodb_page_size';

有的參數(shù)對應(yīng)不同引擎,比如對于innodb引擎的,都是innodb_打頭。

例如:

innodb_buffer_pool_size = 81920M

join_buffer_size = 1024M

innodb_sort_buffer_size =1024M

sort_buffer_size = 2048M

read_rnd_buffer_size = 2048M

innodb_log_buffer_size = 128M

innodb_log_file_size =2048M

innodb_log_files_in_group=10

bulk_insert_buffer_size=4096M

myisam_sort_buffer_size = 512M

myisam_max_sort_file_size = 10G

thread_cache_size = 300

ft_min_word_len = 1 #for chinese full text search

query_cache_size = 512M

query_cache_limit = 4M

query_cache_type = 0

query_cache_min_res_unit = 2k

thread_stack = 512K

tmp_table_size = 3G

max_heap_table_size = 3G

long_query_time = 3

log-slave-updates

max_binlog_cache_size = 8M

調(diào)優(yōu)參考計算方法:

val = Innodb_buffer_pool_pages_data / Innodb_buffer_pool_pages_total * 100%

val 95% 則考慮增大 innodb_buffer_pool_size, 建議使用物理內(nèi)存的75%

val 95% 則考慮減小 innodb_buffer_pool_size, 建議設(shè)置為:Innodb_buffer_pool_pages_data * Innodb_page_size * 1.05 / (1024*1024*1024)

設(shè)置命令:set global innodb_buffer_pool_size = 2097152; //緩沖池字節(jié)大小,單位kb,如果不設(shè)置,默認(rèn)為128M

設(shè)置要根據(jù)自己的實際情況來設(shè)置,如果設(shè)置的值不在合理的范圍內(nèi),并不是設(shè)置越大越好,可能設(shè)置的數(shù)值太大體現(xiàn)不出優(yōu)化效果,反而造成系統(tǒng)的swap空間被占用,導(dǎo)致操作系統(tǒng)變慢,降低sql查詢性能。

修改配置文件的調(diào)整方法,修改my點吸煙 f配置:

innodb_buffer_pool_size = 2147483648??#設(shè)置2G

innodb_buffer_pool_size = 2G??#設(shè)置2G

innodb_buffer_pool_size = 500M??#設(shè)置500M

MySQL5.7及以后版本,改參數(shù)時動態(tài)的,修改后,無需重啟MySQL,但是低版本,靜態(tài)的,修改后,需要重啟MySQL。

當(dāng)前文章:mysql內(nèi)存怎么設(shè)置 mysql內(nèi)存使用詳解
URL網(wǎng)址:http://muchs.cn/article4/ddiipoe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、電子商務(wù)、靜態(tài)網(wǎng)站搜索引擎優(yōu)化、自適應(yīng)網(wǎng)站網(wǎng)站維護(hù)

廣告

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

h5響應(yīng)式網(wǎng)站建設(shè)