## flashcache出现的背景环境
1.长期积攒的大数据量如果将这些数据全部放在大容量的SATA、SAS盘上时,会发现性能(响应时间)不够;
2.如果全放在SSD上时,又会发现成本很高。
3.即使公司能够大气到都放到SSD上,你会发现1TB的数据里面可能只有200G是经常被访问的,300G可能偶尔被访问到,最后剩下的500G可能已经成为历史数据了,几乎不被访问到,如果全部都放在SSD上有略有浪费。于是就有了Flashcache

## 什么是flashcache
1.Facebook发布了通过将数据缓存在SSD硬盘加速MySQL的内核模块Flashcache。代码已经放到Github上
2.Flashcache一个非常不错的软件(准确的说是一个Linux的模块),可以动态加载
3.Flashcache通过在文件系统(VFS)和设备驱动之间新增了一次缓存层,来实现对热门的缓存
4.Flashcache可以理解为是一种缓存,一般用SSD作为缓存的介质(一般缓存的介质用的都是内存),通过将传统硬盘上的热门数据缓存到SSD上,然后利用SSD优秀的读性能,来加速系统
5.这个方法较之内存缓存,没有内存快,但是空间可以比内存大很多
6.但是SSD有个先天性缺陷,那就是写入数据之前必须先进行擦除,这是为什么呢,这和SSd的原理有关,电位的转化问题,就是先把空间全部置位,再进行加电变化每个cell的正确电位,那么势必会影响SSd的寿命,相当于一次写转化为了两次写
7.如果SSD的使用没有进过良好的优化,那么会SSD的使用寿命将会受限,因此损耗均衡算法也是SSD研究关注的重点,貌似现在有了成熟的解决方案。
8.尽管SSD设备都具备了良好的损耗均衡,但是使用者都是熟知SSD的缺陷,所以不得不小心应对,因此SSD在存储中的位置,通常作为读缓存,用于提高系统的IO性能。
9.FlashCache便是以此为目的的使用SSD设备的

## 谁适合用Flashcache
1.数据量很大(例如4TB),热门数据也很大(800GB),不必要或者不舍得全部买内存来缓存

## 谁不适合用Flashcache
1.数据量不大的话,一般Flashcache就没什么用武之地了,内存就可以帮你解决问题了
2.不差钱的情况,买内存上大内存

## 为什么flashcache适用于mysql
1.传统磁盘的对于(mysql需求的)随机写/随机读效率都相当低下,需要进行机械化的寻道读取。
2.SSD因为是固态存储器,即不存在机械寻道和磁化问题,而是通过电位标注01,随机读写效率都相当优秀。