序:
内存关系数据库没有找到开源好用的,很多都是商用。虽然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。
文章评论