Oracle 高级网络压缩 白皮书

英文版白皮书在这里 或 这里。

本文包括了对英文白皮书的翻译,和我觉得较重要的要点总结。

执行概述

Oracle Database 12 引入了一项新功能:高级网络压缩,作为高级压缩选项的一部分。 本文概述了高级网络压缩、其优点、配置细节和性能分析。

简介

数据压缩技术提供了一种将数据转换为较小尺寸的替代数据格式的方法。 这些技术可用于在发送端压缩要通过网络传输的数据,然后在接收端转换回原始数据以减少网络流量。

高级网络压缩可减少通过数据连接传输的 Oracle Net 会话数据单元 (SDU) 的大小,从而减少传输 SDU 所需的时间。 这对于客户端应用程序和服务器进程来说仍然是透明的。

使用高级网络压缩的一些好处包括:

  • 提高有效网络吞吐量:压缩可以在更短的时间内传输大型数据集。 由于传输时间减少,SQL 查询响应速度更快,尤其是在带宽受限的环境中。

  • 降低带宽利用率:压缩通过减少要传输的数据量来节省带宽,从而允许其他应用程序使用它。 这也有助于减少提供网络带宽的成本。

启用高级网络压缩的参数

本节提供配置详细信息以启用客户端服务器数据库连接的压缩。 压缩选项涉及在双方启用该选项之前在连接建立时客户端和服务器之间的协商。

在 sqlnet.ora 中

压缩参数可以在 sqlnet.ora 文件中配置,该文件同时驻留在客户端和数据库服务器上。 压缩参数包括:

  1. SQLNET.COMPRESSION:
    将此参数设置为 ON 或 OFF 可启用或禁用该环境的压缩选项。 该参数的默认值为“OFF”。
    该选项是在连接建立时在客户端和服务器之间协商的,如果客户端和服务器都将其设置为ON,则该连接将使用压缩。
    例如,
SQLNET COMPRESSION = on
  1. SQLNET.COMPRESSION_LEVELS:
    根据要求指定低和高两个压缩级别。 LOW 级别使用较少的 CPU,但提供较低的压缩比,而 HIGH 级别使用更多的 CPU,并提供较高的压缩比。
    一般来说,我们认为 LOW 级别在 CPU 使用率和压缩比之间提供了良好的权衡。 因此,该参数的默认设置为 LOW。
    压缩级别在连接建立时使用,以验证两端使用哪些级别,并选择公共的级别。
    例如,
SQLNET COMPRESSION_LEVELS = (low, high)
  1. SQLNET.COMPRESSION_THRESHOLD
    此参数可用于指定应执行压缩的最小数据大小(以字节为单位)。 如果 SDU 的大小小于此值,则不会对该 SDU 执行压缩。 该参数的默认值为 1024 字节。
    例如,
SQLNET COMPRESSION_THRESHOLD = 2048

在 tnsnames.ora 中

客户端还可以通过单个连接的网络描述符启用压缩并指定压缩级别。 以下参数可在 tnsnames.ora 中单个 t 字符串的描述级别设置。

  1. COMPRESSION
  2. COMPRESSION_LEVELS
    COMPRESSION_LEVELS 是可选参数,如果不指定,则使用 LOW 级别。 COMPRESSION 参数的默认值为 OFF。

例如,

net_service_name=
(DESCRIPTION=
(COMPRESSION=on)
(COMPRESSION_LEVELS=(LEVEL=low)(LEVEL=high))
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=tcp)(HOST=sales1-server)(PORT=1521))
(ADDRESS=(PROTOCOL=tcp)(HOST=sales2-server)(PORT=1521)))
(CONNECT_DATA=
(SERVER_NAME=sales us example com)))

如果在连接描述符级别设置参数,则它们优先于 sqlnet.ora 中指定的值。

网络性能分析

本节评估不同带宽条件下典型 SQL 查询的压缩对网络性能的影响。 为了比较网络性能,传输相同数据集的总时间(SQL 查询响应时间)被用作性能指标。

使用文本数据进行实验
一个包含 4 列和 26,516 行的表,每行包含大约 10KB 的文本
数据存储在数据库中。 客户端使用 SQL 查询“select * from table”来获取全表数据。 数组大小设置为 5000。在此设置中,客户端和服务器之间的网络往返时间 (RTT) 为 37 毫秒。 实时测量从服务器接收数据的总时间并将其用作性能指标。

在这里插入图片描述

图 1:查询响应时间与网络带宽(文本数据)

使用混合数据进行实验

数据库服务器中存储了一个包含 5 列和 100 万行的表,每行包含 50 字节的混合字符和数字数据。 客户端使用 SQL 查询“select * from table”来获取全表数据。 数组大小设置为 5000。
此设置中客户端和服务器之间的网络往返时间 (RTT) 为 37 毫秒。 从服务器接收数据的总时间是实时测量的,并用作性能指标。

在这里插入图片描述

图 2:查询时间与网络带宽(混合数据)

这些数字表明压缩打开(低和高)和关闭时 SQL 查询响应时间的性能差异。 与不使用压缩相比,使用压缩的 SQL 查询响应速度更快。 随着带宽越低,压缩的效果就越明显。

高级网络压缩的建议

启用压缩可能并不总是能提高性能,并且会受到多种因素的影响。 本节提供有关高级网络压缩何时提高性能的指南。

仅当要传输的数据的生成速率高于网络上发送数据的速率时,才可以使用网络压缩来增加有效的网络吞吐量。 这是因为,当带宽较高时,网络不会阻塞任何数据,所获得的吞吐量相当于数据的生成速率。

当用于大型结果集时,高级网络压缩的性能更高。 当要发送的数据较小时应避免使用它,因为它只会增加额外的 CPU 开销,并且对网络吞吐量的影响可以忽略不计。

CPU 利用率随着压缩而增加,因此每当使用压缩时,建议使用更快的 CPU。 CPU 速度越快,压缩速度就越快,性能增益就越高。

性能增益还取决于发送数据的压缩比。 压缩率取决于数据的性质。 文本数据通常比二进制或已经压缩的数据(例如图像或电影文件)更可压缩。

配置压缩时应谨慎考虑上述所有因素。

结论

高级网络压缩不仅使 SQL 查询响应更快,而且还节省带宽。 此功能对于客户端应用程序和服务器进程是透明的。 当用于具有快速 CPU 的主机之间的低带宽连接时,它可以显着提高性能。

要点总结

  • 高级网络压缩的好处是:减少局域网 (LAN) 和广域网 (WAN) 环境中的网络延迟并提高性能。
  • 高级网络压缩包含在高级压缩选件中,因此需要Oracle企业版。
  • 高级网络压缩可以在3个级别启用,我觉得范围越广越少用:
    • (1) 连接级别(连接字符串、URL)
    • (2) 服务级别(tnsnames.ora、ldap.ora)
    • (3) 数据库级别 (sqlnet.ora)。

参考

  • Advanced Network Compression – A Lessor-Known Feature of Advanced Compression
  • Oracle Database Features
  • SQLNET.COMPRESSION

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C# 线程本地存储 为什么线程间值不一样

一:背景 1. 讲故事 有朋友在微信里面问我,为什么用 ThreadStatic 标记的字段,只有第一个线程拿到了初始值,其他线程都是默认值,让我能不能帮他解答一下,尼玛,我也不是神仙什么都懂&#xff0c…

Dockerfile中CMD命令的用法,你了解几个?

文章目录 1.问题描述2.解决方法3.问题原因分析4.CMD常见的用法4.1 执行应用程序4.2 使用 Shell 执行命令4.3 定义环境变量 5.最佳实践 1.问题描述 今天在进行业务调试时, 发现调试的java应用所在的容器无限重启,经过排查发现问题出在Dockerfile 文件中的CMD命令上&…

设计模式下

一、代理模式 一、概念 代理模式就是给一个对象提供一个代理,并由代理对象控制对原对象的引 用。它使得客户不能直接与真正的目标对象通信。代理对象是目标对象的代表, 其他需要与这个目标对象打交道的操作都是和这个代理对象在交涉。 例如:去…

安装 nvm

前言: nvm 即 node 版本管理工具 (node version manager),好处是方便切换 node.js 版本。 通过将多个 node 版本安装在指定路径,然后通过 nvm 命令切换时,就会切换我们环境变量中 node 命令指定的实际执行的软件路径。 使用场景…

Selenium自动化测试之学会元素定位

这是我经常被问到的一个问题,也是我很讨厌回答的问题,因为要想回答这个问题需要知道上下文。什么样式的元素,有哪些属性,是否有表单嵌套,都尝试了哪些定位方法。。。而且没几个提问者能事先详细的说明这些。哪儿像提bu…

宠物互联网医院系统:数字化呵护你爱宠的新时代

宠物互联网医院系统正在为宠物主人提供一种前所未有的数字化健康护理体验。通过结合创新技术,这一系统旨在让宠物医疗变得更加便捷、智能和个性化。让我们深入探讨宠物互联网医院系统的技术核心,以及如何应用代码为你的爱宠提供最佳关怀。 1. 远程医疗…

操作系统-进程控制(如何实现进程控制 如何实现原子性 相关进程控制原语)

文章目录 什么是进程控制总览如何实现进程控制?如何实现原语的“原子性”?进程控制相关的原语创建原语撤销原语子进程与父进程阻塞与唤醒原语切换原语 小结 什么是进程控制 控制进程的状态变换 总览 如何实现进程控制? 原语实现 假设不是原…

离线直线度测量仪的三种类型

智能型离线直线度测径仪主要用于金属棒材、管材、陶瓷管材等产品在生产节拍时间充裕时的直径和直线度检测。测量方便,自动将检测数据显示于显示屏上。 离线直线度测量仪使用前,设置产品规格,在更换轧材规格时,在设置一次&#xff…

强化学习:MuJoCo机器人强化学习仿真入门(1)

声明:我们跳过mujoco环境的搭建,搭建环境不难,可自行百度 下面开始进入正题(需要有一定的python基础与xml基础): 下面进入到建立机器人模型的部分: 需要先介绍URDF模型文件和导出MJCF格式 介绍完…

【MATLAB源码-第123期】基于matlab的SSK(空间位移键控)调制和QSSK(正交空间位移键控)调制误码率对比。

操作环境: MATLAB 2022a 1、算法描述 1. SSK(空间位移键控): - 基本原理:SSK是一种MIMO(多输入多输出)系统中的调制技术。它通过选择性地激活不同的发送天线来传输信息。在每个时间槽&…

第十三回 赤发鬼醉卧灵官殿 晁天王认义东溪村-FreeBSD 下编辑文件ee 用法

话说雷横绑了一个大汉,先押到晁保正庄上讨些点心吃。这东溪村的保正叫晁盖,人称他托塔天王。晁盖热情接待了雷横和士兵们,自己却趁着他们喝酒的时候尿遁去看那大汉。原来那大汉就是来找晁保正的,于是谎称他是晁盖的外甥&#xff0…

【K8S 云原生】K8S的包包管理器-helm

目录 一、helm概念 1、什么是helm 2、helm的概念: 二、实验部署: 1、安装helm: 2、对chart仓库的基本使用: 2.1、查看和更新chart仓库 2.2、安装chart 2.3、卸载chart: 3、helm自定义模版: 3.1、…

【Linux】【实战系列】10 分钟掌握日常开发中 Linux 网络处理相关命令

文章目录 lsofnetstatpingnslookupsshssh-keygenscpsftp 网络工具 curl网络工具 wget最后个人简介 hello,大家好,我是 Lorin,上一期和大家分享一期日常开发中常用的 Linux 文件和文本命令实战教学,这一期给大家带来常用的网络处理…

k8s部署Ingress

前提:有自备的域名,没有域名可用主机配置的域名解析代替测试 #主机配置的域名 vi /etc/hosts #追加以下内容 127.0.0.1 kuboard1、部署Ingress vi deploy.yaml #输入以下内容apiVersion: v1 kind: Namespace metadata:labels:app.kubernetes.io/instan…

git使用指南——以gitlab为例

注册gitlab 自行注册 新建项目 选择新建一个空白的项目 上传项目 clone项目地址到本地 执行完之后,会在目录下生成如下内容:进入里面,选择.git,要上传的内容(资料或代码复制到该目录下):…

华夏基金“冰火两重天”:产品增量不增值,靠什么赢得用户?

近日,华夏基金发布关于华夏野村日经225交易型开放式指数证券投资基金(QDII)(下称“华夏野村日经ETF”)二级市场交易价格溢价风险提示及临时停牌公告。 公告内容显示,华夏野村日经ETF二级市场交易价格明显高…

Prometheus 架构全面解析

在本指南中,我们将详细介绍 Prometheus 架构。 Prometheus 是一个用 Golang 编写的开源监控和告警系统,能够收集和处理来自各种目标的指标。您还可以查询、查看、分析指标,并根据阈值收到警报。 此外,在当今世界,可观…

如何使用宝塔面板搭建Discuz论坛服务并结合内网穿透远程访问

文章目录 前言1.安装基础环境2.一键部署Discuz3.安装cpolar工具4.配置域名访问Discuz5.固定域名公网地址6.配置Discuz论坛 前言 Crossday Discuz! Board(以下简称 Discuz!)是一套通用的社区论坛软件系统,用户可以在不需要任何编程的基础上&a…

架构篇18:单服务器高性能模式-PPC与TPC

文章目录 PPCpreforkTPCprethread小结高性能是每个程序员的追求,无论我们是做一个系统还是写一行代码,都希望能够达到高性能的效果,而高性能又是最复杂的一环,磁盘、操作系统、CPU、内存、缓存、网络、编程语言、架构等,每个都有可能影响系统达到高性能,一行不恰当的 deb…

【强化学习】QAC、A2C、A3C学习笔记

强化学习算法:QAC vs A2C vs A3C 引言 经典的REINFORCE算法为我们提供了一种直接优化策略的方式,它通过梯度上升方法来寻找最优策略。然而,REINFORCE算法也有其局限性,采样效率低、高方差、收敛性差、难以处理高维离散空间。 为…