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

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

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

相关文章

城市道路智慧养护顶层设计建议书

项目通过对国家在推动智慧交通领域的健康发展上发布的如:《交通强国建设纲要》、《推进综合交通运输大数据发展行动纲要(2020-2025年)》、《数字交通发展规划纲要》等相关政策的深入理解与研究,结合“互联网”、“智能化”、“智慧化”等理念,对国家提出…

STM32CubeMX配置定时器输入捕获功能

STM32CubeMX配置定时器输入捕获功能 0.前言一、方法简介二、STM32CubeMX配置1.生成PWM信号2.配置TIM3_CH1进行采样3.占空比计算 三、总结 参考文章:CubeMX系列教程——11 定时器输入捕获 0.前言 最近在学习江科大STM32教程的原理部分时,发现该教程中使用…

【Unity学习笔记】New Input System 部分源码和测试用例补充

转载请注明出处:🔗https://blog.csdn.net/weixin_44013533/article/details/135630016 作者:CSDN|Ringleader| 主要参考: Unity官方Input System手册与API【Unity学习笔记】Unity TestRunner使用【Unity学习笔记】第十二 New Inp…

学习笔记-李沐动手学深度学习(二)(08-09、线性回归、优化算法、Softmax回归、损失函数、图片分类)

总结 以_结尾的方法,好像是原位替换(即 原地修改,就地修改变量)如 fill_() 感恩的心:(沐神的直播环境) 08-线性回归基础优化算法 引言(如何在美国买房) 根据现在行…

vue+elementui实现12个日历平铺,初始化工作日,并且可点击

<template><div class"app-container"><el-form :model"queryParams" ref"queryForm" size"small" :inline"true"><el-form-item label"年份" prop"holidayYear"><el-date-…

commit 历史版本记录修正

commit 历史版本记录修正 当 Bug 发生的时候&#xff0c;我们会需要去追踪特定 bug 的历史记录&#xff0c;以查出该 bug 真正发生的原因&#xff0c;这个时候就是版本控制带来最大价值的时候。 因此&#xff0c;要怎样维持一个好的版本记录是非常重要的&#xff0c;下面是一…

为什么说CRM行业化是大势所趋?有哪些判断因素

很多企业、很多销售对CRM的负面评价集中在不够贴合行业、不人性化&#xff0c;也就是功能不够细分和实用。因为CRM几乎是所有企业管理系统中最贴近业务实际的&#xff0c;但各行各业的业务千差万别&#xff0c;所以功能完备、使用满意度高的CRM一定是深度行业化、与不同行业业务…

iPhone解锁工具---AnyMP4 iPhone Unlocker 中文

AnyMP4 iPhone Unlocker是一款功能强大的iPhone解锁软件&#xff0c;旨在帮助用户轻松解锁iPhone&#xff0c;从而在电脑上进行数据备份、传输和编辑。该软件支持多种iPhone型号&#xff0c;包括最新的iPhone 14系列&#xff0c;并支持多种解锁模式&#xff0c;如屏幕密码解锁、…

字符串展开(Python)

展开字符串中用-压缩的连续小写字母或者数字&#xff0c;不是压缩形式的-不用理会&#xff0c;-没有压缩字符的去除-。 (笔记模板由python脚本于2024年01月21日 18:18:19创建&#xff0c;本篇笔记适合熟悉 p y t h o n python python字符串和列表的coder翻阅) 【学习的细节是欢…

机器学习算法实战案例:使用 Transformer 进行时间序列预测

自 ChatGPT 问世以来&#xff0c;大型语言模型&#xff08;LLMs&#xff09;已经引起巨大轰动&#xff0c;取得的成果令人印象深刻。LLMs 成功的关键在于它们的核心构建模块&#xff0c;即 transformers。 在本文中&#xff0c;我们将提供一个在 PyTorch 中使用它们的完整指南…

Istio

三. Istio 官网 Github Connect 连接&#xff1a; 服务发现、负载均衡、重试、路由、故障注入、重定向、A/B测试、金丝雀发布Secure 安全方面&#xff1a; 认证、通道加密、访问授权Control 控制&#xff1a; 访问控制、限速、配额管理、服务计费Observe 观察&#xff1a; 链…

AI相关资料

文心一格收费,有免费额度 通义万相_AI创意作画_AI绘画_人工智能-阿里云 AI AIchatOS 即时 AI - 生成式图像创作及 UI 设计工具 Framer — The internet is your canvas