序: 記憶體關係資料庫沒有找到開源好用的,很多都是商用。雖然mysql有memory引擎,但寫是整體鎖表,沒法用。 一直想將mysql放入記憶體中,搜索n次資料,沒找到合適的,可能之前思路不對。 最近在測試將mysql放在linux的tmpfs記憶體盤中,網上找了不少方法,都啟動失敗。突然想到直接掛載方式 ...
序: 記憶體關係資料庫沒有找到開源好用的,很多都是商用。雖然mysql有memory引擎,但寫是整體鎖表,沒法用。 一直想將mysql放入記憶體中,搜索n次資料,沒找到合適的,可能之前思路不對。 最近在測試將mysql放在linux的tmpfs記憶體盤中,網上找了不少方法,都啟動失敗。突然想到直接掛載方式,竟然成功。 特別說明:以下方法未經過真實環境長期檢測,不知是否存在未知問題。僅供學習參考。 步驟如下: 1,操作系統centos7,以mysql官網上的yum rpm方式安裝mysql8。 2,mysql的datadir預設路徑為/var/lib/mysql(如不是,後續步驟請換為自己的路徑)。 3,停止mysql。備份datadir,命令:mv /var/lib/mysql /var/lib/mysql_ori。 4,掛載tmpfs記憶體盤,命令:mount -t tmpfs -o size=1g tmpfs /var/lib/mysql。 5,將3中備份的數據複製到/var/lib/mysql中,命令:cp -r -a /var/lib/mysql_ori/* /var/lib/mysql。 6,啟動mysql,命令:systemctl start mysqld。 7,enjoy! 具體性能沒有測試,數據量較小時應該差別不大,如果數據上到二三十GB,當查詢需要從磁碟讀取數據時,性能應該能提升很多。 由於現在記憶體價格低廉,弄個20G的記憶體盤問題不大,雖然重啟數據丟失,但結何代碼改造當緩存用應該不錯的。 前二天使用fio測試的物理盤(非SSD,忘記有沒有陣列了),tmpfs,ramfs的性能,總體上tmpfs與ramfs差不多,在順序讀寫時物理盤大概是tmpfs的1/10,在隨機讀寫時物理盤大概是tmpfs的1/150。