当前位置: 首页 > news >正文

In-memory不要全加载怎么做?

In-memory这个功能都有十多年了

  • 大家都知道alter table t INMEMORY,这一个命令就让Oracle数据库实现了行列混存。没什么特别的点。
  • 但是最近我遇到了一个问题,就是需要部分列加载

有些问题深耕一下会发现不一样的

  • 为什么要深耕一下?是因为我要加载部分列。
  • 为什么不全部加载?那是因为内存有限。一个表中仅仅有2-3个字段需要聚合。全部加载浪费内存。
  • 全部加载会很大吗?会的,当你见过一个表有200个字段或者400个字段的时候你就明白了。实际用到的聚合字段连百分之一都不到。

实验先说全部加载(好和后面部分加载对比)

  • 做两个从表结构到数据一模一样的表

  • image.png

  • 开始查询表未以列式存储加载到内存中

  • USED_BYTES是0

    image.png

  • 执行一个命令把full表全部加载

  • alter table FULL inmemory;

  • 然后观看执行计划已经识别到了(而且在 v$im_column_level 的数据字典中都看到5列全部识别)

    image.png

  • 但是其实并没有加载到内存(可以看到实际占用还是0)

  • image.png

  • 需要触发一下。

  • 比如执行一个select * from FULL;

  • 可以看到USED_BYTES在不断变化。OPULATE_STATUS也在变化,直到加载完毕。我把这个过程记录了下来。

  • Oracle就是一定要触发一下。

    image.png

  • 执行一下,需要50毫秒就完成了。900万数据聚合。

  • image.png

实验说明如何部分加载

  • 这次另外建立一个表big
  • 要执行两步,第一步加载表,第二步指明那些要,哪些不要。(其实看到这两步,我就明白了,为什么Oracle设计为什么要手工触发再加载。因为如果一个命令就加载,那么要做排除的话,还要把刚才加载的做卸载,很多就白做了)
  • alter table big inmemory;
  • alter table big no inmemory (id,name,time,m) inmemory (n);

image.png

  • 手工执行触发一下。

image.png

两者对比

  • full表执行count(*)和 sum(n)任意一列都可以用到列存计算

  • image.png

  • big表执行sum(n)可以用到列存计算而执行 sum(n)不可以,因为m列没有加载

  • image.png

  • 查询数据字典也可以看到两者占内存大小不一样

  • image.png

http://www.lryc.cn/news/610762.html

相关文章:

  • 基于LDA主题的网络舆情与情感分析——以云南某景区话题为例
  • 本机部署K8S集群
  • 基于k8s环境下的pulsar常用命令(上)
  • mq_open系统调用及示例
  • ubutnu20.04更新源报错:E:...签名不再生效
  • C语言学习笔记——动态内存分配
  • 备忘录记事本 任务清单 html
  • 手动开发一个TCP服务器调试工具(一):基础知识与核心类接口
  • HTML 如何转 Markdown
  • 【qt5_study】2.使用Qt Designer构造UI界面(信号与槽)
  • 16核32G硬件服务器租用需要多少钱
  • 工业级 CAN 与以太网桥梁:串口服务器CAN通讯转换器深度解析(下)
  • 前端实用工具方法 —— 持续更新中...
  • GPT-5的诞生之痛:AI帝国的现实危机
  • 前端权限设计
  • 云手机的主要功能都包含哪些?
  • MoonBit 月兔 - 云和边缘计算 AI云原生编程语言及开发平台
  • LangChain入门:代理、链、索引
  • WIN QT libsndfile库编译及使用
  • 【教程】Unity AssetBundle 资源管理方法
  • STM32F407VET6学习笔记10:移植smallmodbus
  • 【LeetCode 热题 100】347. 前 K 个高频元素——(解法一)排序截取
  • Redis类型之String
  • 【npm 解决】---- TypeError: crypto.hash is not a function
  • GPS信号捕获尝试
  • 【机器学习深度学习】模型剪枝
  • Python包安全工程实践:构建安全可靠的Python生态系统
  • 【学习笔记】NTP时间同步验证
  • 期权定价全解析:从Black-Scholes到量子革命的金融基石
  • Linux 逻辑卷管理:LVM 原理与 Stratis、VDO 特性对比