- 博客(224)
- 收藏
- 关注
原创 GaussDB逻辑解码技术原理
GaussDB逻辑解码技术是华为云DRS服务中用于异构数据库数据同步的核心技术之一。其核心原理是将GaussDB的WAL日志解析为逻辑日志,进而转换为目标数据库的SQL语句,实现数据同步。逻辑解码过程包括读取WAL日志、加载系统表元数据、转换物理变更记录为逻辑变更记录,并通过串行或并行方式完成解码。串行解码效率较低,而并行解码通过多线程并发执行,显著提升了解码性能。并行解码涉及Reader、Decoder和Sender三类线程,分别负责读取日志、解码和发送逻辑变更记录。华为云DRS服务默认采用并行解码,确保
2025-05-22 11:46:28
163
原创 GaussDB关键技术原理_高弹性:hashbucket介绍
GaussDB数据库通过hashbucket技术实现高弹性扩展,解决了业务增长带来的数据分布和节点扩容问题。hashbucket表将数据按hash值聚簇存储,每个DN节点管理多个分片,确保数据均匀分布。在线扩容时,GaussDB采用逻辑和物理两种数据重分布方式,逻辑方式通过SQL接口实现,物理方式则通过文件拷贝和日志追增提升性能。hashbucket表采用段页式存储,减少小文件对文件系统的压力,并在元数据管理中增加分片标识,优化数据管理效率。该技术不仅提升了在线扩容的性能,还解决了复杂查询场景下的性能劣化问
2025-05-22 11:45:47
975
原创 GaussDB关键技术原理:高弹性(五)
本文介绍了GaussDB中的日志多流技术,主要用于hashbucket扩容期间的数据迁移和同步。日志多流通过基线数据和增量数据结合的方式实现扩容,基线数据包括bucket物理文件和CLOG文件,增量数据则通过搬迁和回放XLOG日志进行追增。扩容过程中,MOVE BUCKETS语句触发日志多流流程,涉及老节点主DN、新节点主DN和备DN三个角色。新节点主DN启动receiver线程,与老节点主DN和备DN建立连接,进行基线数据的传输。老节点主DN启动parser线程,筛选并处理增量XLOG日志,确保数据一致性
2025-05-22 11:45:04
568
原创 GaussDB关键技术原理:高弹性(四)
本文详细介绍了GaussDB中hashbucket扩容的关键技术原理。扩容流程主要包括三个步骤:基线数据搬迁、bucket日志流追增和bucket元数据切换。基线数据搬迁涉及生成搬迁计划并进行跨节点文件搬迁;日志流追增则识别增量修改并在目的节点回放日志;最后,元数据切换确保数据一致性并更新路由信息。文章还通过DN节点2扩3的示例,详细描述了扩容的具体流程,包括搬迁命令的接收与执行、数据拷贝、日志解析与回放,以及最终的元数据切换和旧数据清除。此外,文章还介绍了扩容迁移计划的获取,涉及NodeGroup相关概念
2025-05-22 11:42:20
659
原创 GaussDB关键技术原理:高弹性(六)
本文介绍了GaussDB高弹性技术中的扩容实践,重点探讨了TPC-C和Sysbench两种基准测试工具。TPC-C是衡量联机交易处理系统性能的基准测试集,通过每分钟处理的业务量(tpmC)和系统性能价格比来评估系统性能。Sysbench则是一款多线程脚本工具,支持多种测试类型,主要用于测试数据库系统的性能,重点关注每秒事务执行数量(tps)和时延。文章还简要提及了GaussDB集群的安装步骤,使用运维工具集和XML配置文件进行集群配置。通过这些工具和步骤,GaussDB能够有效实现高弹性扩容,提升系统性能。
2025-05-22 11:41:38
179
原创 GaussDB高智能--自治运维技术(中)
本文介绍了GaussDB数据库的自治运维技术,重点探讨了日志分析、慢SQL发现与诊断等关键功能。日志分析通过将非结构化日志流转换为时序数据,结合异常检测机制,实现故障预测和诊断。日志采集模块利用Linux的inotify系统调用监听日志写入事件,并通过LogAnalyst模块进行量化整理,最终将数据存储到时序数据库中。慢SQL发现与诊断则通过训练模型和预测流程,结合数据库关键指标和执行计划,分析慢SQL的根因。这些技术帮助GaussDB实现高效的故障诊断和性能优化,提升数据库的自治运维能力。
2025-05-22 11:22:54
946
原创 GaussDB高智能--自治运维技术(下)
本文继续探讨GaussDB的自治运维技术,重点介绍了索引推荐、分布键推荐和参数调优三个方面。在索引推荐部分,GaussDB提供了单条查询语句的索引推荐、虚拟索引和基于工作负载的索引推荐三种功能。单条索引推荐通过系统函数gs_index_advise()实现,利用SQL引擎和优化器信息进行启发式推荐。虚拟索引则模拟真实索引,避免创建开销,用于优化器评估。基于工作负载的索引推荐则针对多条DML语句,生成优化整体执行时间的索引组合。文章详细描述了索引推荐的执行流程和设计细节,包括对FROM、WHERE、JOIN、
2025-05-22 11:21:24
625
原创 GaussDB高智能--数据库智能化发展史&自治运维技术
GaussDB数据库通过智能化技术(AI)推动数据库管理的发展,主要分为AI4DB和DB4AI两大领域。AI4DB通过机器学习实现自治运维和智能优化,提升数据库的运维效率和查询性能。DB4AI则在数据库内集成机器学习引擎,简化AI算法的调用和模型管理。自治运维技术通过智能监测、趋势预测和异常检测等功能,实现数据库的自监控、自诊断和自调优,显著提升管理效率和系统可靠性。GaussDB的智能化发展标志着
2025-05-22 10:30:40
985
原创 GaussDB高智能--库内AI引擎:模型管理&数据集管理
本文介绍了GaussDB库内AI引擎的模型管理与数据集管理功能。在机器学习算法训练完成后,生成的模型通过store_model接口存储在系统表gs_model_warehouse中,该表记录了模型名称、所有者、创建时间、训练数据量、执行时间、迭代次数、超参数等详细信息,便于开发者观测和调优模型。系统表的结构清晰,支持存储二进制模型及相关参数,为后续推理提供了便利。
2025-05-22 10:29:56
116
原创 GaussDB高智能--库内AI引擎:机器学习算法的训练和推理
GaussDB的库内AI引擎通过内置机器学习算子,结合数据库资源管理和并发扩展能力,实现了高效的机器学习算法训练和推理。该引擎支持SQL-like语法,提供Create Model和Predict等关键字,支持多种AI算法如梯度下降法、KMeans、XGBoost等。查询优化层生成AI训练和预测的执行计划,并通过Explain语句分析执行开销。AI底座提供超参优化功能,自动选择最佳参数,提升训练性能。存储层支持数据集管理和模型管理,确保数据一致性和模型可用性。此外,库内AI引擎还支持异构计算,统一调度CPU
2025-05-22 10:29:05
184
原创 GaussDB的BTree索引和UBTree索引
本文深入探讨了GaussDB中的BTree索引和UBTree索引。BTree索引是Astore存储引擎的默认索引,而UBTree索引则是Ustore存储引擎的默认索引,后者在叶子节点层额外维护了MVCC信息。两者均基于Blink Tree结构,具有高并发读写能力,得益于其独特的highkey和兄弟节点连接设计。这些特点使得BTree和UBTree在查询和插入操作时能够采用更友好的加锁协议,从而在高并发场景下表现出色。文章还展望了这两种索引的未来演进,强调了它们在数据库性能优化中的重要性。
2025-05-22 10:28:28
949
原创 GaussDB 通过DBeaver连接实例
本文介绍了如何通过DBeaver客户端连接GaussDB数据库实例。首先,需要根据实例版本下载对应的驱动包和校验包,并通过命令行工具校验驱动包的完整性。接着,解压驱动包获取gsjdbc4.jar文件。然后,从DBeaver官网下载并安装客户端。在DBeaver中,通过“驱动管理器”创建新驱动,配置驱动名称、类名、URL模板等参数,并添加gsjdbc4.jar文件。最后,在DBeaver中创建新连接,输入主机IP、端口、数据库名、用户名和密码,测试连接
2025-05-22 10:11:17
799
原创 GaussDB 企业版轻量化部署探索
本文探讨了GaussDB企业版的轻量化部署过程。首先,介绍了从华为官网下载GaussDB企业版软件的路径,并指出需要注册并升级为“合作方”账户才能下载。接着,详细说明了GaussDB企业版的两种部署类型:轻量化部署和HCS(华为私有云技术栈)部署。轻量化部署不依赖云底座,包含GaussDB的运维管控平台TPOPS和数据迁移产品DRS。文章还提供了部署方案,包括单机房和同城双机房的部署方式,并讨论了部署资源要求,如服务器配置和目录结构。最后,提到了部署过程中会创建的操作系统账户。整体而言,本文为GaussDB
2025-05-22 10:10:42
552
原创 GaussDB 企业版轻量化部署探索(二)
国产分布式数据库的规模往往很大,所以需要借助自动化运维平台来运维。自动化运维平台本质上是将运维流程标准化、自动化。好的自动化运维平台设计上架构清晰、扩展性好、运维便利性高。大厂出口的自动化运维平台都久经考验,可学习研究借鉴的价值很高。GaussDB数据库体系庞大,架构复杂,学习和运维难度也非同一般,所以也很依赖自动化运维平台TPOPS。
2025-05-22 10:09:27
200
原创 GaussDB关键技术原理:高弹性(六)
对于同一个库,同一个模式下的两张表:当表1完成扩容而表2未开始扩容时,两个表的位于在不同的组节点(NodeGroup)上,此时对表1,表2执行JOIN操作会造成CN无法利用分布式架构下推JOIN操作到各个DN上执行,而是会生成跨DN的stream计划进行数据重分布后在进行JOIN,大量的跨节点通信导致性能劣化严重,如图5所示。另外,TPC-C还可以通过系统性能价格比(cost-per-tpmC)的方式来体现,即测试系统报价(美元)与流量指标的比值。在获得相同的tpmC值的情况下,系统报价越低越好。
2025-02-27 11:18:53
218
原创 GaussDB关键技术原理:高弹性(四)
需要说明的是,parser_latest_lsn_new与rcvr_redo_latest_lsn_new是为日志多流传输框架要传输的bucket日志流封装的一层新LSN,以过滤掉其他bucket或非bucket模式的日志。bucket元数据切换:当bucket日志流追增完成后,原节点和目的节点的bucket数据达到一致状态,可以对原节点的bucket进行下线删除,对目的节点的bucket进行上线操作,同时修改CN上的bucket map映射使新的业务能够路由到正确的DN节点。
2025-02-27 11:17:48
701
原创 GaussDB关键技术原理:高弹性(五)
类似于常规锁的表锁,对于hashbucket表,物理文件是库级bucket化的,扩容过程也是按照bucket级别上线的,因此引入一种新型的锁——bucket锁,每个bucket对应一把锁。DN2的xid没有调整,是从3开始分配的。日志多流技术中,新节点上的数据可能来自于不同的老节点,相同的tablespace及database在不同DN上对应的tablespaceid及dbid很可能是不同的,因此在日志回放前需要将日志中的tablespaceid及dbid替换成本地的tablespaceid及dbid。
2025-02-27 11:16:18
875
原创 GaussDB高智能--自治运维技术(下)
分布键推荐功能根据时间节点划分,可划分为两种使用场景,一是在数据迁移前,可支持两种数据格式,一种是基于友商数据库中的存储过程和少量关于数据分布的统计信息,另一种是基于友商数据库的统计报告和少量关于数据分布的统计信息进行初步的分布键推荐;重复步骤一和步骤二,生成的多列(单列)索引共同组成候选索引集合;(1)在数据库内部建立虚拟索引,该虚拟索引只具有真实索引的结构体中的信息,包括创建索引的表名、列名和其他数据库需要的统计信息,避免了真实索引的创建开销,该索引仅适合于优化器进行估计,不能提供真正的索引扫描;
2025-02-27 11:15:11
614
原创 GaussDB高智能--数据库智能化发展史&自治运维技术
GaussDB智能监测程序采取服务化方式部署,通过RPC通道(默认Https协议,且校验数据库用户名密码,不存在空密码访问情况)实现,可以获取数据库的即时信息,也可以向数据库下发执行动作(需要用户提供的用户具备执行权限,具体数据库用户由用户指定)。其中数据存储用于接收来自数据采集层发生来的数据,存储数据源可以是多种维度或者类型,包括普罗米修斯、时序数据库(OpenTSDB等)、MongoDB、SQLite等,自治运维服务内置对接接口,每个自治服务模块与存储数据源的交互,获取数据并进行分析处理。
2025-02-27 11:14:10
913
原创 GaussDB高智能--智能优化器介绍
书接上文库内AI引擎:模型管理&数据集管理,从模型管理与数据集管理两方面介绍了GaussDB库内AI引擎,本篇将从智能优化器方面解读GaussDB高智能技术。4 智能优化器随着数据库与AI技术结合的越来越紧密,相关技术在学术界的数据库各大顶会中出现井喷现象。如下图所示,从2019年至2022年,AI优化器、AI配置调优、AI存储管理及DB4AI等领域的论文逐年递增,越来越多的技术实现从规则到智能的转换、从人工到自治的转换、从经验到数据的转换、从离线到在线的转换。
2025-02-27 11:08:31
542
原创 GaussDB高智能--数据库智能化发展史&自治运维技术
GaussDB智能监测程序采取服务化方式部署,通过RPC通道(默认Https协议,且校验数据库用户名密码,不存在空密码访问情况)实现,可以获取数据库的即时信息,也可以向数据库下发执行动作(需要用户提供的用户具备执行权限,具体数据库用户由用户指定)。其中数据存储用于接收来自数据采集层发生来的数据,存储数据源可以是多种维度或者类型,包括普罗米修斯、时序数据库(OpenTSDB等)、MongoDB、SQLite等,自治运维服务内置对接接口,每个自治服务模块与存储数据源的交互,获取数据并进行分析处理。
2025-02-27 11:07:47
875
原创 GaussDB高智能--库内AI引擎:机器学习算法的训练和推理
目前死点的定义是:一个一维数组中没有坐标的点,以及没有定义(NULL)坐标(非全维)的点,在清洗输入后,所有的点应该是有效点。在AI底座中,提供超参优化能力,即用户不指定超参数或者指定超参数的范围,自动选择适合的参数,该功能极大提升用户使用的效率,同时达到最佳的训练性能。在每个算子实现过程中,遵循执行器算子实现逻辑,下层对接Scan算子,上次提供AI算子的训练或推理结果。字段名称存储模型的名称,初始中点初始化,用于查找一组初始的中心,距离是用于计算的距离函数,n_features是数据点的维度。
2025-02-27 11:05:15
203
原创 GaussDB高智能--库内AI引擎:机器学习算法的训练和推理
目前死点的定义是:一个一维数组中没有坐标的点,以及没有定义(NULL)坐标(非全维)的点,在清洗输入后,所有的点应该是有效点。在AI底座中,提供超参优化能力,即用户不指定超参数或者指定超参数的范围,自动选择适合的参数,该功能极大提升用户使用的效率,同时达到最佳的训练性能。在每个算子实现过程中,遵循执行器算子实现逻辑,下层对接Scan算子,上次提供AI算子的训练或推理结果。字段名称存储模型的名称,初始中点初始化,用于查找一组初始的中心,距离是用于计算的距离函数,n_features是数据点的维度。
2025-02-27 11:04:45
165
原创 GaussDB的BTree索引和UBTree索引
本文先介绍了BTree索引和UBTree索引的存储结构BlinkTree,该索引的所有节点都和兄弟节点相连接,并且每个节点新增一个highkey作为节点key值的上边界。随后分析了BTree索引和UBTree索引,相比传统B+树在读写场景、写写场景有更强的并发能力的原因,这主要是因为Blink Tree特殊的存储结构,它可以支持move right机制,有效解决事务期间节点分裂的场景,使得事务在遍历Blink Tree时每个时刻持有更少的锁。最后,还介绍了UBTree的MVCC能力和独立垃圾回收能力。
2025-02-27 11:04:09
719
原创 GaussDB 通过DBeaver连接实例
需要连接分布式版实例,您可以进入到GaussDB_driver\Distributed\Euler2.5_X86_64路径下,找到GaussDB-Kernel_503.1.0.SPC2300_Euler_64bit_Jdbc.tar.gz包进行解压,获取到gsjdbc4.jar包。将1中获取到的驱动包解压到本地, 根据您需要连接的实例类型,进入驱动包对应类型目录下的任意一个操作系统目录,找到GaussDB-Kernel_在“打开”栏,输入“cmd”,按“Enter”回车,打开命令行页面。
2025-02-27 11:03:28
995
原创 GaussDB 企业版轻量化部署探索
上面部署成功后会提示TPOPS,换我的环境就是。登录初始用户是admin,初始密码是Gauss_246,第一次登录会要求修改初始密码。TPOPS首页总体上GaussDB运维平台部署体验还是很顺畅的。TPOPS平台架构采取了微服务的设计加docker容器的技术,使得对部署资源最低要求不低(8C64G微服务的架构也让人看到产品升级策略会相对比较灵活。个别组件的问题修复可以单独升级。并且整体部署架构扩容也很方便。如果是管理上千个数据库实例节点,可以将多个微服务分开部署,推测不管是同机房还是跨机房部署都能很好适应。
2025-02-27 11:02:22
848
原创 GaussDB 企业版轻量化部署探索(二)
国产分布式数据库的规模往往很大,所以需要借助自动化运维平台来运维。自动化运维平台本质上是将运维流程标准化、自动化。好的自动化运维平台设计上架构清晰、扩展性好、运维便利性高。大厂出口的自动化运维平台都久经考验,可学习研究借鉴的价值很高。GaussDB数据库体系庞大,架构复杂,学习和运维难度也非同一般,所以也很依赖自动化运维平台TPOPS。
2025-02-27 11:01:51
178
原创 [GaussDB] GaussDB数据计算路由层(Coordinator)关键技术方案
这样一来,可供选择的路径有6种之多。GaussDB Kernel 通常采用自底向上的路径搜索方法,首先生成了每个表的扫描路径,这些扫描路径在执行计划的最底层(第一层),在第二层开始考虑两表连接的最优路径,即枚举计算出每两表连接的可能性,在第三层考虑三表连接的最优路径,即枚举计算出三表连接的可能性,直到最顶层为止生成全局最优的执行计划。这条语句,索引扫描需要访问索引中的全部数据和表中的全部数据,并且带来巨量的随机I/O,而全表扫描只需要顺序的访问表中的全部数据,因此在这种情况下,全表扫描的代价更低。
2024-11-29 09:27:22
688
原创 [GaussDB] GaussDB全局事务管理层(GTM)关键技术方案
不是每次都写ETCD, 而是采用定期持久化到ETCD 里, 每次写ETCD的CSN要加上一个backup_step (100w), 一旦GTM故障,CSN从ETCD读取出来的值保证单调递增。(1.5 PC)DN 上行级别可见性判断:DN处于prepared状态的事务依赖对应CN上的事务是否提交,如果已经提交,且CSN比snapshot.CSN小,就可见对DN上处于prepared的事务,CN上的事务不处于提交状态,则必须判断是否残留状态,回滚。图3 跨节点事务处理流程。5.1 单节点的事务。
2024-11-29 09:25:28
339
原创 [GaussDB] GaussDB集群管理层(CM)关键技术方案
接收并处理 CM Agent 上报的实例状态,下发仲裁指令保证各类故障和异常场景下集群的可用性对应 cm_server 二进制文件,常驻服务CM与各类组件的主备数据同步、倒换、重建等机制高度融合,提供告警、重启、倒换、隔离等手段,赋予数据库实例故障恢复及自愈的高可用(HA)能力,保证数据的可靠性和完整性,最终实现集群对外的业务连续性。DN 故障单点故障可自动恢复主 DN 故障时,仲裁备 DN 升主继续提供服务备 DN 故障时,主 DN 将日志和数据同步至从备,业务不受影响。2) 同等条件下,静态主优先。
2024-11-29 09:24:41
956
原创 [GaussDB] GaussDB数据库中逻辑对象关系简析
总结GaussDB数据库的逻辑对象之间的关系,如下图所示:在逻辑层面,GaussDB数据库以不同的database进行逻辑上的区分,一个数据库实例中可以定义多个database,database内可以定义不同的schema、schema内又包含不同的数据库对象。在物理存储层面,表空间对应的是实际的数据存储目录,同一个database可以使用不同的表空间、同一个表空间又可以被不同的database使用。不过在实际使用过程中建议使用默认的表空间。
2024-11-29 09:23:56
816
原创 [GaussDB] GaussDB数据库的备份与恢复
支持导出的数据库可以是默认数据库postgres,也可以是自定义数据库。例如,T1时刻启动gs_dump导出A数据库,那么导出数据结果将会是T1时刻A数据库的数据状态,T1时刻之后对A数据库的修改不会被导出。gs_dump是一款用于导出数据库相关信息的工具,支持导出完整一致的数据库对象(数据库、模式、表、视图等)数据,同时不影响用户对数据库的正常访问。数据库级备份前,请执行如下命令检查数据库运行状态,cluster_state为Normal时表示数据库正常运行,可以备份数据库。balanced:平衡状态。
2024-11-29 09:23:25
986
原创 [GaussDB] GaussDB数据库SQL系列-复合查询
复合查询是SQL查询的一个高级特性,它允许用户通过结合多个简单查询来执行更复杂的数据检索操作。通过探索复合查询,包括使用UNION、INTERSECT、EXCEPT以及高级技巧如子查询和各类JOIN操作,我们可以看到GaussDB在处理复杂数据查询方面的强大能力。掌握这些高级查询技能对于进行深入的数据分析至关重要,能够显著提升在GaussDB中进行数据处理和分析的效率和准确性。复合查询是SQL中一种强大的工具,用于结合多个独立查询结果以形成一个单一的查询结果。INTERSECT:返回两个查询共有的记录。
2024-11-29 09:22:54
575
原创 [GaussDB] GaussDB轻量化运维管理工具介绍
本期课程将从管理平台的架构出发,结合平台的实例管理、实例升级、容灾管理和监控告警的功能和操作介绍,全面覆盖日常运维操作,带您理解并熟练运用GaussDB运维平台完成运维工作。输入实例节点任意一个管理IP地址,点击检查实例节点,检查主机是否已经录入主机管理,主机状态在线则已经录入允许导入,主机状态离线则未录入,无法执行导入。确认“实例扩容过程中会有锁表操作,可能会阻塞业务,属于高危操作。可以通过灾备升主,将容灾备实例提升为一个包含主DN的实例,使其可以对外提供服务,升主成功后,之前的容灾关系将失效。
2024-11-29 09:21:50
747
原创 [GaussDB] GaussDB基于智能化(AI)技术,打造AI4DB和DB4AI两大技术高地,重构数据库内核核心组件,提升数据库管理和优化技术,满足数据库科学家对普惠AI的诉求
其中自治运维系统提供用户和DBA进行数据库系统的智能化运维管理能力,包括自监控、自诊断、自调优等方面端到端的运维管理能力,主要目标是提升系统的运维诊断效率,让数据库系统更高效和可靠。GaussDB基于智能化(AI)技术,打造AI4DB和DB4AI两大技术高地,重构数据库内核核心组件,提升数据库管理和优化技术,满足数据库科学家对普惠AI的诉求。DB4AI通过数据库使能AI,满足数据科学家在数据治理方面的诉求,仅通过简易SQL调用,即刻完成机器学习算法的训练和推荐,实现人人会AI,人人用AI的普惠应用。
2024-11-29 09:21:00
378
原创 [GaussDB] GaussDB安全关键技术一:密态等值查询
当查询任务发起后,客户端需要对当前的Query进行解析,如果查询语句中涉及加密列,则对对应的列参数(加密列关联参数)也要进行加密(这里说的加密均需要为确定性加密,否则无法支持对应的查询);在客户端解析模块,需要识别所有涉及的属性是否包含加密列信息,如果不涉及则直接返回并将查询发送到服务端,如果涉及加密列,则需要按照对应的列加密密钥和加密算法加密参数信息,然后发送查询任务到服务端。其中在客户端需要设计轻量级的解析模块,完成对查询语句的解析,定义密态等值查询所支持的规格。密态数据库的总体架构示意图如下图所示。
2024-11-29 09:20:27
482
原创 [GaussDB] GaussDB 数据导入导出工具介绍
通过DN并行导入导出,解决了CN在分布式常规导入导出的瓶颈问题,极大提升了导入导出的效率。a.sqlldr_tbl是目标表名,truncate表示如果表中有数据,则全部删除后再导入,可选值包括:insert、append、replace、truncate。–gs_copy_summary记录执行结果汇总,包括成功行数,出错行数,忽略行数,空行数。–错误表pgxc_copy_error_log。gs_loader工具是一款兼容Oracle的sqlldr的导入工具,语法基本兼容Oracle的sqlldr。
2024-11-29 09:20:11
747
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人