1. 程式人生 > >MySQL 5.7 InnoDB緩衝池NUMA功能支援——但是別高興的太早

MySQL 5.7 InnoDB緩衝池NUMA功能支援——但是別高興的太早

當前CPU都已是NUMA架構,相信除了歷史遺留系統,很少會有資料庫跑在SMP的CPU上了。NUMA架構帶來的優勢無言而語,CPU更快的記憶體訪問速度,但是帶來的問題也不言而喻,特別是對於資料庫的影響。MySQL之前“臭名昭著”的swap問題就是因為NUMA架構導致。大部分同學已經知道應對技巧,即在啟動檔案中加入:

numactl --interleave=all mysqld ...

or

numactl –cpunodebind=node –localalloc mysqld ...

MongoDB官方的啟動檔案大致也是這麼寫的。但是這樣的處理方式在Inside君看來並不是最優的。因為NUMA的優勢在於本地記憶體的申請速度。因此,對於資料庫來說,一個好的策略應該是諸如緩衝池這樣的全域性記憶體可以向所有節點申請記憶體,而執行緒級別的記憶體還是堅持本地分配策略。

MySQL 5.7 InnoDB提供了新的引數innodb_numa_interleave,即緩衝池記憶體的分配策略採用interleave的方式。官方文件中的說明如下:

Enables the NUMA interleave memory policy for allocation of the InnoDB buffer pool. Wheninnodb_numa_interleave is enabled, the NUMA memory policy is set to MPOL_INTERLEAVE for the mysqld process. After the InnoDB buffer pool is allocated, the NUMA memory policy is set back to MPOL_DEFAULT. For theinnodb_numa_interleave option to be available, MySQL must be compiled on a NUMA-enabled system.

實現程式碼也比較優雅,有興趣的同學可以看下。不過當你高興InnoDB終於支援NUMA特性時,MySQL又給我們潑了冷水:

[email protected]# bin/mysqld -V

bin/mysqld  Ver 5.7.12 for linux-glibc2.5 on x86_64 (MySQL Community Server (GPL))

[email protected]# bin/mysqld --help -v | grep numa

最新的5.7.12版本竟然找不到此引數。但是沒有關係,開源的魅力在於折騰,於是乎修改了2行程式碼,編譯安裝後引數innodb_numa_interleave就又出現了:

[email protected]:/mdata/mysql/mysql-5.7.12/bld# sql/mysqld -v --help | grep numa

  --innodb-numa-interleave 

innodb-numa-interleave                                       FALSE


小夥伴可嘗試自己去解決看看,第一個回覆並答對的小夥伴,將獲得姜老師提供的價值1000元的某雲服務提供商代金券一張哦~~~

不過,相比Microsoft SQL Server,MySQL的NUMA支援依然不夠完善,因為Microsoft SQL Server在2005版本就已經支援NUMA特性,並且提供了相應的命令來進行控制,如:

ALTER SERVER CONFIGURATION SET PROCESS AFFINITY CPU=0 TO 3;

這樣做的好處是,比如在多例項環境下,使用者可以更為靈活的控制記憶體的分配。但是要實現此功能,貌似也不是一件難事哦,有誰願意實現給InnoSQL貢獻自己的一份力量呢?

PS:Inside君的2016年MySQL網路培訓班又將開始啦~~~,具體點選:2016年最好的MySQL資料庫網路培訓又來了 零基礎、Oracle DBA、MySQL DBA的同學們都來吧,跟著姜老師的思考方式來系統的學習MySQL。

相關推薦

MySQL 5.7 InnoDB緩衝NUMA功能支援——但是高興

當前CPU都已是NUMA架構,相信除了歷史遺留系統,很少會有資料庫跑在SMP的CPU上了。NUMA架構帶來的優勢無言而語,CPU更快的記憶體訪問速度,但是帶來的問題也不言而喻,特別是對於資料庫的影響。MySQL之前“臭名昭著”的swap問題就是因為NUMA架構導致。大部分同學已經知道應對技巧,即在啟動檔案中

MySQL 原始碼分析 Innodb緩衝刷髒的多執行緒實現

簡介 為了提高效能,大多數的資料庫在操作資料時都不會直接讀寫磁碟,而是中間經過緩衝池,將要寫入磁碟的資料先寫入到緩衝池裡,然後在某個時刻後臺執行緒把修改的資料刷寫到磁碟上。MySQL的InnoDB引擎也使用緩衝池來快取從磁碟讀取或修改的資料頁,如果當前資料庫需要操作的資料集比緩衝池中的空閒頁面大

MySQL 5.7 InnoDB中文全文索引測試

從MySQL 5.7.6開始,MySQL內建了ngram全文檢索外掛,用來支援中文分詞,並且對MyISAM和InnoDB引擎有效。在全文索引中,ngram就是一段文字裡面連續的n個字的序列。本文將對MySQL5.7的中文全文索引做簡單測試。中文全文索引測試 在使用中文檢索分

InnoDB緩衝預載入在MySQL 5.7中的正確開啟方式

DBAplus社群譯者:徐肖霞(新炬網路DBA工程師) 譯文稽核:葛雲傑 在這篇文章裡,我將討論在MySQL 5.7裡如何使用InnoDB緩衝池預載入特性。 從MySQL 5.6開始,可以配置MySQL儲存InnoDB快取池的資料,並在啟動時載入。在MySQL 5.7後,這是預設行為。在預設配置中,

MySQL的show profile簡介以及該功能MySQL 5.7中performance_schema中的替代

資源 指標 context 繼續 過程 tar view update 語句 本文出處:http://www.cnblogs.com/wy123/p/6979499.html   show profile 命令用於跟蹤執行過的sql語句的資源消耗信息,可以幫

MySQL-5.7設置InnoDB表數據文件存儲位置

pid file buffer 就是 like 位置 orm for inno [root@localhost data]# ls a1 a2 a3 auto.cnf ib_buffer_pool ibdata1 ib_logfile0 ib_logfile1

MySQL InnoDB Cluser | Mysql 5.7 集群

status mysql5.7 slave tid use ida required pro ffline 目前 本集群 應用在自己的 django demo 環境上,暫時穩定運行。 歡迎加群 620176501 討

Mysql 5.7.20 mysql innodb 系統表損壞帶來的問題

sha use linux系統 type log tle blob b- 資料 早上上班後,mysql服務器遇到點小問題,在排查故障過程查看mysql錯誤日誌過程中發現有幾個innodb 表無法打開,使用desc查看有關表的表結構提示表不存在,show tables 可以查

MySQL 5.7 優化InnoDB配置

recovery dir 減少 unix rac 例如 是你 pan 模式 InnoDB給MySQL提供了具有提交,回滾和崩潰恢復能力的事務安全(ACID兼容)存儲引擎。InnoDB鎖定在行級並且也在SELECT語句提供一個Oracle風格一致的非鎖定讀。這些特色增加了多用

MySQL 5.7 Reference Manual】15.4.2 Change Buffer(變更緩衝

15.4.2 Change Buffer(變更緩衝)   The change buffer is a special data structure that caches changes to secondary index pages when affected pages are

MySQL 5.7基礎之innodb儲存引擎總結

一、innodb初探: 1、MySQL日誌檔案: ①:slow.log 檔案會記錄慢查詢日誌,當一條語句執行時間超過在配置引數long_query_time中指定的值時,這條語句就會被記錄在這個檔案中; ②:error.log 檔案會記錄一些系統啟動或執行時的錯誤或警告資訊,通過配置引數log_erro

MySQL 5.7 Reference Manual】15.4.2 Change Buffer(變更緩衝

15.4.2 Change Buffer(變更緩衝)   The change buffer is a special data structure that caches changes to secondary index pages when affected pages are

mysql 5.7.3.0-m13安裝教程

com 處理 技術分享 mysql 5.7 bench aid target 驗證 htm 安裝mysql百度經驗地址:(默認安裝,除了選擇不更新和選擇保存路徑,其它基本是下一步下一步) http://jingyan.baidu.com/article/7e4409

windows下mysql 5.7的配置全過程

希望 圖片 all str success ans bst alt database 這是一套在好多次的安裝下總結出來的經驗,包括很多種遇到的問題,查過很多資料,特此總結一下。 一、從官網下載MySQL的zip(免安裝的) 解壓mysql-5.7.11-winx64.zip

在CentOS 7上源碼編譯安裝MySQL 5.7

mysql source cmake 1.系統環境[[email protected]/* */ ~]# uname -r3.10.0-514.el7.x86_64 [[email protected]/* */ ~]# cat /etc/redhat-release

yum && 編譯 安裝mysql 5.7 多實例

name mon symbol server-id service lin extra safe min yum安裝 [[email protected]/* */ ~]# wget http://repo.mysql.com/mysql57-community

MySql-5.7.17 -winx64的安裝配置

mysql一、下載軟件1. 進入mysql官網,登陸自己的Oracle賬號(沒有賬號的自己註冊一個),下載Mysql-5.7.17,下載地址:http://dev.mysql.com/downloads/mysql/2.將下載好的文件解壓到指定目錄,解壓在E:\mysql-5.7.17-winx64二、安裝

MySQL 5.7.10最新版本號源碼安裝具體過程

ngs htm org ear xpl can 數據文件 private which 1,下載地址:安裝包下載地址:http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.10.tar.gz能夠wget下載,也能夠在p

JDBC——Mysql 5.7綠色版配置安裝過程

5.6 配置文件 mov 新版 否則 download 查看系統 管理員 then 前言: JDBC是Java鏈接數據庫總要接口; 學習JDBC之前最重要的是要配置好數據庫(Mysql); 以下是配置Mysql步驟; 本章大體分為 下載 和 配置安裝過程

mysql 5.7 解決 set global slow_query_log=on;報錯

mysql 工作中,需要查看mysql的top 20 慢sql,逐個進行優化,加上必要的索引。 但發現慢查詢日誌沒有開啟: mysql> show variables like "%query%";+------------------------------+-----------------