博客
关于我
2021-04-05阅读小笔记:局部性原理
阅读量:394 次
发布时间:2019-03-05

本文共 662 字,大约阅读时间需要 2 分钟。

原文链接:

1 指导解决并发问题的两大原理

有两个理论可以指导我们处理高并发的问题:阿姆达尔定律和局部性定律。

1.1 阿姆达尔定律:

在并行计算中用多处理器的应用加速受限于程序所需的串行时间百分比

1.2 局部性原理:

局部性原理分为时间局部性和空间局部性,所谓时间局部性指的是如果一个信息正在被访问,那么在短期内它有可能会被再次访问;所谓空间局部性指的是如果一个信息正在被访问,那么与它存错位置相近的信息也可能马上会被访问。

2 局部性原理的案例

2.1 时间局部性:

我们一般会利用本地缓存,例如EhCache、GuavaCache等、分布式缓存,例如Redis、MemCache等将信息缓存起来;当下一次访问,就可以直接存缓存中读取,而不用走DB,从而提升了查询的速度。但是这个等于用空间换时间,查询时间快了,但是增加了存储内存的使用。

2.2 空间局部性:

MySQL 为了提高性能,提供了一个机制:预读机制。

当你从磁盘上加载一个数据页的时候,他可能会连带着把这个数据页相邻的其他数据页,也加载到缓存里去。当我们查询到其他数据页的数据时,就可以直接从BufferPool里面读取,而不用到磁盘里面读取了,从而提升了查询的速度,但是这个其实也是用空间换时间。

这个机制会带来这么一个问题:连带的数据页可能在后面的查询或者修改中,并不会用到,但是它们却在 lru 链表的头部。InnoDB 存储引擎就是利用冷热数据分离方案来解决上面的问题:将 lru 链表分为两部分,一部分是热数据区域链表,一部分是冷数据区域链表。

转载地址:http://iyrzz.baihongyu.com/

你可能感兴趣的文章
【单片机开发】基于stm32的掌上游戏机设计 (项目规划)
查看>>
C++&&STL
查看>>
微信js-sdk使用简述(分享,扫码功能等)
查看>>
c++中ifstream及ofstream超详细说明
查看>>
web项目配置
查看>>
基于单片机简易信号误差分析设计-全套资料
查看>>
基于单片机简易脉搏测量仪系统设计-毕设课设资料
查看>>
Javascript中String支持使用正则表达式的四种方法
查看>>
Servlet2.5的增删改查功能分析与实现------删除功能(四)
查看>>
spring启动错误:Could not resolve placeholder
查看>>
invalid byte sequence for encoding
查看>>
技术美术面试问题整理
查看>>
ORB-SLAM2:LoopClosing线程学习随笔【李哈哈:看看总有收获篇】
查看>>
Codeforces Round #305 (Div. 1) B. Mike and Feet(单调栈)
查看>>
js求阶乘
查看>>
Making the grade 和Sonya and Problem Wihtout a Legend
查看>>
Nginx---惊群
查看>>
项目中常用的审计类型概述
查看>>
(九)实现页面底部购物车的样式
查看>>
python-day3 for语句完整使用
查看>>