【数据库】Oracle内存结构与参数调优

Oracle内存结构与参数调优

    • Oracle 内存结构概览
    • oracle参数配置概览
      • 重要参数(系统运行前配置):
      • 次要参数(可在系统运行后再优化调整):
    • Oracle数据库服务器参数如何调整
      • OLTP内存分配
      • 操作系统核心参数配置
      • Disabling ASMM(禁用自动共享内存管理)
      • PGA(Program Global Area)
      • PGA_AGGREGATE_TARGET
      • PROCESSES
      • OPEN_CURSORS & SESSION_CACHED_CURSORS
      • 不用重新启动而修改初始参数文件
      • 启动大页(vm.nr_hugepages)

Oracle 内存结构概览

oracle 体系结构:
在这里插入图片描述
Oracle 内存结构:
在这里插入图片描述

  • System Global Area (SGA,系统全局区)
    • Share Pool (共享池)
    • Database Buffer Cache (数据库缓冲区缓存)
    • Redo Log Buffer (重做日志缓冲区)
    • Large Pool (大池)
    • Java Pool(Java池)
    • Streams Pool(流池)
    • Fixed SGA(固定SGA区域)
  • Program Global Area (PGA,程序全局区域)
    • User Global Area(UGA,用户全局区域)
      • Cursor Area(游标区)
      • User Session Data Storage_Area (用户会话数据存储区)
      • SQL Work Areas(SQL工作区)
        • 1). Sort Area(排序区)
        • 2). Hash Area(哈希区)
        • 3). Create Bitmap Area(位图索引创建区)
        • 4). Bitmap Merge Area (位图索引融合区)
    • Stack Space(堆栈空间)

oracle参数配置概览

重要参数(系统运行前配置):

带MAX的参数不能在线修改,需要重启后才生效,所以一定要提前规划好

  1. 内存管理参数:
    MEMORY_MAX_TARGET(11g): 定义了Oracle数据库实例允许使用的最大内存量,包括SGA和PGA。动态调整可用内存,无需重启实例。
    MEMORY_TARGET(11g): 指定数据库实例使用的内存目标,包括SGA和PGA。与MEMORY_MAX_TARGET结合使用,实现动态内存管理。

  2. SGA参数: SGA_TARGET(10g): 自动管理SGA的总内存大小,包括共享池、数据缓存等。通过自动调整子组件大小,适应变化的工作负载需求。

  3. PGA参数:PGA_AGGREGATE_TARGET(9i): 指定PGA的目标大小,由系统动态调整,根据工作负载需求自动分配内存给各个会话的PGA。

  4. 数据缓存参数:DB_CACHE_SIZE(10g): 指定数据库缓存的大小,用于缓存数据块,影响数据的读取性能。

  5. 共享池参数:SHARED_POOL_SIZE(10g): 定义共享池的大小,用于缓存SQL语句、PL/SQL块和执行计划。影响SQL执行性能。

  6. 连接和进程参数:
    PROCESSES(10g): 控制并发用户连接的最大数量。
    OPEN_CURSORS(10g): 设置一个会话可以打开的最大游标数。
    SESSION_CACHED_CURSORS(10g): 缓存在会话中的游标数,减少游标重新解析的开销。

在这里插入图片描述
在这里插入图片描述

次要参数(可在系统运行后再优化调整):

  1. 大池参数: LARGE_POOL_SIZE: 用于备份和并行操作的大型I/O的合并。适用于特定工作负载需求。

  2. Java虚拟机参数: JAVA_POOL_SIZE: 指定Java虚拟机使用的内存大小。影响Java相关操作的性能。

  3. 数据流参数: STREAMS_POOL_SIZE: 为Oracle Streams提供的内存池,用于处理数据流操作。

  4. 保留缓存参数: DB_KEEP_CACHE_SIZE: 为频繁访问的对象提供的保留缓存,提高这些对象的性能。

  5. 循环缓存参数:DB_RECYCLE_CACHE_SIZE: 为一次性或不经常访问的对象提供的循环缓存。

  6. 日志缓冲区参数: LOG_BUFFER: 控制数据库日志缓冲区的大小,适应不同的日志写入需求。

  7. 结果缓存参数: RESULT_CACHE_SIZE: 指定结果集缓存的大小,用于缓存SQL查询结果,提高重复查询性能。

  8. 自动PGA管理: PGA_AGGREGATE_LIMIT(11g R2以后):指定PGA的硬限制,防止PGA使用过多内存。

  9. 自动诊断和调整:
    ADDM(Automatic Database Diagnostic Monitor):自动数据库诊断监控,提供关于性能问题和建议的报告。
    AWR(Automatic Workload Repository):自动工作负载存储库,用于存储性能统计信息。

  10. SQL执行计划管理:
    OPTIMIZER_CAPTURE_SQL_PLAN_BASELINES:启用或禁用自动捕获SQL执行计划基线的功能。
    OPTIMIZER_USE_SQL_PLAN_BASELINES:启用或禁用使用SQL执行计划基线的功能。

  11. 自动调整:ADAPTIVE_PLAN_MANAGEMENT:启用或禁用自适应计划管理,允许数据库自动调整执行计划。

  12. 分区表和分区索引:
    PARTITION_TABLE:用于启用或禁用分区表。
    PARTITION_INDEX:用于启用或禁用分区索引。

  13. 数据压缩: COMPATIBLE:指定数据库版本,决定数据库是否支持特定的功能,例如表级数据压缩。

  14. 连接管理:SHARED_SERVERS:指定共享服务器的数量,用于连接管理。

  15. 并行执行:
    PARALLEL_DEGREE_POLICY:用于设置并行度策略,可以是 MANUAL(手动)或 AUTO(自动)。
    PARALLEL_MIN_SERVERSPARALLEL_MAX_SERVERS:用于设置最小和最大并行服务器的数量。

  16. 数据库缓存: DB_nK_CACHE_SIZE:根据不同块大小设置数据库缓存大小。

  17. RAC (Real Application Clusters) 参数:
    CLUSTER_DATABASE_INSTANCES:指定在RAC环境中的数据库实例数量。
    CLUSTER_DATABASE:用于启用或禁用RAC功能。

Oracle数据库服务器参数如何调整

以 IBM3850 服务器为例,在安装好oracle软件且数据库建好之后,投入使用之前需要调整好相关参数

  • CPU数量:4颗
  • 内存容量:64G
    请添加图片描述

OLTP内存分配

  1. 工作区(Work Area,排序、Hash Join、位图连接):6G
    在OLTP(联机事务处理)环境下,数据库工作区用于临时存放排序、哈希连接、位图连接等操作产生的中间数据。这里的6GB是指为这些操作预留的内存空间,确保在处理复杂查询时有足够的内存供运算使用,减少对磁盘I/O的需求,从而提高系统性能。

  2. Oracle服务器进程:一个连接 5M~10M,processes参数 * 10M,2000 * 10M=20G
    在Oracle数据库中,每个客户端连接都会对应一个服务器进程。这里假定每个服务器进程需要5MB至10MB的内存。如果数据库参数processes设置为可以同时接受2000个并发连接,那么所有服务器进程所需的总内存大约在10M * 2000 = 20GB左右。这部分内存是为了支持并发用户的活动,包括处理SQL查询、事务管理等操作。

  3. OS系统自用:6G
    这里的6GB内存是留给操作系统自己使用的,包括内核内存、缓存、以及其他系统组件的内存需求。这部分内存确保操作系统稳定运行,并可以处理各种系统级别的任务。

  4. SGA = 64 - 6G - 20G - 6G = 32G
    SGA(系统全局区)是Oracle数据库中用于存储共享数据结构的一个内存区域,包括数据缓冲区、重做日志缓冲区、共享池、大池等。根据给定的内存分配,64GB总内存减去工作区的6GB、服务器进程所需的20GB以及系统自用的6GB之后,剩余的32GB内存会被分配给SGA,以确保数据库的高效运作。

操作系统核心参数配置

cp /etc/sysctl.conf /etc/sysctl.conf.bak  # 将当前的sysctl配置文件做一个备份,以防万一需要回滚MemTotal=`grep MemTotal /proc/meminfo | awk '{print $2}'`  # 从/proc/meminfo中提取系统总的内存大小(以KB为单位)
PAGE_SIZE=`getconf PAGE_SIZE`  # 获取操作系统中一页内存的大小(以字节为单位)shmmax=`expr $MemTotal \* 1024`  # 根据总内存大小计算 shmmax 参数的最大值,此处将其设为总内存的四倍(转换为KB后再乘以1024转为字节)
shmall=`expr $shmmax / $PAGE_SIZE`  # 计算 shmall 参数的值,表示系统范围内共享内存段的总页数上限,这里的计算方法是将 shmmax 值除以一页的大小得出cat >> /etc/sysctl.conf << EOF  # 向sysctl配置文件追加以下配置项
fs.file-max = 6815744  # 设置系统允许的最大文件句柄数
kernel.sem = 10000 10240000 10000 1024  # 设置信号量参数,分别代表SEMMSL(一个信号集中的信号量最大数)、SEMMNS(系统信号量总数)、SEMOPM(一次操作中的信号量操作数)、SEMMNI(系统信号集总数)
kernel.shmmni = 4096  # 设置系统范围内共享内存段标识符的最大数目
kernel.shmall = $shmall  # 设置共享内存段页数上限,参考前面计算的结果
kernel.shmmax = $shmmax  # 设置共享内存段的最大大小,参考前面计算的结果
net.ipv4.ip_local_port_range = 9000 65500  # 设置本地TCP/UDP端口范围
net.core.rmem_default = 16777216  # 设置接收缓冲区的默认大小
net.core.rmem_max = 16777216  # 设置接收缓冲区的最大大小
net.core.wmem_max = 16777216  # 设置发送缓冲区的最大大小
net.core.wmem_default = 16777216  # 设置发送缓冲区的默认大小
fs.aio-max-nr = 6194304  # 设置异步I/O请求数量上限
vm.dirty_ratio=20  # 设置脏页比例阈值,当系统中脏页占总内存的比例超过这个值时,开始写入磁盘
vm.dirty_background_ratio=3  # 设置后台脏页刷新比率,后台线程开始刷新脏页前,系统中脏页占总内存的比例
vm.dirty_writeback_centisecs=100  # 设置脏页写回时间间隔(以百分秒计)
vm.dirty_expire_centisecs=500  # 设置脏页过期时间间隔(以百分秒计)
vm.swappiness=10  # 控制系统换出内存到硬盘的速度,值越低,尽量避免换出,值越高,倾向于换出
vm.min_free_kbytes=524288  # 设置系统试图保留的最小空闲内存(以KB为单位)
net.core.netdev_max_backlog = 30000  # 设置网络设备接收数据包的最大队列长度
net.core.netdev_budget = 600  # 设置每次软中断处理的数据包数量
net.ipv4.conf.all.rp_filter = 2  # 开启IPv4反向路径过滤(RFC 3704),防止IP欺骗攻击
net.ipv4.conf.default.rp_filter = 2  # 对新建的网络接口开启默认的反向路径过滤# vm.nr_hugepages =16384 # 若物理内存太小(<64G),则不需要开启大页,可以直接注释掉该行
# 注意:此处暂时先注释掉,后面启动大页会解释,需要根据实际需求和内存使用情况决定是否启用和设置正确的 HugePages 数量
EOF# 配置生效
sysctl -p  # 执行sysctl命令使得配置文件中所做的更改立即生效#kernel.shmall:系统任意时刻可以分配的所有共享内存段的总和的最大值(以页为单位),其值应不小于shmmax/page_size,推荐设置为物理内存大小除以分页大小。
#kernel.shmmax:单个内存段最大,设置为内存大小

Disabling ASMM(禁用自动共享内存管理)

  • SGA_TARGET 设置为0时,将禁用自动调优
  • 自动调优参数设置为当前大小
  • SGA的大小作为一个整体不受影响

在这里插入图片描述

PGA(Program Global Area)

PGA是Oracle数据库中每个服务器进程独有的内存区域,用于存储会话数据、排序区、临时变量以及其他与特定会话相关的数据结构。

PGA_AGGREGATE_TARGET

  • 在OLTP系统中,典型PGA内存设置应该是总内存(物理内存)的较小部分(例如20%),剩下80%分配给SGA 。OLTP:PGA_AGGREGATE_TARGET = (total_mem * 80%) * 20%
  • 在DSS系统中,由于会运行一些很大的查询,典型的PGA内存最多分配70%的内存。DSS:PGA_AGGREGATE_TARGET = (total_mem * 80%) * 50%
  • 设置 PGA 自动分配
alter system set workarea_size_policy = auto scope = both;
alter system set pga_aggregate_target = 2048M scope = both;
show parameter pga
show parameter area
show parameter work
  • 监控 PGA
select * from v$pgastat;
# 看 over allocation count(排序时,PGA不够用时需要换页,这个值就是换页次数):如果=0 就正常 PGA够用;若 >0 则PGA不够用需要调整

PROCESSES

  • 在Oracle数据库中,设置参数 PROCESSES 和 SESSIONS 是非常重要的,以确保系统能够处理足够的并发连接。这只是一个基本的起点,实际的设置应该根据你的具体应用、系统硬件和负载情况来调整。建议在设置参数之前先进行性能测试,确保系统能够处理预期的并发连接数。
    典型的设置是:
    10g: sessions = processes + 10% * processes + 5
    11g+: sessions = processes + 15 % * processes + 22
  • 查看内存使用情况
select p.spid from v$session s,v$process p where p.addr=s.paddr and s.sid in (select sid from v$mystat where rownum=1);
select pga_used_mem,pga_alloc_mem,pga_freeable_mem from v$process where spid = &spid;
  • Processes参数优化
create pfile='/tmp/pfileORCL_20240307.ora' from SPFILE; --备份配置文件
alter system set processes = 200 scope = spfile; 

OPEN_CURSORS & SESSION_CACHED_CURSORS

  • OPEN_CURSORS
    • 指定了保存(打开)用户语句的专用区域的大小。如果获得“ORA-01000:maximun open cursors exceeded” 错误,则可能需要增大该参数,但是要确保关闭不在需要的游标。
    • 如果 OPEN_CURSORS 设置得过高,则有时也会造成问题:ORA-4031错误(共享池)
  • SESSION_CACHED_CURSORS
    • 不要将参数 SESSION_CACHED_CURSORS 设置的和 OPEN_CURSORS 一样高,否则就可能产生 ORA-4031 或 ORA-7445 错误(软软解析)

不用重新启动而修改初始参数文件

  1. spfile<SID>.ora (大部分不需要重启)
  2. spfile.ora (用的少)
  3. init<SID>.ora (一定要重启)
  4. v$parameter 视图
    ISSES_MODIFIABLE 表名拥有 ALTER SESSION 特权的用户是否可以修改这个参数
    ISSYS_MODIFIABLE 表名拥有 ALTER SYSTEM 特权的用户是否可以修改这个参数

启动大页(vm.nr_hugepages)

什么是大页?
在操作系统层面,默认情况下内存页大小通常为4KB。大页是一种内存管理机制,将标准内存页尺寸增大,例如从4KB改为2MB。使用大页可以减少TLB(Translation Lookaside Buffer)未命中的情况,从而降低页交换频率和I/O开销,提高系统的性能,特别是在大规模内存管理和Oracle数据库等场景下。

什么时候需要启动大页?
当服务器物理内存>=64GB,启用大页可以带来显著的性能提升。

如何启动大页?

  1. 关闭Oracle Database中的AMM(Automatic Memory Management)
    如果尚未手动管理内存,请确保禁用自动内存管理功能。

  2. 计算hugepages的大小
    根据SGA_MAX_SIZE的值来决定hugepages的数量。hugepages的总量应略大于SGA的需求量,同时也要注意避免过大导致内存浪费。例如,如果SGA_MAX_SIZE为32G,而每个大页是2MB,那么至少需要16384个大页(32GB / 2MB)。

  3. 设置hugepages
    编辑内核参数文件/etc/sysctl.conf,加入以下行:

    vi /etc/sysctl.conf
    vm.nr_hugepages = 16384 #<计算得出的大页数量>
    

    然后执行 sysctl -p 命令使更改生效。

  4. 设置用户进程内存锁定限制
    /etc/security/limits.conf文件中为Oracle数据库用户设置内存锁定限制,确保其能够锁定足够大的内存以支持大页。

    [root@mydb ~]# vi /etc/security/limits.conf
    oracle soft memlock 2056000
    oracle hard memlock 2056000
    
  5. 重启数据库
    重启Oracle数据库以便新的内存设置生效。

  6. 查看大页使用情况
    使用如下命令实时监控大页的使用情况:

    [root@mydb ~]# watch -n1 'cat /proc/meminfo | grep -i HugePages'
    
  7. 设置pre_page_sga参数
    需要在数据库实例启动前预分配并初始化SGA,以利用大页优化性能:

    alter system set pre_page_sga = true scope = spfile;
    

参考链接:

  • Oracle 23c 官方文档
  • 【Oracle】内存结构详解(万字长文,建议收藏,蚕食为佳)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/274712.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【图文详解】Maven Helper插件解决Maven冲突

文章目录 插件问题解决过程 在面试中解决问题的能力和思路是考察的重点&#xff0c;面试官问会问我们有没有解决过maven冲突。以下造了一个maven冲突&#xff0c;手把手教学如何解决Maven冲突。 插件 插件在idea插件中搜索Maven Helper 问题 解决过程 根据上面日志知道是log…

让生活更加精致的APP?

晚上好&#xff0c;今天博主来介绍几款帮助你条理生活的APP&#xff0c;让你的生活更加精致&#xff0c;充满仪式感。 一&#xff0e;格志日记 一款以“格子”的方式记录日记的APP&#xff0c;非常简单明了&#xff0c;用户可以依据自己的喜好&#xff0c;来自由定义或者删除格…

力扣刷题Days16(js)-67二进制求和

目录 1,题目 2&#xff0c;代码 2.1转换进制数 2.2模拟加法 3&#xff0c;学习与总结 Math.floor() 模拟加法思路回顾 重点复习巩固 模拟加法的思路和学习位运算&#xff1b; 今天没精力了&#xff0c;先休息 1,题目 给你两个二进制字符串 a 和 b &#xff0c;以二进制…

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的手写数字和符号识别(深度学习训练+UI界面+训练数据集)

摘要&#xff1a;开发手写数字和符号识别对于智能交互系统具有关键作用。本篇博客详细介绍了如何运用深度学习构建一个手写数字和符号识别&#xff0c;并提供了完整的实现代码。该系统基于强大的YOLOv8算法&#xff0c;并对比了YOLOv7、YOLOv6、YOLOv5&#xff0c;展示了不同模…

四元数(Quaternion)的一些性质

四元数(Quaternion)是用于三维旋转和定向的四部分组成的超复数&#xff0c;超复数简单理解就是比abi这样的复数更复杂的复数&#xff0c;其中abi这样的复数我们也可以叫做二元数&#xff0c;表示复平面的一点&#xff0c;对于熟悉欧拉公式的朋友就知道&#xff0c;也可以看成是…

LeetCode 每日一题 Day 95-101

2917. 找出数组中的 K-or 值 给你一个整数数组 nums 和一个整数 k 。让我们通过扩展标准的按位或来介绍 K-or 操作。在 K-or 操作中&#xff0c;如果在 nums 中&#xff0c;至少存在 k 个元素的第 i 位值为 1 &#xff0c;那么 K-or 中的第 i 位的值是 1 。 返回 nums 的 K-o…

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的田间杂草检测系统(深度学习模型+UI界面+Python代码+训练数据集)

摘要&#xff1a;开发用于田间杂草识别的系统对提高农业运营效率和提升作物产出至关重要。本篇文章详尽阐述了如何应用深度学习技术开发一个用于田间杂草识别的系统&#xff0c;并附上了完备的代码实现。该系统基于先进的YOLOv8算法&#xff0c;并对比了YOLOv7、YOLOv6、YOLOv5…

【c 语言 】位操作符详解

&#x1f388;个人主页&#xff1a;豌豆射手^ &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;C语言 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进步&…

20240312-1-Graph(图)

Graph(图) 在面试的过程中,一般不会考到图相关的问题,因为图相关的问题难,而且描述起来很麻烦. 但是也会问道一下常见的问题,比如,最短路径,最小支撑树,拓扑排序都被问到过. 图常用的表示方法有两种: 分别是邻接矩阵和邻接表. 邻接矩阵是不错的一种图存储结构,对于边数相对顶点…

【机器学习300问】33、决策树是如何进行特征选择的?

还记得我在【机器学习300问】的第28问里谈到的&#xff0c;看决策树的定义不就是if-else语句吗怎么被称为机器学习模型&#xff1f;其中最重要的两点就是决策树算法要能够自己回答下面两问题&#xff1a; 该选哪些特征 特征选择该选哪个阈值 阈值确定 今天这篇文章承接上文&…

学习 考证 帆软 FCP-FineBI V6.0 考试经验

学习背景&#xff1a; 自2024年1月起&#xff0c;大部分时间就在家里度过了&#xff0c;想着还是需要充实一下自己&#xff0c;我是一个充满热情的个体。由于之前公司也和帆软结缘&#xff0c;无论是 Fine-Report 和 Fine-BI 都有接触3年之久&#xff0c;但是主要做为管理者并…

第四弹:Flutter图形渲染性能

目标&#xff1a; 1&#xff09;Flutter图形渲染性能能够媲美原生&#xff1f; 2&#xff09;Flutter性能优于React Native? 一、Flutter图形渲染原理 1.1 Flutter图形渲染原理 Flutter直接调用Skia 1&#xff09;Flutter将一帧录制成SkPicture&#xff08;skp&#xff…

55. 跳跃游戏(力扣LeetCode)

文章目录 55. 跳跃游戏贪心每一次都更新最大的步数 取最大跳跃步数&#xff08;取最大覆盖范围&#xff09; 55. 跳跃游戏 给你一个非负整数数组 nums &#xff0c;你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后…

【案例】IPC 中的WinCC RT Advanced PC项目,如何下载及开机自动启动?

导读&#xff1a;TIA WinCC Advanced (高级版)V17项目如何下载到目标计算机&#xff08;需要运行项目的电脑&#xff09;&#xff1f; 01WinCC RT Adv项目下载 1、在计算机开始菜单中点击“运行”或通过Win键R调出运行窗口&#xff0c;并输入 CMD 然后回车&#xff1a; 打开 W…

漏洞发现-漏扫项目篇NucleiYakitGobyAfrogXrayAwvs联动中转被动

知识点 1、综合类-Burp&Xray&Awvs&Goby 2、特征类-Afrog&Yakit&Nuclei 3、联动类-主动扫描&被动扫描&中转扫描 章节点&#xff1a; 漏洞发现-Web&框架组件&中间件&APP&小程序&系统 扫描项目-综合漏扫&特征漏扫&被动…

LED基础知识分享(一)

大家好&#xff0c;我是砖一。 今天给大家分享一下&#xff0c;LED的基础知识&#xff0c;有照明行业&#xff0c;或者对LED感兴趣的朋友&#xff0c;可以学习一下&#xff0c;希望对你有用~ 一&#xff0c;什么是LED (Light Emitting Diode)? 1&#xff0c;LED是一种发出某…

使用Flask快速搭建轻量级Web应用【第127篇—Flask】

使用Flask快速搭建轻量级Web应用 在Web开发领域&#xff0c;选择适合项目需求的框架至关重要。Flask&#xff0c;一个轻量级的Python Web框架&#xff0c;以其简洁、灵活和易扩展的特性而备受开发者青睐。本文将介绍如何使用Flask迅速搭建一个轻量级的Web应用&#xff0c;并通过…

【测试开发学习历程】Linux用户管理+文件权限管理

目录 一、用户管理 &#xff08;一&#xff09;用户和用户组的基本概念 1.概念 2.设置原因 3.用户与用户组的关系 4.用户类型 &#xff08;二&#xff09;用户的创建、修改属性和删除用户 1.用户信息文件 2.创建用户 3.修改用户密码 4.修改用户信息 5.用户查询 6.…

Hive面经

hive原理 Hive 内部表和外部表的区别Hive 有索引吗运维如何对 Hive 进行调度ORC、Parquet 等列式存储的优点数据建模用的哪些模型&#xff1f;1. 星型模型2. 雪花模型3. 星座模型 为什么要对数据仓库分层&#xff1f;使用过 Hive 解析 JSON 串吗sort by 和 order by 的区别数据…

Windows®、Linux® 和 UNIX® 系统都适用的远程桌面工具 OpenText ETX

Windows、Linux 和 UNIX 系统都适用的远程桌面工具 OpenText ETX 为 Windows、Linux 和 UNIX 实施精益、经济高效的虚拟化&#xff1b;提供完整的远程 Windows 可用性&#xff1b;以类似本地的性能远程工作&#xff1b;安全地保护系统和知识产权&#xff08;IP&#xff09;&am…