首页 > 其他分享 >Change Buffer使用场景

Change Buffer使用场景

时间:2023-09-29 17:46:13浏览次数:30  
标签:场景 Buffer xxx 载入 索引 内存 Change

涉及场景

仅针对非唯一的普通索引,有性能优化效果

例子

如果一个表上有字段 a, b, 且有普通索引c。

update语句为 update xxx set a = 'xxx' where c = 'xxx', 执行这个语句的时候, 因为要判断c = 'xxx' 的记录是否存在, 存在的话才会更新, 此时必定要将c 索引的内存页载入到内存中(执行计划会走索引c) , 修改内存页,写redo log; 同时主键索引页也要载入内存进行修改(主键索引永远都需要先读后写,这个免不了)。这个就用不到Change Buffer。

但是如果是另外一种场景: update xxx set a = 'xxx' where b = 'xxx' , 这个时候因为查询条件不走索引c,故不需要将c的数据页载入内存, 针对索引c上的修改就写入到Change Buffer, 但是针对主键索引,还是要先载入内存再修改。 此时的优化就是针对索引c的页的随机io的优化。

如果还有普通索引d/e/f等,都是同样的WAL写入change buffer,不用在更新的时候立即去随机IO更新对应的索引树。

标签:场景,Buffer,xxx,载入,索引,内存,Change
From: https://www.cnblogs.com/kiper/p/17737128.html

相关文章

  • 抽象CurrentUser适配Http和Job场景
    前言获取当前请求用户的基础信息是很常见的,诸如当前用户Id,角色,有无访问权限等。通常我们可以直接使用HttpContext.User来拿到当前经过认证后的请求人信息。但是这样对于分层应用不太友好,需要安装AspNetCore.Http.Abstractions的包,这样对于这层(非Web层)来讲也有所侵入了。Curren......
  • Go - Change What Is Being Logged by the Standard Logger
    Problem: Youwanttochangewhatthestandardloggerlogs.Solution: UsetheSetFlagsfunctiontosetflagsandaddfieldstoeachlogline. Thedefaultbehaviorofthestandardloggeraddsthedateandtimefieldstoeachlineofthelog. Thelogpac......
  • 深入剖析ThreadLocal使用场景、实现原理、设计思想
    前言ThreadLocal可以用来存储线程的本地数据,做到线程数据的隔离ThreadLocal的使用不当可能会导致内存泄漏,排查内存泄漏的问题,不仅需要熟悉JVM、利用好各种分析工具还耗费人工如果能明白其原理并正确使用,就不会导致各种意外发生本文将从使用场景、实现原理、内存泄漏、设计思想......
  • 什么是AI客流量算法?如何应用在实际场景中?
    客流量分析算法简而言之就是一种利用数据分析和机器学习技术进行人流量统计、预测和分析的算法。它能够根据不同的数据来源,如摄像头、传感器等,对特定区域内的客流量进行实时监测和分析,并通过对历史数据的综合分析,提供客流趋势预测和优化策略。TSINGSEE青犀视频智能分析网关的客流量......
  • 华为再放大招!联合伙伴发布AI新人类,助力场景化大模型商用落地
    原创|文BFT机器人随着人工智能技术的不断发展,我们正迎来一个全新的智能时代。在这个时代里,人工智能将在各个领域发挥重要作用,为人类带来更智能、便捷和高效的生活体验。为了加速人工智能的商用落地,华为联合伙伴发布了系列AI新新人类,致力于推动场景化大模型的应用和发展。这一系......
  • HarmonyOS非线性容器特性及使用场景
     非线性容器实现能快速查找的数据结构,其底层通过hash或者红黑树实现,包括HashMap、HashSet、TreeMap、TreeSet、LightWeightMap、LightWeightSet、PlainArray七种。非线性容器中的key及value的类型均满足ECMA标准。HashMapHashMap可用来存储具有关联关系的key-value键值对集......
  • Git/TortoiseGit冲突:commit your changes or stash them before you can merge[解决之
    最近在pull代码时,遇到了‘commityourchangesorstashthembeforeyoucanmerge’的提示,针对此问题,我查阅了大量的资料,得到了解决办法,给大家分享下问题:在你mergeorchangemaster前,提交你的改变,或者存储改变。问题原因:上次commit后,代码发生了新的变化,如果merge或者change......
  • HarmonyOS线性容器特性及使用场景
    线性容器实现能按顺序访问的数据结构,其底层主要通过数组实现,包括ArrayList、Vector、List、LinkedList、Deque、Queue、Stack七种。线性容器,充分考虑了数据访问的速度,运行时(Runtime)通过一条字节码指令就可以完成增、删、改、查等操作。ArrayListArrayList即动态数组,可用来构造全局......
  • [892] Change the background color of a table in a Word document
    ref:python-docxChangingTableCellBackgroundColor.TochangethebackgroundcolorofatableinaWorddocumentusingPython,youcanusethepython-docxlibrary,whichallowsyoutocreateandmodifyWorddocumentsprogrammatically.Here'show......
  • resttemplate exchange方法,两种用法结果不一样
    有问题的代码importorg.springframework.http.*;importorg.springframework.web.client.RestTemplate;importjava.net.URI;importjava.util.Arrays;/***<p>Title:</p>*<p>Description:</p>**@authorzhanghong*@date2023/9/27*......