笔试,一面,二面,邮件通知是否合适!对于超级大表的读取,直接从磁盘文件中读取数据,避免是用高速缓存。对于中型表,可以从磁盘文件直接读也可以用缓存;如果使用缓存应该把读取的数据放到LRU列表末尾(这样,新加入缓存数据时将先把该表的数据移除)。LRU算法有高级版本,叫LRU-K。例如SQL Server使用的LRU-K, K=2。K代表的是考虑最近时间段,数据访问的次数。
前面的例子是LRU-K算法最简单的例子,只考虑一次访问,K = 1。LRU-K的原理如下:记录数据的最近访问次数(最多记录K次)。根据数据访问次数,设置一个权值。最近访问次数越多的权值越大。当一批新的数据加载到缓存中时,权值大的数据不会被移除,即使该数据是很早就加载到缓存中的。如果数据长时间未被再使用,权值会逐渐降低。权值的计算是很耗资源的,这也是为什么 SQL Server使用K=2的原因。这种设置方式,投入产出比较高。想更深入的了解LRU算法,可以参考一下算法文档(文档google)。
...查看更多