• GaussDB 200 查看表膨胀率的常用方法
    GaussDB 200 查看表膨胀率的常用方法概述在数据库管理中,表膨胀率是一个重要的性能指标,它反映了数据存储的效率。对于 GaussDB 200 数据库,了解如何检查表膨胀率对于维护数据库性能和优化存储资源至关重要。以下是一些常用的方法来查看 GaussDB 200 的表膨胀率:方法一:使用系统视图GaussDB 200 提供了多个系统视图来获取表的各种信息,包括表的大小、行数等。例如,可以使用 pg_class 和 pg_attribute 视图来获取表的总大小和每个属性的占用空间。通过这些信息可以计算出表的实际使用率和膨胀率。方法二:查询统计信息GaussDB 200 还允许用户查询特定的统计信息,如表的空间使用情况。通过执行特定的 SQL 语句,比如 SELECT pg_size_pretty(relpages) FROM pg_class WHERE relname='table_name';,可以直接获得表的页面数以及页面的总大小,从而估算出表的膨胀率。方法三:使用工具和脚本除了直接查询外,还可以使用一些工具或脚本来定期监测和报告表的膨胀率。例如,可以使用 pgstatt_stat 插件来获取更详细的表统计信息,包括表的磁盘使用情况和膨胀率。方法四:监控和警报GaussDB 200 支持各种监控机制,可以设置阈值和警报来通知管理员表膨胀率何时超过预定水平。这可以帮助及时发现问题并采取措施进行优化。总结以上是 GaussDB 200 查看表膨胀率的一些常用方法。每种方法都有其特点和适用场景,可以根据实际需要选择合适的方法来监控和管理数据库性能。需要注意的是,由于技术不断发展,上述方法可能随着版本的更新而发生变化,因此在使用时应参考最新的官方文档。
  • GDE、ADC、iStudio的关系
    GDE平台简介GDE数字化中台概览简介GDE(General Digital Engine)数字化中台是一种新型的数字化平台,旨在通过整合大数据、云计算、人工智能等现代信息技术,为企业提供全方位的数字化支持。它能够帮助企业实现数据的集中管理、高效处理和智能分析,进而优化决策、提升运营效率。架构详解GDE数字化中台的架构通常包含以下几个核心组成部分:数据层:负责数据的集中存储和管理,包括数据的采集、清洗、转换和存储等功能。平台层:提供一系列数据处理和分析的服务,如大数据分析、机器学习、自然语言处理等服务。应用层:基于平台层的服务,构建各种行业应用,如智能推荐、风险管理、客户关系管理等。接口层:为第三方应用和开发者提供API接口,便于接入GDE平台的各种服务。管理层:负责整个平台的运营管理和安全控制,确保数据安全和合规性。在金融领域的应用GDE数字化中台在金融领域的应用案例包括:信用评分:利用大数据分析技术对用户的信用状况进行分析和评分,为贷款审批提供依据。智能投顾:基于机器学习和自然语言处理技术,为用户提供个性化的投资建议。风险管理:通过大数据分析,对市场风险和信用风险进行实时监控和预警。反欺诈系统:运用机器学习算法,识别异常交易行为,预防金融欺诈。数据治理与合规性GDE数字化中台在数据治理和合规性方面同样发挥着重要作用。它能够帮助企业建立完善的数据治理体系,确保数据的质量和安全,同时遵守相关法规和标准。例如,通过数据加密、访问控制和审计日志等功能,保证数据处理的合规性。性能优化策略对于GDE数字化中台本身的性能优化,可以采取多种策略,如:时空转换:在资源有限的情况下,合理分配时间和空间资源,以达到最优的性能平衡。并行/异步操作:通过并行处理和异步执行,提高数据处理的速度和效率。预先/延后处理:合理安排数据处理的顺序和时间,减少等待时间,提升整体性能。缓存/批量合并:使用缓存技术减少重复计算,通过批量处理减少IO操作次数。总结综上所述,GDE数字化中台以其强大的数据处理和分析能力,在金融及其他行业中发挥着越来越重要的作用。通过不断的性能优化和结构设计创新,GDE将持续推动各行各业的数字化转型和升级。ADC平台简介ADC(Application Development Cloud)是华为推出的应用开发云平台,它提供了一站式的开发环境和服务,支持开发者快速构建和部署应用。ADC平台集成了低代码开发能力,允许开发者通过图形化界面拖拽组件的方式快速搭建应用,大大降低了开发难度和复杂性。ADC(Application Development Center)概述ADC(Application Development Center)是一个低代码、多体验的开发平台,旨在为业务开发者提供全场景开发服务和完整的资产生命周期工具链,以解决传统开发门槛高、周期长的问题,并形成以业务资产为核心的高效开发和复用新模式。产生背景随着数字化时代的到来,应用程序开发需求日益增长,但传统开发方式因其高门槛和长周期难以满足快速变化的市场需求。ADC平台和低代码开发应运而生,为开发者提供更为便捷、高效的开发工具,使得业务人员也能参与到开发过程中,加速应用的上市时间。低代码开发平台低代码开发平台由简单易用的可视化设计器和部署灵活的服务器构成,能够帮助开发者快速构建美观易用、架构专业、安全可控的多终端应用,并随需而变。多体验开发平台多体验开发平台提供跨平台APP,支持与多开放平台的深度集成,帮助开发者快速构建跨平台应用,实现一站式完成系统开发工作。对运营商的价值对于中大型企业,业务定制多,交付周期长,各个业务间由于技术差异导致数据孤岛和流程割裂。ADC平台集成数据、AI、API等服务编排能力,面向运营商多类业务软件开发诉求,提供一体化编排能力,以快速实现新特性开发与上市。对开发者的价值ADC为开发者提供了低门槛易上手的图形化开发Studio,支持所见即所得的流程、界面、数据、AI等编排能力,提升了开发效率,并允许多领域资产快速复用。发展趋势随着技术的不断进步和应用需求的日益增长,ADC平台和低代码开发有望在未来得到更广泛的应用。它们将进一步简化开发流程,提高开发效率和应用的性能。ADC技术与应用探索ADC技术涉及模数转换器(Analog-to-Digital Converter),它是数字电子系统中不可或缺的重要组件,实现了模拟信号到数字信号的转换。工作原理ADC的工作原理主要包括采样、量化和编码三个步骤。采样是将连续的模拟信号在特定时间间隔内进行离散化的过程;量化是将采样后的模拟信号转换为离散的数字信号的过程;编码则是将量化后的信号转换为二进制码的过程。分类ADC可以根据转换方式、转换精度和应用领域进行分类。常见的类型包括串行转换器和并行转换器、低精度至高精度的ADC,以及在通信领域和音频处理领域的专用ADC。应用领域ADC在音频和视频处理、通信系统和工业自动化等领域发挥着重要作用。随着技术的发展,对ADC的分辨率、功耗和多通道集成的要求也越来越高。前景与展望未来,ADC的分辨率将不断提高,功耗将得到优化,多通道和多功能集成将成为趋势。随着科技的发展和应用领域的不断扩大,ADC将继续推动前沿技术的发展。iStudio简介iStudio是华为推出的一个集成开发环境(IDE),专为华为的ICT产品和解决方案开发者设计。它提供了代码编辑、编译、调试等一系列开发工具,帮助开发者提高开发效率。运维应用开发中心(iStudio)平台介绍概述运维应用开发中心(iStudio)平台是华为推出的面向运维领域的智能运维解决方案的一部分,旨在通过提供一系列的智能运维工具和服务,帮助企业和运营商加速运维的数字化、智能化转型。主要功能与价值iStudio平台的核心价值在于其提供的低代码开发能力,允许运维人员无需编写复杂的代码即可快速开发运维应用程序。这大大降低了运维人员上岗的门槛,使得他们能够更快地适应新的运维环境和要求。此外,iStudio平台还集成了华为的运维知识和经验,使得运维人员能够利用这些预置的知识资产来优化运维流程和提高运维效率。应用实践在实际应用中,iStudio平台被用于支持多种运维场景,如自动化故障处理、性能管理、事件管理等,并通过智能化的手段,如预测分析、自动化诊断等,来提升运维的质量和效率。与其他运维工具的比较相较于传统的运维工具,iStudio平台的优势在于其高度的集成化和智能化。它不仅仅是一个工具的集合,而是一个能够提供端到端解决方案的平台,从监控、预警到故障处理都能提供一站式的服务。结论总的来说,iStudio平台是华为在运维领域的一个重要布局,它的推出标志着华为在推动运维数智化转型方面的决心和实力。通过这个平台,华为希望能够帮助企业和运营商实现运维的自动化、智能化,进而提升整体的运维能力和业务连续性。关系分析GDE、ADC和iStudio三者之间存在一定的关联。GDE平台作为一个全面的开发者使能平台,可能集成了ADC平台的部分功能,同时也可能与iStudio这样的IDE有所交集,因为它们都是为了方便开发者进行高效的软件开发而设计的。GDE平台可能提供了包括ADC平台在内的一系列开发工具和服务,而iStudio则可能是GDE平台上使用的其中一个工具。综上所述,GDE平台、ADC平台和iStudio三者之间的关系可以理解为:GDE平台是一个更为宏观的开发者服务平台,它可能整合了ADC平台这样的应用开发工具,同时也提供了iStudio这样的集成开发环境,以支持开发者进行高效的全流程开发。
  • 数据库支持数据闪回技术概览
    数据库支持数据闪回技术概览简介数据闪回技术是一种数据库恢复机制,它允许数据库管理员(DBA)将数据库或其中的数据恢复到过去的某个时间点,以纠正由于误操作、错误数据或系统故障引起的问题。这项技术在多种数据库系统中都有所应用,包括但不限于Oracle、MySQL、PostgreSQL等。接下来,我们将详细探讨不同数据库系统中的数据闪回技术。Oracle数据库的闪回技术Oracle数据库提供了多种闪回技术,包括闪回查询、闪回表、闪回数据库等。这些技术基于数据库的日志文件(Undo日志)来实现数据还原。日志文件记录了数据库每次操作的详细信息,包括数据修改、事务提交等。通过解析日志文件,Oracle数据库可以将数据库还原到特定的时间点或操作前的状态。闪回查询闪回查询(Flashback Query)允许用户查询过去某个时间点的数据,而无需恢复整个数据库。用户可以通过指定时间点或系统更改号(SCN)来查询特定时间点的数据状态。闪回表闪回表(Flashback Table)可以将表恢复到过去某个时间点或SCN值时的状态。这项技术主要用于恢复指定表中的数据,而不影响数据库的其他部分。闪回数据库闪回数据库(Flashback Database)可以将整个数据库恢复到过去的某个时间点或SCN值。执行闪回数据库操作需要数据库启用归档日志模式,并有足够的磁盘空间来存储日志文件。MySQL数据库的闪回技术MySQL数据库原生不支持闪回功能,但可以通过第三方工具或自行编写脚本来实现类似的效果。例如,可以使用binlog来生成恢复SQL,进而实现数据的闪回恢复。第三方工具有开发者自行实现了MySQL数据库的闪回功能,如mysqlbinlog_flashback和binlog2sql等工具,这些工具可以解析binlog日志并生成用于数据恢复的SQL语句。PostgreSQL数据库的闪回技术PostgreSQL数据库提供了类似的闪回功能,包括闪回查询和闪回数据归档。它允许用户查询过去的数据版本,并在必要时执行数据恢复。闪回数据归档PostgreSQL的闪回数据归档(Flashback Data Archive)功能可以保留数据的历史版本,允许用户恢复到任意时间点的数据状态。总结数据闪回技术在不同数据库系统中的实现各有特色,但其核心目的是相似的:提供一种高效、可靠的数据恢复机制,以应对日常运维中不可避免的数据错误和损失。通过合理运用这些技术,DBA们能够在关键时刻保护企业的数据资产,确保业务的连续性和数据的完整性。
  • GaussDB(DWS)与GaussDB分布式版的区别
    GaussDB(DWS)与GaussDB分布式版的区别概述GaussDB(DWS)和GaussDB分布式版都是华为推出的数据库产品,但在功能、架构和使用场景上存在一些差异。GaussDB(DWS)是一个云原生的数据仓库解决方案,而GaussDB分布式版则是指GaussDB的分布式部署形态。接下来我们将详细探讨这两个产品的区别。GaussDB(DWS)GaussDB(DWS)是华为云提供的云原生数据仓库服务,它采用全对称分布式架构,没有中心节点,所有节点都可以提供服务,实现千万条/秒入库吞吐,毫秒级入库时延,兼顾吞吐和时延要求。DWS具有高性能、高扩展、高可靠等特点,能够用一套软件替换多个数据组件,简化数据链路,统一运维,提供一站式数据分析解决方案。关键特性Serverless模式:支持按需资源,按需查询等灵活计费。存算分离:实现冷热数据自动管理,降低存储成本。数据格式兼容性:兼容Hudi/ORC/Parquet等开源数据格式,实现格式化和非格式化数据统一分析。表级细粒度容灾:按需创建容灾规模,最大化降低容灾集群投资。GaussDB分布式版GaussDB分布式版则是GaussDB的分布式部署形态,适用于可靠性、稳定性要求较高,实例规模较大的场景。分布式形态能够支撑较大的数据量,且提供了横向扩展的能力,可以通过扩容的方式提高实例的数据容量和并发能力。部署形态独立部署:数据库组件部署在不同节点上。高可用:采用一主两备或多活部署模式,提供高可用性。三副本:采用单节点的部署模式,包含一个控制节点和一个数据节点组件。性能优化智能查询优化技术:自动分析查询语句,选择最优的执行计划,提高查询效率。多种计算引擎:支持向量化执行引擎、列式存储引擎等,根据不同的应用场景选择最合适的计算引擎,实现更高效的数据处理。总结GaussDB(DWS)和GaussDB分布式版的主要区别在于它们的部署形态和所针对的使用场景。GaussDB(DWS)侧重于云原生环境和大规模数据分析,而GaussDB分布式版则更适合需要高可靠性和稳定性的企业级应用。两者都提供了高性能的数据处理能力,但GaussDB(DWS)在云服务和弹性扩展方面更具优势,而GaussDB分布式版则在独立部署和数据一致性方面更加突出。用户应根据自己的业务需求和技术背景选择合适的产品形态。
  • 鲲鹏920服务器BIOS设置中的Cache Mode和Stream Write Mode分析
    鲲鹏920服务器BIOS设置中的Cache Mode和Stream Write Mode分析Cache Mode详解Cache Mode是鲲鹏920服务器BIOS中的一个重要配置项,它涉及到CPU缓存的配置和管理。根据搜索结果,Cache Mode提供了多种缓存模式的选择,这些模式决定了CPU缓存如何分配给各个核心以及缓存的数据如何被处理。以下是几种常见的Cache Mode配置及其作用:in:partition out:share:内部为分区,外部为共享模式。在这种模式下,每个CPU核心拥有自己的私有L1和L2缓存,而L3缓存则是多个核心共享的。in:share out:share:内部和外部均为共享模式。这意味着所有的CPU核心共享L1和L2缓存,而L3缓存也是共享的。in:private out:share:内部为私有,外部为共享模式。这表示每个CPU核心都有自己独立的L1和L2缓存,而L3缓存是共享的。in:private out:private:内部和外部均为私有模式。在这种情况下,每个CPU核心都拥有完全独立的L1、L2和部分L3缓存。在实际应用中,不同的Cache Mode配置会对服务器的性能产生影响,因此需要根据工作负载的特点和需求来选择合适的Cache Mode。例如,如果应用程序对缓存敏感,那么选择能够最大化利用缓存的模式可能会带来更好的性能表现。Stream Write Mode详解Stream Write Mode指的是数据写入时的路径选择。根据搜索结果,Stream Write Mode的配置会影响数据的写入方式,进而影响服务器的性能。以下是几种常见的Stream Write Mode配置及其作用:Disabled:禁用流写入特性。在这种模式下,数据写入不会经过特定的流写入路径,而是直接写入内存。Allocate LLC:将数据写入本地Last Level Cache(LLC)。这种配置有助于提高缓存的效率和命中率,适合于那些对缓存访问速度要求较高的场景。Enable bypassLLC:使能绕过LLC,数据直接写入到DDR内存。这种方式适合于对内存带宽要求更高的应用场景。Allocate share LLC:数据写入共享LLC。这通常意味着数据会被多个CPU核心共享,适合于多核并行处理的场景。选择适当的Stream Write Mode同样需要考虑工作负载的特性和服务器的配置。例如,在大规模并行处理任务中,选择能够优化多核协作的Stream Write Mode配置可能会获得更好的性能。总结综上所述,鲲鹏920服务器BIOS中的Cache Mode和Stream Write Mode是两个关键的性能调节参数。正确地配置这两个参数,可以显著提升服务器的性能表现。在选择Cache Mode时,需要权衡缓存的分区和共享方式;而在配置Stream Write Mode时,则要考虑到数据写入的方式和路径。通过细致的调整和优化,可以使鲲鹏920服务器更好地适应各种复杂的工作负载,发挥出更强的处理能力。
  • GaussDB数据库分页查询方式
    GaussDB数据库分页查询方式简介GaussDB数据库作为一款高性能的数据库产品,其分页查询能力是其核心功能之一。在处理大量数据时,分页查询可以帮助用户有效地检索和展示数据。本文将详细探讨GaussDB数据库中分页查询的具体实现方法和相关优化技巧。GaussDB分页查询的基本实现在GaussDB数据库中,分页查询通常涉及到LIMIT和OFFSET这两个关键词。基本的分页查询语句格式如下:SELECT * FROM table_name LIMIT offset, count;其中,offset参数指定了从哪一行开始查询,count参数指定了要查询的行数。例如,要查询从第11行开始的5行数据,则语句应为:SELECT * FROM table_name LIMIT 10, 5;这种方式在处理小规模数据时表现良好,但随着数据量的增大,性能可能会受到影响,特别是在没有合适的索引情况下。分页查询的性能优化为了提高分页查询的性能,可以考虑以下几个方面的优化措施:索引优化确保查询涉及的列上有适当的索引。例如,如果查询需要按某列排序,则应在该列上创建索引。这样可以减少数据库的排序开销,加快查询速度。子查询优化在某些情况下,可以使用子查询来优化分页查询。例如,可以先找出最后一页的最大ID,然后在下一页的查询中使用这个ID作为起始点,从而避免每次都从头开始扫描。窗口函数优化GaussDB支持窗口函数,如ROW_NUMBER(),可以在查询中使用它来计算每行的序号,进而进行分页。这种方法在Oracle数据库中被称为ROWNUM,但在GaussDB中使用窗口函数可以获得更好的性能。避免全表扫描尽量避免全表扫描,特别是在数据量很大的情况下。可以通过在WHERE子句中添加过滤条件,并结合索引使用,以减少扫描的数据量。总结GaussDB数据库提供了多种分页查询的方式,并通过优化技术提高了查询性能。在实际应用中,应结合具体场景选择最合适的方法,并根据数据量和查询特点进行相应的性能调整。通过合理的索引设计和查询优化,可以确保分页查询在面对大规模数据时仍能保持高效。
  • 华为云盘古大模型与通义千问大模型比较分析
    华为云盘古大模型与通义千问大模型比较分析概述华为云盘古大模型与阿里云通义千问大模型是目前市场上备受关注的两个AI大模型。两者都在人工智能领域取得了重要进展,但各自有着独特的优势和发展方向。下面我们将从多个角度对这两个模型进行详细的比较分析。技术架构特点华为云盘古大模型华为云盘古大模型是基于华为自研的AI框架MindSpore和计算平台昇腾AI打造的,其特点在于全栈创新,包括芯片使能、AI框架、大模型等核心技术。盘古大模型强调在细分场景的落地应用,主要解决商业环境中的问题,用AI赋能千行百业。阿里云通义千问大模型阿里云通义千问大模型则侧重于多语言的预训练大型语言模型,支持文本生成、对话模拟、编程辅助等多种应用场景,展现了其强大的跨语言处理能力和多样化的应用潜力。数据处理能力华为云盘古大模型盘古大模型在数据处理方面,通过5+N+X的架构实现分层解耦,赋能各行各业,让每个行业、每个企业基于自己的场景都可以拥有自己的大模型。阿里云通义千问大模型通义千问大模型则在数据处理上,使用了超过3万亿Token的高质量数据进行训练,使其具备了更强大的推理、认知、规划和记忆能力。安全性华为云盘古大模型在安全性方面,华为云盘古安全大模型通过预训练、微调等方式可以预先自动化识别潜在的多种原生安全风险,提升安全运营效率。阿里云通义千问大模型通义千问大模型则未明确提及其在安全性方面的特色,但在多语言支持和全球化应用方面有所体现,这可能间接提升其在处理跨国界、多文化背景下的数据安全能力。应用场景华为云盘古大模型盘古大模型在应用场景上,覆盖了政务、金融、制造、医药研发、煤矿、铁路等多个行业,展现了其在多个领域的广泛适用性。阿里云通义千问大模型通义千问大模型则在应用场景上,不仅覆盖了传统的文本处理、对话模拟等,还包括了编程辅助、文档处理、音视频理解等更为丰富的功能。总结综上所述,华为云盘古大模型与阿里云通义千问大模型各有侧重,前者在商业场景的落地应用和技术架构的全栈创新上有明显优势,后者则在多语言处理和多样化应用场景上表现出色。两者都在推动AI技术的发展和应用上发挥了重要作用,但具体的优势和应用范围存在差异。企业在选择适合自身需求的大模型时,应根据自己的业务场景和需求进行权衡选择。
  • Linksoft消费MQS消息获取数据的方法
    Linksoft消费MQS消息获取数据的方法概述Linksoft作为一个软件公司,其产品和服务涉及多个领域,包括但不限于金融、物联网、大数据等。在这些领域中,消息队列系统(MQS)作为一种异步通信的手段,常用于在不同系统间传递消息。Linksoft可能会利用MQS来实现数据的消费和处理。接下来我们将详细探讨Linksoft如何消费MQS消息以获取数据。消费MQS消息的基本原理MQS通常支持发布/订阅模式,在此模式下,消息生产者(Producer)将消息发布到一个特定的主题(Topic),而消息消费者(Consumer)则可以订阅该Topic以接收消息。Linksoft在消费MQS消息时,需要注册一个或多个Topic的订阅,当有新消息到达时,MQS会将消息推送给订阅者。具体实现步骤订阅Topic:Linksoft首先需要确定需要消费的Topic,并通过适当的接口进行订阅。这可能涉及到配置相关的订阅参数,如QoS等级(Quality of Service Level),以确保消息的可靠性和实时性。消息接收:一旦订阅成功,Linksoft的系统将会开始接收来自MQS的消息。消息的内容取决于Topic和消息格式,可能是JSON、Protobuf等格式的数据。消息处理:接收到的消息需要经过解析和处理。Linksoft可能会使用内部开发的解析器来解析消息内容,并根据业务逻辑对其进行处理。消息确认:在处理完消息后,Linksoft需要向MQS发送确认信号,表明消息已被成功消费。这通常是通过发送ACK(acknowledgement)消息完成的。高级特性消息过滤:Linksoft可能还会利用MQS的消息过滤功能,只订阅特定条件下的消息,以提高消费的效率和准确性。错误处理:在消费过程中,Linksoft需要实施错误处理机制,比如重试策略和死信队列(Dead Letter Queue, DLQ),以确保消息不会因为处理失败而被遗漏。性能监控:为了确保系统的稳定运行,Linksoft可能会监控消费过程的性能指标,如吞吐率、延迟等,并对异常情况进行预警和处理。结论综上所述,Linksoft消费MQS消息获取数据的过程涉及订阅Topic、接收和处理消息、发送确认等一系列步骤。在整个过程中,Linksoft还需要考虑到消息过滤、错误处理和性能监控等高级特性的实现,以确保数据消费的准确性和系统的可靠性。通过这样的机制,Linksoft能够有效地从MQS中获取所需的数据,并为其客户提供高质量的服务。
  • GaussDB、DWS、GaussDB A、GaussDB T、openGauss概念理解
    GaussDB、DWS、GaussDB A、GaussDB T、openGauss概念理解GaussDB数据库概述GaussDB是华为自主研发的关系型数据库,它支持x86和鲲鹏处理器,提供高并发事务实时处理能力、两地三中心金融级高可用能力和分布式高扩展能力。GaussDB数据库适用于金融、政府、电信、大企业等行业核心关键系统。GaussDB T数据库是GaussDB系列中的一员,专注于事务处理,而GaussDB A数据库则具备分析及混合负载能力,适合数据仓库、数据集市、实时分析等场景。GaussDB T数据库特性GaussDB T数据库特别适合于需要处理大量事务的系统,例如电信计费、银行交易等。它支持ACID事务、MVCC多版本并发控制,确保数据的一致性和完整性。GaussDB T数据库在基于鲲鹏处理器的16节点TPC-C标准测试中,性能达到千万级tpmC,显示出其在高并发场景下的优秀性能。GaussDB A数据库特性GaussDB A数据库支持行存储与列存储,提供PB级数据分析能力、多模分析处理能力。它适用于数据仓库、数据集市、实时分析、实时决策和混合负载等场景,广泛应用于金融、政府、电信、大企业等行业核心系统。GaussDB A数据库基于鲲鹏920处理器,相对通用同期芯片,TPC-H/TPC-DS性能提升30%。openGauss数据库概述openGauss是华为开源的数据库项目,旨在打造一个高性能、可伸缩、安全的开源数据库。openGauss社区聚集了众多企业和开发者,致力于推动数据库技术的创新和发展。openGauss社区已经有290多家企业和机构加入,近5000名开发者参与社区贡献,下载量突破190万次。GaussDB与openGauss的关系GaussDB和openGauss有着紧密的联系。GaussDB是华为基于openGauss开源社区的基础上开发的闭源数据库产品。两者共享相同的开源根源,但GaussDB作为闭源产品,提供商业级别的支持和担保,而openGauss则作为一个开放社区,鼓励开发者参与贡献,共同推动数据库技术的发展。总结综上所述,GaussDB、GaussDB T、GaussDB A和openGauss构成了华为在数据库领域的产品和项目矩阵。GaussDB系列数据库针对不同的应用场景提供了特定的优化和功能,而openGauss则作为一个活跃的开源社区,促进了数据库技术的普及和创新。通过这样的组合,华为不仅为行业客户提供了多样化的数据库产品选择,也为全球开发者提供了一个共建共享的开源平台。
  • 存储服务2024.8月技术干货&资讯合集
    技术干货SD-WAN小知识https://bbs.huaweicloud.com/forum/thread-02127159518771496051-1-1.html大模型微调时所需数据汇总https://bbs.huaweicloud.com/forum/thread-0267159605310135034-1-1.html微服务架构中确保服务间通信稳定性和响应性措施https://bbs.huaweicloud.com/forum/thread-02127159605573696054-1-1.htmlHibernate笔记分享https://bbs.huaweicloud.com/forum/thread-02127160036368238053-1-1.htmlAJAX开发小知识https://bbs.huaweicloud.com/forum/thread-02127160036438461054-1-1.htmlKubeEdge的关键组件mapperhttps://bbs.huaweicloud.com/forum/thread-0256160041814358047-1-1.htmlKubeEdge应对边缘设备动态性和不确定性的策略https://bbs.huaweicloud.com/forum/thread-0204160138246197005-1-1.htmlKubeEdge支持边缘设备的本地自治能力分析https://bbs.huaweicloud.com/forum/thread-0250160138509650011-1-1.html边云协同AI在KubeEdge Sedna中的实现步骤https://bbs.huaweicloud.com/forum/thread-02102160138691597006-1-1.htmlAppStage对业务快速迭代的支撑https://bbs.huaweicloud.com/forum/thread-02115160383664985012-1-1.html资讯合集【话题交流】人工智能知识专题——看看大家人工智能AI知识知多少https://bbs.huaweicloud.com/forum/thread-0205160383867635014-1-1.html资讯|性能提升30倍!深入解读GaussDB(for MySQL)查询优化之Limit Offset下推https://bbs.huaweicloud.com/forum/thread-02102160384026870019-1-1.html转载-从K8s的“临时容器”看K8s设计的厉害之处https://bbs.huaweicloud.com/forum/thread-02115160386630881013-1-1.html资讯|华为云全域Serverless技术创新:全球首创通用Serverless平台被ACM SIGCOMM录用https://bbs.huaweicloud.com/forum/thread-0204160386696424016-1-1.html资讯|“城市数据空间”再创科技成果,闪耀数博会!https://bbs.huaweicloud.com/forum/thread-0205160387220949015-1-1.html
  • 资讯|“城市数据空间”再创科技成果,闪耀数博会!
    8月28日,以“数智共生:开创数字经济高质量发展新未来”为主题的2024中国国际大数据产业博览会(以下简称数博会)在贵州省贵阳市正式拉开帷幕。在数博会连续举办十年之际,本届盛会首次由国家数据局主办,突出国际化、专业化,以专业展览、开(闭)幕式、成果发布、行业交流等系列活动,着力抢抓新一轮人工智能发展机遇,推动数字经济高质量发展。会上,华为云Stack城市数据空间理念亮相领先科技成果发布会、数据空间国际交流活动、专业展览等环节,进一步增强行业影响力。权威奖项再下一城本届数博会筹备期间,领先科技成果征集工作同步开展。华为云Stack与上海数据集团联合申报的“基于可信计算的智能化数据开发与运营平台-城市数据空间基础设施”项目,入选优秀科技成果并编入《2024数博发布成果汇编》。城市数据空间理念以“AI+数据”双轮驱动,通过隐私计算、区块链、数智融合等技术打造城市级数据空间基础设施,使能数据“供得出、流得动、用得好”,推动城市数据价值潜能高质量释放。同时,城市数据空间理念与时俱进、不断创新,持续丰富能力与场景。本次获奖项目方案:提供软硬一体的机密计算环境和计算加速引擎,构建数据要素可信计算平台,支持数据“算得快”;利用数据胶囊技术,构建全场景的数据要素可信流通平台,使能数据“流得动”。相关方案在第七届数字中国建设峰会期间以“Trust For Data”联创成果的形式发布,本次科技成果入选,充分证明该成果在业界受到的权威认可。领先理念国际争鸣本届数博会期间,“数据无界:共创开放数据空间”为主题的数据空间国际交流活动成功召开。国家数据局、贵州省政府、国际电信联盟、国际数据空间协会、中国信通院、日本数据社会联盟、欧盟数据空间开源项目、华为、香港科技大学、上海数据集团等单位负责人围绕数据可信流通和开发利用的关键载体——数据空间这一重要课题展开交流,政、产、学、研各界凝聚共识,通过增强国际沟通合作,共同绘制数据空间未来蓝图。会上,上海数据集团有限公司党委副书记、总裁朱宗尧将城市数据空间作为创新实践进行分享。他表示,“城市是数据主要的载体,70%-80%的数据在城市内部流通。我们联合华为云,坚持可发现、可访问、可开发、可共享、可流通五个原则构建上海的城市数据空间,并共同发布《城市数据空间CDS白皮书》,通过打造‘天机 • 智信’、‘浦江数链’、‘数字信任’三大数据基础设施平台,保障数据可信流通、助力数据要素价值释放。”主题展览广泛关注在专业展览厅,华为打造“加速智能化”为主题的互动体验区。其中,数智融合展台以城市数据空间理念为主线展开,并重点阐述了如何利用AI充分释放数据新价值。多个省市数据局客户到访展台,与华为云技术专家交流城市数据空间理念如何落地,并探讨未来更多场景可能。城市数据空间理念发端于上海,其内涵将通过在更多城市的落地,逐渐向城市群/带、国家乃至全球扩展。城市数据空间理念,充分融入本届数博会的各个环节,受到业界广泛认同。城市数据空间不仅是数据空间,更是城市生命力的空间,孕育城市发展驱动力和技术创新突破力。未来,华为云Stack将持续携手各界,将数据工程等最新的技术应用到城市数据空间,释放数据新价值,让城市生命力更加旺盛。转自华为云公众号
  • 资讯|华为云全域Serverless技术创新:全球首创通用Serverless平台被ACM SIGCOMM录用
    近期,华为云发布一则重磅消息:华为云全域Serverless化背后的“基石”——元戎,中稿全球顶尖学术会议ACM SIGCOMM 2024。该会议在计算机科学领域享有崇高声望,2024年共接收投稿366篇,其中62篇被录用,录用率仅为16.9%。论文《YuanRong: A Production General-purpose Serverless System for Distributed Applications in the Cloud》揭示了华为自主创新的业界首个通用Serverless平台,提供通用函数编程模型,高可扩缩、高性能和高效对接后端服务的运行框架,助力华为云构建全域Serverless云服务。01Serverless 从“专用”走向“通用”当前,业界现有的Serverless产品主要限于事件驱动型应用,然而对于有状态微服务、大数据、HPC、AIGC等复杂应用,仍然面临如下四大核心技术挑战:1)函数间无法高效协同:函数间无法直接寻址,需绕走网关,导致互调性能差。函数间不支持共享内存,无法高效协同,难以满足微服务、HPC等场景对低时延的诉求;2)不确定的冷启动时延:冷启动是Serverless性能优化难题之一,尤其在微服务、AIGC等场景,容器启动时加载大镜像(GB级)的开销大,加之复杂的应用初始化过程,整个冷启动耗时分钟级,无法按需弹性;   3)状态外置影响性能:应用程序的状态必须外置到如OBS等远端存储,延迟可达数百毫秒,同时远端存储的带宽有限导致吞吐量低,难以满足大数据等场景多任务之间高效数据流转的诉求;4)用户函数和后端服务间交互复杂:后端服务通常是有状态的,并为每个客户端维护经过身份验证的活动连接,例如JDBC连接,但这些连接状态很难在协作的函数实例之间共享。此外,多个函数的并发操作也会导致分布式事务的问题。02元戎首创通用Serverless平台论文介绍了元戎通用Serverless平台的一系列关键创新。其中,针对挑战1和2,元戎构建了可扩展的函数系统,实现大规模函数调度、亚毫秒函数互调以及函数极速冷启动等关键技术,支持大规模多形态应用的统一管理和高效运行;针对挑战3,元戎内置了多语义数据系统,实现分布式共享内存对象以及流数据对象,提供分布式共享内存池,支持多语义数据的高效流转;针对挑战4,元戎构建了可移植的Bridge系统,提供事件和后端服务的标准抽象接口,解耦架构,同时支持连接复用和共享事务等功能。元戎进一步抽象了面向云原生编程的通用Serverless运行时接口,并实现了主流语言的Runtime。通过这些Runtime,元戎为开发者提供特定领域的简易编程模式,支持Web服务、大数据、AI训练/推理、HPC等全域Serverless应用。Ø 更多技术细节请参见华为云在ACM SIGCOMM 24发表的论文原文:链接:https://dl.acm.org/doi/10.1145/3651890.367221603通用Serverless客户案例  ● 案例1:全球销量领先车企基于Serverless构建千万级车联网平台当前,汽车行业的车联网业务对提升产业竞争力和创新能力方面具有重要意义。为了在未来10年内满足6700万接入车辆的业务需求,某全球销量领先的车企期望构建一个全生命周期车辆管理平台。该平台需要能够承载分钟级的车辆数据上报,每天100T的数据增量,并支撑至少10PB级以上的存量数据。此外,汽车接入具备典型的波峰波谷特征,白天上下班时请求峰值达3w+ QPS,夜间请求量相对白天锐减。如何构建支持千万车辆稳定接入的车联网平台,满足业务端到端秒级时延并降低成本,是企业面临的主要问题。Serverless方案凭借其按需全自动弹性,按请求计费,免运维等优势,最终在与传统虚拟机/容器方案的对比中胜出。华为云FunctionGraph(Powered by元戎)作为核心计算服务,结合APIG、DIS、EG等Serverless中间件,灵活组装数据转码、分发、转储等业务流程,函数级逻辑开发简单,实例多AZ部署保证了高可靠性。   该车联网平台完成Serverless架构升级后,弹性能力显著提升,达到业界领先的分钟级 5000+ 函数实例弹性,业务端到端时延从分钟缩短到秒,加速近20倍,资源利用率提高了50%,这与元戎提供的以下两个“黑科技”密不可分。首先,元戎创新提出了基于进程级快照的函数极速冷启动技术,支持对用户空间指定的进程进行“冻结”(即停止进程,并将该进程运行的所有上下文持久化为快照文件),并在必要时对其进行“解冻”(即通过保存的快照文件来正确恢复进程运行的上下文)。当用户请求触发函数启动时,直接基于函数快照恢复,跳过框架启动、业务初始化等耗时较长的阶段,进一步结合内置数据系统实现快照缓存加速,显著提升应用冷启动性能90%+。其次,元戎构建了分级调度架构,以应对生产系统中传统中心化调度架构的性能瓶颈,支持大规模函数实例的并行调度,并有效利用数据局部性,确保高可扩展性,更好地支撑千万级车辆接入的波峰波谷场景。车联网平台自商用上线以来,已经历春节等节假日的考验,峰值每天十几亿次函数调用无错误。该Serverless方案现已作为华为云标准车联网解决方案进行推广,帮助更多车企构建高可用、低成本的车联网平台。● 案例2:华为MetaERP全面Serverless化架构升级MetaERP是服务于华为公司生产制造、供应、采购、财务业务的SaaS系统,整个系统构成非常复杂,涉及微服务、函数、大数据等多种应用形态。当前架构面临研发成本高、资源成本高等一系列挑战。为了解决这些问题,MetaERP正在进行全面Serverless化架构升级,旨在打造业界首个Serverless ERP系统,实现研发和资源成本的双重下降。1)资产核算业务资产核算业务(MFA) 支持企业资产从获取到处置的全生命周期管理和交易核算,在资产使用寿命内,按照会计准则和税法要求,系统地计提资产折旧费用。该业务的资源池独立,作业时间集中,具有典型的波峰波谷特征。然而,Java微服务的启动时延超过1分钟,弹性响应慢,业务峰值处理性能不足,日常波谷时仍需要保持最低配置在线,平均资源利用率不到2%,导致资源成本高。   MFA业务基于元戎进行Serverless化改造,元戎提供Spring框架兼容能力,支持通过修改少量配置即可实现存量业务Serverless化。进一步,元戎通过函数极速冷启动技术,将业务冷启动时间缩短到5秒,弹性性能提升20倍。结合自动水平和垂直弹性能力,在无请求时支持业务实例缩容至0,月均资源消耗降低70%。2)销售订单业务当前,MetaERP依托平台基础功能(通用逻辑)来支撑上层大量的租户定制业务(扩展逻辑)。以销售订单业务为例,平台通用逻辑动态加载租户扩展逻辑,虽然实现了灵活定制,但两者耦合运行,无法保证安全隔离。元戎支持租户扩展逻辑以Serverless函数方式发布、运行,通过函数物理实例隔离的方式减少风险,保障通用层的稳定。然而,优秀的技术方案往往也难以一步到位,虽然实现了多租户之间的安全隔离,但也引入了两大挑战。首先,分离后的通用逻辑和租户扩展逻辑通过RPC通信,相比原先本地调用,耗时必然增加,且通信次数越多,耗时会越大。元戎提供亚毫秒函数互调能力,通过简化通信链路、亲和性调度、协议优化等关键技术,支撑通用逻辑和租户扩展之间高性能直连互通,实现端到端调用时延1ms。其次,不同的业务逻辑之间访问同一份数据时的事务一致性问题。元戎提供Service Bridge代理后端服务访问,利用路由计算,将同一事务的请求汇聚到同一个Bridge函数实例上,将原来分离的事务逻辑重新聚合成本地事务,解决分布式事务一致性问题。   04总结与展望近年来,华为云持续构筑全域Serverless云服务,推出了一系列竞争力领先的Serverless产品,包括函数工作流FunctionGraph、Serverless容器引擎CCE Autopilot、Serverless应用托管CAE、云数据仓库DWS、事件网格EventGrid等,高效支撑Serverless全面商业化。面向生成式AI浪潮,元戎通用Serverless将持续聚焦技术创新,突破大模型推理服务实例快速弹性、分布式KV Cache池化管理、多模型混部高效协同调度、超大规模分布式训练高可用性等关键技术,构筑大模型推理和训练的高性能、低成本、高可用性关键竞争力。通过这些创新,元戎将助力华为云打造极低成本、极致性能和极优体验的Serverless AI解决方案,实现全域Serverless化的竞争力领先,帮助千行万业的百万开发者缩短交付周期,提升上云效率,抢占市场先机。   
  • 转载-从K8s的“临时容器”看K8s设计的厉害之处
     从一个容器的不足说起容器概念出现时,有个非常重要的理念:容器中极简。即容器里面只保留需要运行的进程就可以,其他一律不要安装。这也是为什么Docker出现的那时,有一篇文章《为什么不需要在Docker容器中运行sshd》经常被提及的原因。但有时候Docker容器中缺少需要的软件。比如 curl,wget,ifconfig,ip,tcpdump 等基础软件包,遇到问题时,什么命令都敲不了,很是让人抓狂。平时定位问题的技术(各种Linux命令行工具),一点都用不上了。自己打的镜像倒还好,大不了重新打镜像把需要的工具也安装后,重新打镜像。但是如果是开源镜像就比较棘手。如何在没有安装软件包的容器里面,执行需要的命令行(二进制工具)进行调试,一直是K8s平台的一个小遗憾。我以前想K8s可以补充的功能之前唐老师写过《跟唐老师学习云网络 - nsenter魔法棒》,我还想着:可以利用Host上面的命令行呀,通过nsenter跳到容器里面,不就可以执行了么原文链接:https://bbs.huaweicloud.com/blogs/402638​当年还幻想可以给K8s提点proposal:让exec命令增加 --from-host 参数,当带上这个参数的时候,让kubelet直接从Host执行nsenter运行主机上面的二进制,这样就绕过了容器里面没有命令行的约束。方便管理员调试容器中相关问题。想法似乎挺好,后面转战上层AI平台,并没有继续关注这么底层的了。直到最近看到K8s的新功能:“临时容器” (ephemeral containers)。发现K8s对某个特性的设计还是非常值得点赞的。结果K8s实现的功能K8s为了能在容器里面,执行不存在的命令行,增加了一个 kubectl debug命令。大致流程如下图:​其中红色容器,就是一个“临时容器”,它与目标容器共享各种namespace,所以与直接在目标容器中执行命令的效果是一样的。通过指定镜像地址,来控制这个新启动的“临时容器”里面包含自己所需要的各类命令行。​这样就可以在任意K8s的容器里面,执行不存在的命令行工具了。比如,对某Pod里面的名为app的容器执行调试:kubectl debug -it -c debugger --target=app --image=busybox {POD_NAME}--target参数,是指定Pod中需要调试的目标Container(有时Pod有多个Container)。果然还是人家的更厉害看完K8s的实现,明显比我早期想的 “借用Host” 方法更好:其仍然保持Host节点的“极简”,而是将需要的工具仍然保持由容器来承载。这样可以借用任意的容器镜像,而不必在Host节点上面安装各种工具包。非常优雅。更“过分”的是,在节点上没有的命令行工具,也不需要给节点安装软件包,也可以通过临时容器来执行。kubectl debug node/mynode -it --image=ubuntu扩展性也很赞,确实考虑的挺周全。So,启动“临时容器”来在目标容器中“整活”走起~本文分享自华为云社区《从K8s的“临时容器”看K8s设计的厉害之处-云社区-华为云》,作者:tsjsdbd
  • 资讯|性能提升30倍!深入解读GaussDB(for MySQL)查询优化之Limit Offset下推
    1. 背景介绍在社区版MySQL中,使用LIMIT OFFSET的SELECT语句时,存储引擎层返回所有满足WHERE条件的行给SQL层处理,SQL层过滤offset行,返回n行数据。随着offset的增加,查询的时长也会显著增长。当offset达到百万级别的时候,查询耗时往往超出了业务可接受的范畴。SELECT * FROM lineitem LIMIT 10000000,10;或者SELECT * FROM lineitem LIMIT 10 OFFSET 10000000;为提升此类SQL语句的性能,GaussDB(for MySQL)引入了Limit Offset下推优化策略,即将offset的计算任务下推至InnoDB存储引擎,从而避免offset范围内的行被转换和传输到SQL引擎层,并从以下两个场景实现加速:1)节省InnoDB存储引擎和SQL引擎层之间的多次交互;2)当查询语句访问二级索引,需要回表获取其他的列信息时,InnoDB层对offset提前过滤可以消除回表的性能开销。2. 原理介绍GaussDB(for MySQL)推出的两个新特性,通过OP和RCR的结合,将LIMIT OFFSET的SELECT大数据量查询的性能提升一到两个数量级。• Offset Pushdown( offset下推,下文简称OP)• Redundant Condition Removal (冗余条件删除,下文简称 RCR)2.1 Offset PushdownOP赋予GaussDB(for MySQL)存储引擎InnoDB处理offset的能力。当OP启用时,SQL层会评估offset是否可以下推至存储引擎进行处理,并将下推信息传递给存储引擎。SQL层不再对存储引擎返回的行进行offset 处理,取而代之的是存储引擎层直接跳过offset 范围内的行,仅返回后续行,即查询所需要的行。首先,通过启用OP,offset 范围内的行不会再传输到SQL层,从而节省了存储引擎和SQL层之间多次来回交互时间;其次,对于非覆盖索引扫描(non-covering index,即查询访问二级索引之后还必须访问表),直接跳过offset范围内的行,可以节省对这些行回表访问的开销。这种对offset 的提前处理的方式,可以节省数据处理时间,特别是当offset 非常大时。OP是否生效取决于WHERE条件能否完全下推到存储引擎处理。如果WHERE条件能够完全下推到存储引擎,并使其能够基于索引进行筛选,减少需要处理的数据量,那么,OP就能有效地优化查询性能。2.2 Redundant Condition RemovalRCR的优化思路:当进行索引范围扫描时,SQL 层通常会对存储引擎返回的行执行冗余检查,因为它不知道存储引擎已经执行了这些检查,而RCR 就是让 SQL 层了解到这一点。为了使 OP 成为可能,除了要求WHERE条件能够被存储引擎独立且完整地评估,SQL 层还必须了解这点,从而避免冗余检查。OP功能的实现方式与索引条件下推 (Index Condition Pushdown,ICP) 类似。对于某些查询,ICP通过将整个 WHERE 子句下推到存储引擎来启用 OP。而RCR在 ICP 执行之前会先评估查询条件是否冗余,并移除冗余条件,以确保ICP不会处理冗余的条件检查。RCR很好地补充了OP特性的适用范围,允许更多查询使用 OP。3. 场景约束• 只支持单表的SELECT查询,查询使用的表必须是InnoDB表。• SELECT查询语句的WHERE条件可全部下推到引擎层。• 不支持SELECT DISTINCT、HAVING、GROUP BY、ROLLUP、聚集函数、WINDOW FUNCITON以及文件排序。• 不支持涉及多个分区的分区表查询。• RCR支持<,>,=,<=,>=,BETWEEN,IFNULL。4. 流程介绍在SQL层的优化器阶段,判断是否满足Limit Offset下推的条件。如果满足,则设置offset的值为0,并通知InnoDB层需跳过的offset的值,即SQL层对InnoDB层返回的结果不再进行offset的过滤。在InnoDB层,row_search_mvcc函数中根据SQL层传递的下推offset值,判断是否需要跳过当前row。如果判定需要则跳过,继续读取下一行,依次类推。(图1示意了Limit Offset下推查询优化的处理流程) 4.1 RCR生效OP场景GaussDB(for MySQL)做了RCR优化,这使得SQL层能够感知InnoDB层返回的记录都是经过过滤的,这意味着SQL层不需要再次过滤。该优化扩展了Offset Pushdown的生效范围,如图2所示。假设有一个二级索引(a,b,c),WHERE条件中的范围条件如下:• a > x• a = x AND b > y• a = x AND b = y AND c > z相关SQL语句如下:create table t0(a int,b int,c int,index a_b_c(a,b,c));insert into t0 values(1,2,3),(4,5,6),(7,8,9);mysql> explain select * from t0 where a > 1 limit 10000,1;+----+-------------+-------+------------+-------+---------------+-------+---------+------+------+----------+------------------------------------+| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |+----+-------------+-------+------------+-------+---------------+-------+---------+------+------+----------+------------------------------------+| 1 | SIMPLE | t0 | NULL | range | a_b_c | a_b_c | 5 | NULL | 2 | 100.00 | Using offset pushdown; Using index |+----+-------------+-------+------------+-------+---------------+-------+---------+------+------+----------+------------------------------------+1 row in set, 1 warning (0.00 sec)mysql> explain select * from t0 where a = 1 and b > 1 limit 10000,1;+----+-------------+-------+------------+-------+---------------+-------+---------+------+------+----------+------------------------------------+| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |+----+-------------+-------+------------+-------+---------------+-------+---------+------+------+----------+------------------------------------+| 1 | SIMPLE | t0 | NULL | range | a_b_c | a_b_c | 10 | NULL | 1 | 100.00 | Using offset pushdown; Using index |+----+-------------+-------+------------+-------+---------------+-------+---------+------+------+----------+------------------------------------+1 row in set, 1 warning (0.01 sec)mysql> explain select * from t0 where a = 1 and b = 1 and c > 1 limit 10000,1;+----+-------------+-------+------------+-------+---------------+-------+---------+------+------+----------+------------------------------------+| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |+----+-------------+-------+------------+-------+---------------+-------+---------+------+------+----------+------------------------------------+| 1 | SIMPLE | t0 | NULL | range | a_b_c | a_b_c | 15 | NULL | 1 | 100.00 | Using offset pushdown; Using index |+----+-------------+-------+------------+-------+---------------+-------+---------+------+------+----------+------------------------------------+1 row in set, 1 warning (0.00 sec)如上SQL语句的WHERE条件经过RCR,SQL层去除冗余的条件,生效OP,提升性能。4.2 ICP生效OP场景对于ICP生效的SQL语句,SQL层在判断满足OP的约束条件之后,会向InnoDB层获取n条记录,InnoDB层则会跳过满足ICP条件的p条记录,把满足ICP条件的n行记录返回给SQL层,如图3所示。具体步骤如下:a) InnoDB 获取 一个record;b) 如果该record可见,则跳转c),如果不确定,检查ICP是否匹配,如果匹配,则跳转到e), 如果不匹配,则跳转到a);c) 如果记录被标记为已删除,跳转到a), 如果没有被标记为已删除,跳转到d);d) 检查ICP是否匹配,如果不匹配,则跳转到a),如果匹配,跳转到f);e) InnoDB使用聚集索引检查MVCC版本,如果检查record是可见的,则跳转到f),如果不是,则跳转到a);f) 如果跳过的记录个数小于Limit Offset下推的值,则跳转到a)获得下一个record;g) 返回record给SQL层,SQL层发送结果给客户端;举例如下:create table t1(a int, b int, INDEX(b));insert into t1 values(4,4),(5,5),(6,6);set rds_empty_redundant_check_in_range_scan = off;mysql> explain select a,b from t1 where b>2 limit 100 offset 1;+----+-------------+-------+------------+-------+---------------+------+---------+------+------+----------+----------------------------------------------+| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |+----+-------------+-------+------------+-------+---------------+------+---------+------+------+----------+----------------------------------------------+| 1 | SIMPLE | t1 | NULL | range | b | b | 5 | NULL | 3 | 100.00 | Using offset pushdown; Using index condition |+----+-------------+-------+------------+-------+---------------+------+---------+------+------+----------+----------------------------------------------+1 row in set, 1 warning (0.00 sec)5. 使用方法除了使用特性开关来生效或者不生效Limit Offset下推优化,还可以使用hint:OFFSET_PUSHDOWN(table_name):生效Limit Offset下推优化NO_OFFSET_PUSHDOWN(table_name):不生效Limit Offset下推优化示例如下:基于TPCH的Schema进行举例,特性开关打开或者使用hint方式可以生效,执行EXPLAIN SQL查看执行计划时,Extra列会展示为Using offset pushdown。1)特性开关打开:mysql> EXPLAIN SELECT * FROM lineitem LIMIT 10000000,10;+----+-------------+----------+------------+------+---------------+------+---------+------+----------+----------+-----------------------+| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |+----+-------------+----------+------------+------+---------------+------+---------+------+----------+----------+-----------------------+| 1 | SIMPLE | lineitem | NULL | ALL | NULL | NULL | NULL | NULL | 59281262 | 100.00 | Using offset pushdown |+----+-------------+----------+------------+------+---------------+------+---------+------+----------+----------+-----------------------+1 row in set, 1 warning (0.00 sec)2) 使用hint:mysql> EXPLAIN SELECT /*+ OFFSET_PUSHDOWN() */ * FROM lineitem LIMIT 10000000,10;+----+-------------+----------+------------+------+---------------+------+---------+------+----------+----------+-----------------------+| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |+----+-------------+----------+------------+------+---------------+------+---------+------+----------+----------+-----------------------+| 1 | SIMPLE | lineitem | NULL | ALL | NULL | NULL | NULL | NULL | 59281262 | 100.00 | Using offset pushdown |+----+-------------+----------+------------+------+---------------+------+---------+------+----------+----------+-----------------------+1 row in set, 1 warning (0.00 sec)mysql> EXPLAIN SELECT /*+ NO_OFFSET_PUSHDOWN() */ * FROM lineitem LIMIT 10000000,10;+----+-------------+----------+------------+------+---------------+------+---------+------+----------+----------+-------+| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |+----+-------------+----------+------------+------+---------------+------+---------+------+----------+----------+-------+| 1 | SIMPLE | lineitem | NULL | ALL | NULL | NULL | NULL | NULL | 59281262 | 100.00 | NULL |+----+-------------+----------+------------+------+---------------+------+---------+------+----------+----------+-------+1 row in set, 1 warning (0.00 sec)6. 性能对比采用TPC-H测试模型,Scale Factor(Gigabytes)为10的数据量,测试如下三种场景,lineitem表结构如下:CREATE TABLE `lineitem` ( `L_ORDERKEY` int NOT NULL, `L_PARTKEY` int NOT NULL, `L_SUPPKEY` int NOT NULL, `L_LINENUMBER` int NOT NULL, `L_QUANTITY` decimal(15,2) NOT NULL, `L_EXTENDEDPRICE` decimal(15,2) NOT NULL, `L_DISCOUNT` decimal(15,2) NOT NULL, `L_TAX` decimal(15,2) NOT NULL, `L_RETURNFLAG` char(1) NOT NULL, `L_LINESTATUS` char(1) NOT NULL, `L_SHIPDATE` date NOT NULL, `L_COMMITDATE` date NOT NULL, `L_RECEIPTDATE` date NOT NULL, `L_SHIPINSTRUCT` char(25) NOT NULL, `L_SHIPMODE` char(10) NOT NULL, `L_COMMENT` varchar(44) NOT NULL, KEY `i_l_partkey` (`L_PARTKEY`), KEY `i_l_partkey_suppkey` (`L_PARTKEY`,`L_SUPPKEY`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci1)如下SQL语句为Q1,访问主表且无谓词条件:mysql> EXPLAIN SELECT * FROM lineitem LIMIT 10000000,10;+----+-------------+----------+------------+------+---------------+------+---------+------+----------+----------+-----------------------+| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |+----+-------------+----------+------------+------+---------------+------+---------+------+----------+----------+-----------------------+| 1 | SIMPLE | lineitem | NULL | ALL | NULL | NULL | NULL | NULL | 59281262 | 100.00 | Using offset pushdown |+----+-------------+----------+------------+------+---------------+------+---------+------+----------+----------+-----------------------+1 row in set, 1 warning (0.00 sec)2)带有谓词条件的查询,如下SQL语句为Q2,访问二级索引的Range查询,同时需要回表获取其他列的信息。mysql> EXPLAIN SELECT * FROM lineitem WHERE l_partkey > 10 AND l_partkey < 200000 LIMIT 5000000, 10;+----+-------------+----------+------------+-------+---------------------------------+-------------+---------+------+----------+----------+----------------------------------------------+| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |+----+-------------+----------+------------+-------+---------------------------------+-------------+---------+------+----------+----------+----------------------------------------------+| 1 | SIMPLE | lineitem | NULL | range | i_l_partkey_suppkey,i_l_partkey | i_l_partkey | 4 | NULL | 10949662 | 100.00 | Using offset pushdown; Using index condition |+----+-------------+----------+------------+-------+---------------------------------+-------------+---------+------+----------+----------+----------------------------------------------+1 row in set, 1 warning (0.00 sec)3)带有谓词条件的查询,如下SQL语句为Q3, 带有Order by且可以利用索引消除排序。mysql> EXPLAIN SELECT * FROM lineitem WHERE l_partkey > 10 AND l_partkey < 200000 ORDER BY l_partkey LIMIT 5000000, 10;+----+-------------+----------+------------+-------+---------------------------------+-------------+---------+------+----------+----------+----------------------------------------------+| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |+----+-------------+----------+------------+-------+---------------------------------+-------------+---------+------+----------+----------+----------------------------------------------+| 1 | SIMPLE | lineitem | NULL | range | i_l_partkey_suppkey,i_l_partkey | i_l_partkey | 4 | NULL | 10949662 | 100.00 | Using offset pushdown; Using index condition |+----+-------------+----------+------------+-------+---------------------------------+-------------+---------+------+----------+----------+----------------------------------------------+1 row in set, 1 warning (0.00 sec)针对上文所述的查询示例Q1、Q2、Q3。图4展示了开启与关闭Limit Offset下推功能的性能对比:基于TPC-H测试模型,Scale Factor(Gigabytes)为10的数据量,Q1提升5.56倍,Q2提升33.07倍,Q3提升33.02倍。7. 总结本文介绍了GaussDB(for MySQL)的Limit Offset下推优化,旨在解决带有Limit Offset查询语句的性能问题。通过将Limit Offset下推到存储引擎层,降低存储引擎和SQL引擎之间交互的数据量,减少二级索引回表的开销,显著提高查询性能。更多推荐
  • 【话题交流】人工智能知识专题——看看大家人工智能AI知识知多少
    本月话题:人工智能AI知识专题随着IT技术的不断发展,知识的不断更新迭代,大家讨论讨论说说看看大家对人工智能AI方面的知识掌握多少,看看大家对目前人工智能AI的了解看看谁是知识小能手
总条数:222 到第
上滑加载中