
2021-04-05阅读小笔记:局部性原理
发布日期:2021-05-08 23:40:47
浏览次数:21
分类:原创文章
本文共 662 字,大约阅读时间需要 2 分钟。
原文链接:
1 指导解决并发问题的两大原理
有两个理论可以指导我们处理高并发的问题:阿姆达尔定律和局部性定律。
1.1 阿姆达尔定律:
在并行计算中用多处理器的应用加速受限于程序所需的串行时间百分比
1.2 局部性原理:
局部性原理分为时间局部性和空间局部性,所谓时间局部性指的是如果一个信息正在被访问,那么在短期内它有可能会被再次访问;所谓空间局部性指的是如果一个信息正在被访问,那么与它存错位置相近的信息也可能马上会被访问。
2 局部性原理的案例
2.1 时间局部性:
我们一般会利用本地缓存,例如EhCache、GuavaCache等、分布式缓存,例如Redis、MemCache等将信息缓存起来;当下一次访问,就可以直接存缓存中读取,而不用走DB,从而提升了查询的速度。但是这个等于用空间换时间,查询时间快了,但是增加了存储内存的使用。
2.2 空间局部性:
MySQL 为了提高性能,提供了一个机制:预读机制。
当你从磁盘上加载一个数据页的时候,他可能会连带着把这个数据页相邻的其他数据页,也加载到缓存里去。当我们查询到其他数据页的数据时,就可以直接从BufferPool里面读取,而不用到磁盘里面读取了,从而提升了查询的速度,但是这个其实也是用空间换时间。
这个机制会带来这么一个问题:连带的数据页可能在后面的查询或者修改中,并不会用到,但是它们却在 lru 链表的头部。InnoDB 存储引擎就是利用冷热数据分离方案来解决上面的问题:将 lru 链表分为两部分,一部分是热数据区域链表,一部分是冷数据区域链表。
发表评论
最新留言
不错!
[***.144.177.141]2025年04月29日 19时08分22秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Mapper映射文件传参(数组/集合)与#{}和${} 区别
2023-02-06
mapping文件目录生成修改
2023-02-06
MapReduce Java API-使用Partitioner实现输出到多个文件
2023-02-06
MapReduce Java API-多输入路径方式
2023-02-06
MapReduce Java API实例-排序
2023-02-06
MapReduce Java API实例-统计出现过的单词
2023-02-06
MapReduce Java API实例-统计单词出现频率
2023-02-06
MapReduce Java API实例-统计平均成绩
2023-02-06
MapReduce Kmeans聚类算法
2023-02-06
MapReduce与HDFS企业级优化
2023-02-06
MapReduce分布编程模型之函数式编程范式
2023-02-06
MapReduce实现二度好友关系
2023-02-06
MapReduce的思想
2023-02-06
MapReduce的模式、算法和用例
2023-02-06
MapReduce的编程思想(1)
2023-02-07
MapReduce程序依赖的jar包
2023-02-07
MapReduce程序(一)——wordCount
2023-02-07
MapReduce编程模型简介和总结
2023-02-07
MapReduce:大数据处理的范式
2023-02-07