1innodb_io_capacity:设置服务器的IO容量以确定后台IO的速率限制
2innodb_read_io_threads,innodb_write_io_threads:设置后台IO线程
3innodb_max_merged_io:设置可能合并到一个大IO请求中的相邻IO请求的最大数量
Facebook使用MySQL作为键值存储,其中数据随机分布在一大组逻辑实例中。这些逻辑实例分散在物理节点之间,负载均衡在物理节点级完成。Facebook已经开发了一个分区方案,其中全局ID被分配给所有的用户数据。他们也有一个自定义的归档方案,它基于每个用户的频繁和最近的数据。大部分数据是随机分布的。令人惊讶的是,据传Facebook有1800个MySQL服务器,但只有3个全职DBA
Facebook主要将MySQL用于结构化数据存储,例如墙贴,用户信息等。这些数据在各个数据中心之间复制。对于blob存储(照片,视频等),Facebook使用一个自定义的解决方案,涉及外部的CDN和内部的NFS
同样重要的是,Facebook大量使用Memcache,这是一种内存缓存系统,通过在RAM中缓存数据和对象来加速动态数据库驱动的网站,以减少阅读时间。Memcache是Facebook的主要缓存形式,大大减少了数据库的负载。拥有一个缓存系统可以使Facebook的速度与调用数据一样快。如果不需要访问数据库,则只需根据用户标识从缓存中获取数据
所以,“Facebook使用什么数据库”似乎是一个简单的问题,你可以看到他们已经添加了各种其他系统,使其真正的具有网络可扩展性。但是,仍然可以自由地使用这样一个观点:“MySQL和Oracle或者MSSQLServer一样好或者更好,因为就算只有Facebook使用它,它也有5亿用户!”