虚似内存

3/3/2017来源:C/C++教程人气:1191

早期计算机系统内存毕竟是一个昂贵部件,而进程使用所需内存超出内存本身大小,这个时候进程就出错了,数据没处可写。随着计算机发展,人们发现硬盘不但容量大,而且比内存便宜,是否可以进程申请内存空间时候,如果内存不够,那么把一部分内存数据写到磁盘里,需要时候再写到内存中呢?这种方案是可以行的叫:虚似内存,虚似内存诞生让进程感觉内存足够大,当CPU寻址内存时候,由硬件地址解释器通过读取OS维护虚似地址映射物理表,将虚似地址翻译成物理地址,再获取数据。这当中存在两个问题: 1、要有策略,哪些内存不经常使用,需要置换到硬盘上。 2、发生了IO操作。 在linux系统swap称为交换空间,我理解就是虚似内存,在数据库服务器上如果swap很高,说明在数据库层面存在性能问题,SQL语句不多高效。 可以通过vmstat命令查看swap使用情况,我们关注si,so这两列: si:每秒从交换区写入内存的大小 so:每秒从内存写到交换区的大小 如果si和so接近,说明数据在内存与硬盘之间不停倒腾,如果DB服务器从2个方面入手: 1、是不是某些表不必要全表扫描? 2、是不是有大的排序? 如果熟悉业务的话更好了,都不需要进入数据库,直接分析业务模块,业务谁写的开发人员自个肯定知道哪些业务耗时比较多,SQL有多复杂。一般来说搞DB都是驻场人员所以了解业务少,只能从SQL入手了。