MySQL如何避免使用swap(ZT)
Linux有很多很好的記憶體、IO排程機制,但是並不會適用於所有場景。對於DBA來說Linux比較讓人頭疼的一個地方是,它不會因為MySQL很重要就避免將分配給MySQL的地址空間對映到swap上。對於頻繁進行讀寫操作的系統而言,資料看似在記憶體而實際上在磁碟是非常糟糕的,響應時間的增長很可能直接拖垮整個系統。這篇blog主要講講我們作為DBA,怎樣儘量避免MySQL慘遭swap的毒手。
首先我們要了解點基礎的東西,比如說為什麼會產生swap。假設我們的實體記憶體是16G,swap是4G。如果MySQL本身已經佔用了12G實體記憶體,而同時其他程式或者系統模組又需要6G記憶體,這時候作業系統就可能把MySQL所擁有的一部分地址空間對映到swap上去。
cp一個大檔案,或用mysqldump匯出一個很大的資料庫的時候,檔案系統往往會向Linux申請大量的記憶體作為cache,一不小心就會導致L使用swap。這個情景比較常見,以下是最簡單的三個調整方法:
1、/proc/sys/vm/swappiness的內容改成0(臨時),/etc/sysctl.conf上新增vm.swappiness=0(永久)
這個引數決定了Linux是傾向於使用swap,還是傾向於釋放檔案系統cache。在記憶體緊張的情況下,數值越低越傾向於釋放檔案系統cache。
當然,這個引數只能減少使用swap的概率,並不能避免Linux使用swap。
2、修改MySQL的配置引數innodb_flush_method,開啟O_DIRECT模式。
這種情況下,InnoDB的buffer pool會直接繞過檔案系統cache來訪問磁碟,但是redo log依舊會使用檔案系統cache。值得注意的是,Redo log是覆寫模式的,即使使用了檔案系統的cache,也不會佔用太多。
3、新增MySQL的配置引數memlock
這個引數會強迫mysqld程式的地址空間一直被鎖定在實體記憶體上,對於os來說是非常霸道的一個要求。必須要用root帳號來啟動MySQL才能生效。
還有一個比較複雜的方法,指定MySQL使用大頁記憶體(Large Page)。Linux上的大頁記憶體是不會被換出實體記憶體的,和memlock有異曲同工之妙。具體的配置方法可以參考:http://harrison-fisk.blogspot.com/2009/01/enabling-innodb-large-pages-on-linux.html
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/756652/viewspace-694971/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 如何避免Swap分割槽對NVMe裝置造成過度損耗
- 如何避免在Flask中使用Response物件Flask物件
- SYBASE 使用技巧集錦(zt)
- MySQL面試題,如何書寫 update 避免表鎖?MySql面試題
- 如何避免ConcurrentModificationExceptionException
- MySql escape如何使用MySql
- mysql避免插入重複資料MySql
- Mysql中使用流式查詢避免資料量過大導致OOMMySqlOOM
- 如何避免MYSQL主從延遲帶來的讀寫問題?MySql
- redis使用中存在的問題及如何避免(二)Redis
- redis使用中存在的問題及如何避免(一)Redis
- INSTEAD OF(zt)
- lsof(zt)
- MySql如何使用索引(一)MySql索引
- MySql如何使用索引(二)MySql索引
- 事務使用中如何避免誤用分散式事務分散式
- CentOS7 系統下如何新增 swap?CentOS
- SQLSERVER SELECT(zt)SQLServer
- V$LOCK(zt)
- EXISTS、IN、NOT EXISTS、NOT IN(zt)
- Event Reference(zt)
- oracle enqueue(zt)OracleENQ
- Fallacies Of The CBO(zt)
- MySQL鎖:InnoDB行鎖需要避免的坑MySql
- 如何避免員工洩密
- java如何避免程式死鎖Java
- 如何避免資料庫被黑資料庫
- Flutter中如何避免多次buildFlutterUI
- 如何避免回撥地獄
- Linux如何手動釋放Swap、Buffer和CacheLinux
- 面試:什麼是死鎖,如何避免或解決死鎖;MySQL中的死鎖現象,MySQL死鎖如何解決面試MySql
- DBMS_PROFILER(zt)
- oracle event 2 (zt)Oracle
- ORA-00604(zt)
- 物化檢視(zt)
- SQL Access Advisor(zt)SQL
- DBMS_SUPPORT(zt)
- LOCK_SGA(zt)