MySQL-LINUX下,MYSQL数据库文件是否会完全缓存进内存?

MySQL-LINUX下,MYSQL数据库文件是否会完全缓存进内存?

清晨说ぺ晚安 发布于 2016-11-18 字数 264 浏览 1160 回复 4

假设

一台服务器物理内存18G。 MySQL的test数据库5G。

在MySQL启动后,linux会将文件直接放到内存中执行。
是否可以将 MySQL数据库文件 完全缓存进物理内存。
然后MySQL进行查询操作时,通过linux的机制,直接从物理内存中读取MySQL文件,进行查询?

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

瑾兮 2017-08-25 4 楼

http://www.taobaodba.com/html/552_mysql_avoid_swap.html
我给个链接

归属感 2017-02-13 3 楼

局部表放到内存还比较靠谱,完全把整个MYSQL数据都放到内存中怎么听起来不是特别靠谱

瑾兮 2017-01-29 2 楼

方法:
1. mysql用heap表
2. echo 0 > /proc/sys/vm/swappiness
3. mysql带 -memlock 参数,不过内存不够mysql立刻退出
4. 安装linux时不分 swap区
5. 把数据文件拷贝到linux ramdisk上。

灵芸 2016-12-09 1 楼

你想把数据缓存到内存加快执行的思想是正确的,毕竟IO(网卡、硬盘)非常耗时。
还需要考虑以下几点:
1.CPU访问IO虽然耗时,但现在不是CPU完全参与IO操作的时代了,已经经过中断->DMA->IO通道的发展了。
2.可以使用异步IO模型读取数据。读取IO时,可以做些其它的事。
3.MySQL数据库内部进行的优化是相当多的,它要是认为把数据全部读入内存快早就装入了。
往往DB中会有一个精密的内存管理机制,缓存最近使用的数据库页。一般是时钟替换算法。而且保存了用户以前执行的查询的编译结果,为相似查询节约了编译时间。甚至有些数据库如SQL-Server还会统计使用这些内存,消耗的CPU和IO代价,然后作调整。
4.服务器上的性能优化不是单单针对IO的优化,还有共享锁、吞吐率、内核调用、进程线程切换等。把全部数据缓存进内存,很有可能使得操作系统其它的性能降低。
5.数据完全缓冲入内存,若突然断电或死机,数据都会丢失。