1樓:愛可生雲資料庫
檢視 /proc/meminfo
tips:
「大記憶體頁」也稱傳統大頁、大頁記憶體等有助於 linux 進行虛擬記憶體的管理,標準的記憶體頁為 4kb,這裡使用「大記憶體頁」最大可以定義 1gb 的頁面大小,在系統啟動期間可以使用「大記憶體頁」為應用程式預留一部分記憶體,這部分記憶體被佔用且永遠不會被交換出記憶體,它會一直保留在那裡,直到改變配置。(詳細介紹請看下面連結官方解釋)
那麼這麼大頁記憶體是分配給誰的呢?
查詢一下:
shell> /proc/sys/vm/hugetlb_shm_group
27shell> id 27
uid=27(mysql) gid=27(mysql) groups=27(mysql)
hugetlb_shm_group 檔案裡填的是指定大頁記憶體使用的使用者組 id,這裡檢視到是 mysql 組 id,那既然是給 mysql 的為什麼 free 等於 total,並且 mysql 還只有 20 多 g 實際使用記憶體呢?
原來在 mysql 中還有專門啟用大記憶體頁的引數,在 mysql 大記憶體頁稱為 large page。
檢視 mysql 配置檔案
發現配置檔案中確實有 large-page 配置,但出於禁用狀態。
後與業務確認,很早之前確實啟用過 mysql 的 large page,不過後面禁用了。排查到這基本就有了結論。
結論這套環境之前開啟了 20000 的大記憶體頁,每頁大小為 2mb,佔用了 40g 記憶體空間,給 mysql 使用,並且 mysql 開啟了 large page,但後來不使用的時候,只關閉了 mysql 端的 large page 引數,但沒有實際更改主機的關於大記憶體頁的配置,所以導致,實際上主機上的還存在 20000 的大記憶體頁,並且沒在使用,這一部分長期空閒,並且其他程式不能使用。
所以 mysql 在使用 20g 記憶體左右,整個主機記憶體就飽和了,然後在部分條件下,就觸發了 oom,導致 mysqld 被 kill,但主機上又有 mysqld_safe 守護程式,所以又再次給拉起來,就看到了文章初的偶爾連線不上的現象。
2樓:匿名使用者
先把mysql的服務停掉,然後在my.ini檔案中新增max_allowed_packet=30m,30m是按照要求給的,你自己確定。重啟mysql服務。
3樓:匿名使用者
請問您的問題解決了嗎,我也遇到同樣的問題
mysql消耗的記憶體為什麼總是逐漸增加
4樓:
當然連線數*相關記憶體引數也是會消耗的,還一些全域性的
5樓:匿名使用者
有 oom 的可能性存在
mysql 5.7.18 佔用記憶體持續增加,並且佔用了就不釋放,現在已經用完,開始用swap了,這是什麼原因?
6樓:愛可生雲資料庫
如果我們檢視「top」命令的輸出,我們會看到:mysql 5.7mysql 8.0
這也展示出 mysql8 使用的更多常駐記憶體和虛擬記憶體。特別是「可怕的」虛擬記憶體,因為它遠遠超過這些 vm 上可用的 1gb 實體記憶體。當然,虛擬記憶體使用(vsz)是現代應用程式實際記憶體需求的一個很差的指標,但它確實證實了更高的記憶體需求這個事。
實際上,正如我們從 「vmstat」 輸出中所知道的那樣,即使沒有太多的「空間」,mysql 8 和 mysql 5.7 都不會在低負載下使用 swap 分割槽。如果您有多個連線或希望在同一個 vm 上執行某些應用程式,則可以使用 swap(如果未啟用交換,則可能導致 oom)。
這是一個有趣的實驗,能看看我有多少可以驅動 mysql 5.7 和 mysql 8 的記憶體消耗。
7樓:
檢查下資料庫的配置
我可以幫你嘗試下:[email protected]
mysql建立記憶體表如何持久化,my
8樓:騰訊電腦管家
丟失資料的跟 event 的執行週期有關,可以根據需要自己調整!
9樓:lnmp技術愛好者
mysql的永續性過程
如何增大 mysql 記憶體
10樓:愛可生雲資料庫
檢視 /proc/meminfo
tips:
「大記憶體頁」也稱傳統大頁、大頁記憶體等有助於 linux 進行虛擬記憶體的管理,標準的記憶體頁為 4kb,這裡使用「大記憶體頁」最大可以定義 1gb 的頁面大小,在系統啟動期間可以使用「大記憶體頁」為應用程式預留一部分記憶體,這部分記憶體被佔用且永遠不會被交換出記憶體,它會一直保留在那裡,直到改變配置。(詳細介紹請看下面連結官方解釋)
那麼這麼大頁記憶體是分配給誰的呢?
查詢一下:
shell> /proc/sys/vm/hugetlb_shm_group
27shell> id 27
uid=27(mysql) gid=27(mysql) groups=27(mysql)
hugetlb_shm_group 檔案裡填的是指定大頁記憶體使用的使用者組 id,這裡檢視到是 mysql 組 id,那既然是給 mysql 的為什麼 free 等於 total,並且 mysql 還只有 20 多 g 實際使用記憶體呢?
原來在 mysql 中還有專門啟用大記憶體頁的引數,在 mysql 大記憶體頁稱為 large page。
檢視 mysql 配置檔案
發現配置檔案中確實有 large-page 配置,但出於禁用狀態。
後與業務確認,很早之前確實啟用過 mysql 的 large page,不過後面禁用了。排查到這基本就有了結論。
結論這套環境之前開啟了 20000 的大記憶體頁,每頁大小為 2mb,佔用了 40g 記憶體空間,給 mysql 使用,並且 mysql 開啟了 large page,但後來不使用的時候,只關閉了 mysql 端的 large page 引數,但沒有實際更改主機的關於大記憶體頁的配置,所以導致,實際上主機上的還存在 20000 的大記憶體頁,並且沒在使用,這一部分長期空閒,並且其他程式不能使用。
所以 mysql 在使用 20g 記憶體左右,整個主機記憶體就飽和了,然後在部分條件下,就觸發了 oom,導致 mysqld 被 kill,但主機上又有 mysqld_safe 守護程式,所以又再次給拉起來,就看到了文章初的偶爾連線不上的現象。
11樓:匿名使用者
先把mysql的服務停掉,然後在my.ini檔案中新增max_allowed_packet = 30m,30m是按照要求給的,你自己確定。
重啟mysql服務。
我有一個mysql的資料庫,每天大概增加1000w條資料,持續至少一年,有如下問題:
12樓:匿名使用者
首先這麼大的資料量不建議使用mysql這種免費版的資料庫系統,可以使用oracle等這種大型資料庫系統,其對於資料庫中資料的管理、查詢等的效率要比mysql好非常的多。
如果你一定要使用mysql,其伺服器作業系統最好使用linux,也可以使用國產的紅旗linux。
如果資料庫非常的海量,那麼可以考慮使用刀片式伺服器進行資料庫叢集模式,採用分散式的資料庫系統,如此可以提高查詢的效率。
既然你是搞研究的,那麼對於這種巨量的資料庫管理系統的資料分析可以採用sas資料倉儲來進行對資料進行分析。
13樓:歡樂的尼美
1000萬條記錄,估計大於300m。
儲存引擎效率當然選myisam。可以採用主從伺服器(前提是業務需求實時性不高),主伺服器用來增刪改,從伺服器用來查詢。
也應該用分表技術。
對於常用的表,要每天進行更新檢視,將訪問高的記錄通過檢視查詢。
作業系統用的多的是centos。
mysql 狂吃記憶體 怎麼辦
14樓:匿名使用者
伺服器記憶體佔用過高的解決方法:1,首先通過工作管理員進行程序排序,查詢佔用記憶體較大的程式程序。一般佔用記憶體較大的程序有w3wp、sqlserver、mysqld-nt.
exe;
3,資料庫 sql server 也可以通過資料庫的企業管理器來設定最大記憶體佔用,但是如果**程式必須要佔用較大記憶體的話,設定後會發生頁面報錯、打不開等問題;
4,mysql本身會佔用較大虛擬記憶體,如果不使用mysql資料庫的話,可以將其停止。
mysql分頁問題,mysql分頁查詢問題
因為card表總共有11條記錄,count 出來就是11了count是針對符合where條件的記錄進行的,是不考慮limit的如果想計算select from table where.limit 0,10返回多少條記錄,需要這樣寫 select count from select from tabl...
mysql資料庫sql解說,Mysql資料庫中,設定id為自動增加,向資料庫中插入資料時,SQL語句怎麼寫?
修改表attendance detail的user name列,改為varchar型別,長度45,允許空值,註釋為助教名稱 採用odbc建立mysql的連線,然後在sql server中使用連結伺服器可以連線異種資料庫,然後就可以利用觸發器或者定時job來給mysql傳送資料了。mysql資料庫中,...
mysql主要技術特點,mysql 獨有的特性
樓上的說的太複雜了,我總結一點實際的 mysql簡潔好用,體積小,功能大,穩定性也不錯,常規效能應用都能就會起來,尤其是在web應用上面非常好,缺點也是有的,複雜語法不支援,即使有些支援,效率也不怎麼好,事務功能雖有,但不好用,管理介面只能藉助與第三方的如pma,nc等 mysql特點 5 小巧精緻...