CN111427920A - 数据采集方法、装置、系统、计算机设备及存储介质 - Google Patents

数据采集方法、装置、系统、计算机设备及存储介质 Download PDF

Info

Publication number
CN111427920A
CN111427920A CN202010181413.XA CN202010181413A CN111427920A CN 111427920 A CN111427920 A CN 111427920A CN 202010181413 A CN202010181413 A CN 202010181413A CN 111427920 A CN111427920 A CN 111427920A
Authority
CN
China
Prior art keywords
sampling
histogram
data
statistical information
information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202010181413.XA
Other languages
English (en)
Other versions
CN111427920B (zh
Inventor
李少锋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202010181413.XA priority Critical patent/CN111427920B/zh
Publication of CN111427920A publication Critical patent/CN111427920A/zh
Application granted granted Critical
Publication of CN111427920B publication Critical patent/CN111427920B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2462Approximate or statistical queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2471Distributed queries
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Probability & Statistics with Applications (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Fuzzy Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明适用于数据库技术领域,其各实施例公开了一种数据采集方法、装置、系统、计算机设备及存储介质,其中,所述数据采集方法包括:对增量数据进行统计信息的若干次并发采样,得到对应于统计信息的多个采样信息,每一个采样信息对应一次并发采样,所述增量数据是在对数据库中的数据进行写操作过程中生成的;将对应于统计信息的多个采样信息合并,得到所述增量数据的统计信息;存储所述增量数据的统计信息。采用本发明所提供的数据采集方法、装置、系统、计算机设备及存储介质,能够有效地解决现有技术中数据采集效率不高的问题,以此充分地保障基于统计信息的高效数据采集和查询。

Description

数据采集方法、装置、系统、计算机设备及存储介质
技术领域
本发明涉及数据库领域,尤其涉及一种数据采集方法、装置、系统、计算机设备及存储介质。
背景技术
随着数据库中数据的迅速增长,及时地为用户提供数据采集和查询服务的响应率势必受到影响,由此,提出针对数据库中的数据采集统计信息(CBO Stat),以根据采集到的统计信息,计算最佳的SQL执行计划,从而有效地缩短为用户提供数据采集和查询服务的响应时间。
目前,关于统计信息的采集,主要包括基于Spark的采集方案和基于Hive的采集方案,然而,上述方案中,要么不支持多种类型的数据表,要么支持多种类型的数据表却数据采集效率低下。
由上可知,在支持多种类型的数据表前提下,如何提高数据采集效率尚待解决。
发明内容
本发明各实施例提供一种数据采集方法、装置及存储介质,以解决相关技术中存在的数据采集效率不高的问题。
其中,本发明所采用的技术方案为:
根据本发明的一个方面,一种数据采集方法,包括:对增量数据进行统计信息的若干次并发采样,得到对应于统计信息的多个采样信息,每一个采样信息对应一次并发采样,所述增量数据是在对数据库中的数据进行写操作过程中生成的;将对应于统计信息的多个采样信息合并,得到所述增量数据的统计信息;存储所述增量数据的统计信息。
根据本发明的一个方面,一种数据采集装置,包括:采样模块,用于对增量数据进行统计信息的若干次并发采样,得到对应于统计信息的多个采样信息,每一个采样信息对应一次并发采样,所述增量数据是在对数据库中的数据进行写操作过程中生成的;合并模块,用于将对应于统计信息的多个采样信息合并,得到所述增量数据的统计信息;存储模块,用于存储所述增量数据的统计信息。
在一个实施例中,所述对象调用单元,包括:封装子单元,用于将所述采样行号对应的记录封装为目标对象;调用子单元,用于从所述线程池中获取空闲的线程调用所述目标对象,得到一个采样信息。
在一个实施例中,所述表统计信息合并单元,包括:第一合并子单元,用于当所述数据备份模式为增量模式,计算多个采样信息的表统计信息之和,作为所述增量数据的表统计信息;或者,第二合并子单元,用于当所述数据备份模式为全量模式,将采样时间最晚的采样信息的表统计信息,作为所述增量数据的表统计信息。
在一个实施例中,所述列统计信息合并单元,包括:直方图创建子单元,用于对多个采样信息进行遍历,根据当前一个采样信息的列统计信息创建第二直方图,所述第二直方图区别于由前若干个采样信息的列统计信息创建的第一直方图;直方图生成子单元,用于根据所述第一直方图、所述第二直方图中桶的属性,生成第三直方图;信息获取子单元,用于待多个采样信息完成遍历,根据所述第三直方图中桶的属性,得到所述增量数据的列统计信息。
在一个实施例中,所述桶的属性包括桶在直方图中的索引;所述直方图生成子单元,包括:遍历子单元,用于对所述第一直方图、所述第二直方图中的桶进行遍历,将所述第一直方图中遍历到的桶作为第一当前桶,将所述第二直方图中遍历到的桶作为第二当前桶;第一添加子单元,用于当所述第一当前桶、所述第二当前桶的索引满足第一生成条件,将所述第一当前桶和/或所述第二当前桶,添加至所述第三直方图;第二添加子单元,用于当所述第一当前桶、所述第二当前桶的索引满足第二生成条件,将所述第一直方图中未添加的桶,添加至所述第三直方图;第三添加子单元,用于当所述第一当前桶、所述第二当前桶的索引满足第三生成条件,将所述第二直方图中未添加的桶,添加至所述第三直方图。
在一个实施例中,所述桶的属性包括桶的宽度、高度、上限和下限;所述第一添加子单元,包括:第一桶添加子单元,用于如果所述第一当前桶的上限小于所述第二当前桶的下限,则将所述第一当前桶添加至所述第三直方图;第二桶添加子单元,用于如果所述第一当前桶的下限大于所述第二当前桶的上限,则将所述第二当前桶添加至所述第三直方图;否则,通知第三桶添加子单元,用于在所述第三直方图中构造一个新桶,将所述第一当前桶、所述第二当前桶的高度之和作为所述新桶的高度,并将所述第二当前桶的宽度作为所述新桶的宽度。
在一个实施例中,所述存储模块,包括:信息写入单元,用于将所述增量数据的统计信息写入内存队列;信息读取单元,用于利用消费者线程,从所述内存队列中读取所述增量数据的统计信息,进行持久化存储。
根据本发明的一个方面,一种数据采集系统,包括:用户端和服务器端;所述用户端,用于针对数据库中的目标数据,向所述服务器端发送采集指令,请求服务器端采集所述目标数据;所述服务器端,用于当接收到所述采集指令,根据所述目标数据的统计信息计算最佳的SQL执行路径,所述目标数据的统计信息是按照如上所述的数据采集方法采集得到的;所述服务器端,还用于根据计算得到的SQL执行路径,进行所述目标数据的采集;所述用户端,还用于接收所述服务器端采集到的所述目标数据。
根据本发明的一个方面,一种计算机设备,包括处理器及存储器,所述存储器上存储有计算机可读指令,所述计算机可读指令被所述处理器执行时实现如上所述的数据采集方法。
根据本发明的一个方面,一种存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的数据采集方法。
在上述技术方案中,数据采集过程中,一方面,对增量数据进行统计信息的若干次并发采样,得到对应于统计信息的多个采样信息,每一个采样信息对应一次并发采样;另一方面,将对应于统计信息的多个采样信息合并,得到增量数据的统计信息,并将该增量数据的统计信息存储,由此实现基于并发采样和增量更新的数据采集机制,避免单线程采集和全量采集,从而有效地解决了现有技术中存在的数据采集效率不高的问题。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并于说明书一起用于解释本发明的原理。
图1是根据本发明所涉及的实施环境的示意图。
图2是根据一示例性实施例示出的一种计算机设备的硬件结构图。
图3是根据一示例性实施例示出的一种数据采集方法的流程图。
图4是图3对应实施例中步骤310在一个实施例的流程图。
图5是图4对应实施例中步骤313在一个实施例的流程图。
图6是图3对应实施例中步骤330在一个实施例的流程图。
图7是图6对应实施例所涉及的直方图的示意图。
图8是图6对应实施例中步骤333在一个实施例的流程图。
图9是图8对应实施例所涉及的合并过程中直方图的示意图。
图10是图3对应实施例中步骤350在一个实施例的流程图。
图11图10对应实施例所涉及的统计信息存储的示意图。
图12是根据一应用场景示出的一种数据采集方法的时序图。
图13图12所涉及的数据采集方法的总体架构示意图。
图14是根据一示例性实施例示出的一种数据采集装置的框图。
图15是根据一示例性实施例示出的一种计算机设备的框图。
通过上述附图,已示出本发明明确的实施例,后文中将有更详细的描述,这些附图和文字描述并不是为了通过任何方式限制本发明构思的范围,而是通过参考特定实施例为本领域技术人员说明本发明的概念。
具体实施方式
这里将详细地对示例性实施例执行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
如前所述,统计信息的采集方案,主要包括基于Spark的采集方案和基于Hive的采集方案。
第一种方案,基于内存的大数据分布式计算框架Spark,通过内置通用的基于RDD的采集机制,支持对任意类型的数据表进行统计信息的采集。然而,由于其内置单线程连接Jdbc外部表,统计信息的采集非常缓慢,例如,10亿级表的统计信息采集需要数十个小时甚至几天;同时,尚无法支持对大数据表统计信息的采样。
第二种方案,Hive只支持对指定Hive表和分区进行统计信息的采集,采集速度较快,但是无法支持其他类型(例如MySQL、PostgreSQL等类型)的数据表进行统计信息的采集。
由此可见,统计信息的采集,在支持多种类型的数据表前提下,仍存在采集效率低下的缺陷。
为此,本发明特提出了一种数据采集方法,不仅能够支持多种类型的数据表,而且基于并发采样和增量更新的数据采集机制,有效地提高了数据采集效率,相应地,提出了一种数据采集装置,可部署于具备冯诺依曼体系结构的计算机设备,例如,计算机设备为台式电脑、服务器等,以此实现高效的数据采集方法。
图1为一种数据采集方法所涉及的实施环境的示意图。该实施环境包括用户端110和服务器端130。
其中,用户端110可以是台式电脑、笔记本电脑、平板电脑、智能手机、智能音箱、智能手表或者其他可提供网络通信功能的电子设备,在此不进行具体限定。
服务器端130可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器,或者多个云服务器构成的云计算中心,在此也不构成具体限定。
用户端110与服务器端130之间通过有线或者无线等通信方式进行直接或者间接地连接,并通过该连接实现用户端110与服务器端130之间的数据传输。例如,传输的数据包括但不限于:采集指令、数据库中的数据等等。
通过用户端110与服务器端130的交互,用户便能够借助用户端110针对数据库中的目标数据,向服务器端130发送采集指令(SQL命令),请求服务器端130查询并采集该目标数据。
对于服务器端130而言,当接收到针对目标数据的采集指令,便根据该目标数据的统计信息计算最佳的SQL执行路径,以生成该SQL执行路径对应的最优执行计划,进而基于该最优执行计划进行目标数据的查询和采集,有效地缩短SQL执行时间,为用户提供高效的数据采集和查询服务。
在用户端110,用户便能够获得目标数据。
其中,统计信息是基于并发采样和增量更新的采集机制采集得到的,该统计信息采集之后,可以存储在服务器端130,也可以存储在区别于服务器端130的外部存储系统,此处并非构成具体限定。
图2是根据一示例性实施例示出的一种计算机设备的硬件结构框图。该种计算机设备适用于图1所示出实施环境的服务器端130。
需要说明的是,该种计算机设备只是一个适配于本发明的示例,不能认为是提供了对本发明的使用范围的任何限制。该种计算机设备也不能解释为需要依赖于或者必须具有图2中示出的示例性的计算机设备200中的一个或者多个组件。
计算机设备200的硬件结构可因配置或者性能的不同而产生较大的差异,如图2所示,计算机设备200包括:电源210、接口230、至少一存储器250、以及至少一中央处理器(CPU,Central Processing Units)270。
具体地,电源210用于为计算机设备200上的各硬件设备提供工作电压。
接口230包括至少一有线或无线网络接口,用于与外部设备交互。例如,进行图1所示出实施环境中用户端110与服务器端130之间的交互。
当然,在其余本发明适配的示例中,接口230还可以进一步包括至少一串并转换接口233、至少一输入输出接口235以及至少一USB接口237等,如图2所示,在此并非构成具体限定。
存储器250作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,其上所存储的资源包括操作系统251、应用程序253及数据255等,存储方式可以是短暂存储或者永久存储。
其中,操作系统251用于管理与控制计算机设备200上的各硬件设备以及应用程序253,以实现中央处理器270对存储器250中海量数据255的运算与处理,其可以是WindowsServerTM、Mac OS XTM、UnixTM、LinuxTM、FreeBSDTM等。
应用程序253是基于操作系统251之上完成至少一项特定工作的计算机程序,其可以包括至少一模块(图2中未示出),每个模块都可以分别包含有对计算机设备200的一系列计算机可读指令。例如,数据采集装置可视为部署于计算机设备200的应用程序253。
数据255可以是存储于磁盘中的照片、图片等,还可以是数据表、统计信息等等,存储于存储器250中。
中央处理器270可以包括一个或多个以上的处理器,并设置为通过至少一通信总线与存储器250通信,以读取存储器250中存储的计算机可读指令,进而实现对存储器250中海量数据255的运算与处理。例如,通过中央处理器270读取存储器250中存储的一系列计算机可读指令的形式来完成数据采集方法。
此外,通过硬件电路或者硬件电路结合软件也能同样实现本发明,因此,实现本发明并不限于任何特定硬件电路、软件以及两者的组合。
请参阅图3,在一示例性实施例中,一种数据采集方法适用于计算机设备,例如,该计算机设备为图1所示出实施环境中的服务器端130,该计算机设备的结构可以如图2所示。
该种数据采集方法可以由计算机设备执行,也可以理解为由计算机设备中运行的应用程序执行。在下述方法实施例中,为了便于描述,以各步骤的执行主体为计算机设备加以说明,但是并不对此构成限定。
该种数据采集方法可以包括以下步骤:
步骤310,对增量数据进行统计信息的若干次并发采样,得到对应于统计信息的多个采样信息。
首先说明的是,所述增量数据是在对数据库中的数据进行写操作过程中生成的。该写操作包括但不限于数据新增、数据删除、数据修改等。
关于增量数据的获取,可以通过快照实现。该快照实质是对数据库中的数据进行拷贝,也即是,数据库中数据在某个时间点(例如写操作发生之前的时间点)的映像,以此来区别写操作发生前后的数据。
具体地,在写操作发生之前,对数据库中的数据进行拷贝,即得到数据库的快照。那么,相对于快照而言,在写操作发生之后,该数据库中区别于快照中数据的任何数据,即视为增量数据。
值得一提的是,相对于增量数据而言,全量数据包括快照中的数据和增量数据。那么,统计信息,既可以针对全量数据进行采集,以此充分地保障数据采集过程的一致性,也可以基于增量数据进行采集,以此充分地保障数量采集过程的高效性。
本实施例中,针对增量数据,进行统计信息的采集。
在此,结合表1,简要地说明数据库中数据的表现形式,即数据库中的数据通常基于数据表实现。
表1
学号 姓名 性别 语文 数学 英语
001 张三 97 100 97
002 李四 98 100 100
003 王五 99 98 100
004 赵六 97 100 95
如表1所示,每一行数据视为数据表的一行记录,例如,学号001、姓名张三、性别男、语文97、数学100、英语97视为第一行记录,学号002、姓名李四、性别男、语文98、数学100、英语100视为第二行记录,以此类推。
每一列数据视为数据表的一个字段,例如,“学号”、“姓名”、“性别”、“语文”、“数学”、“英语”视为各字段的字段名,“001”、“李四”、“女”、“100”等等则视为不同字段中的数值。
那么,数据库中的数据,实质指的是数据表中各记录所包含的各字段。应当理解,对于同一个数据表而言,不同字段的字段名是唯一的,但是不同字段中的数值可能相同,例如,就表1中第一行记录、第二行记录来说,字段“数学”中的数值均为100。而每一行记录也是唯一的,例如,记录可通过字段“学号”进行唯一地表示,即,记录“001”表示第一行记录,记录“002”表示第二行记录,以此类推。
基于此,用户便能够对数据库中的数据表加以访问,即,借助用户端向计算机设备发送采集指令,以对数据库中的目标数据进行采集。举例来说,假设采集指令中指示用户请求采集的目标数据包括:指定数据表为表1、指定记录为记录“001”(即第一行记录)、指定字段的“英语”字段,由此,通过计算机设备为用户提供的数据采集和查询服务,用户接收到计算机设备返回的目标数据即为97。
由此可知,统计信息,包括表统计信息和列统计信息。
其中,表统计信息,与数据表的整体信息有关,包括但不限于数据表中记录的总行数、数据表的总字节数等等。列统计信息,与数据表中的字段信息有关,包括但不限于各字段的平均长度、各字段的最大长度、每一个字段中数值的最大值、每一个字段中数值的最小值、每一个字段中数值的个数、数据表中空字段的个数等等。
以表1为例进行说明,就表统计信息来说,数据表中记录的总行数=4行,数据表中的总字节数=4行×6列×1字节=24字节,其中,假设每一个字段中的数值通过1个字节表示。
就列统计信息来说,各字段的平均长度=各字段的最大长度=数据表中记录的总行数=4行,数据表中空字段的个数=0个,以字段名为“语文”的字段进行说明,该字段中数值的最大值=99,该字段中数值的最小值=97,该字段中数值为97的个数=2个,该字段中数值为98的个数=1个,该字段中数值为99的个数=1个。
通过如此设置,实现了基于增量更新的数据采集机制,也就是说,只采集增量数据的统计信息,避免进行全量数据的统计信息的采集,以此有效地缩短了数据采集时间,进而有利于提升数据采集效率。
其次,发明人意识到,即使是对增量数据的统计信息进行采集,如果数据表中涉及修改的记录的总行数太大,仍将耗费较长的数据采集时间,而影响数据采集效率,则不利于提升用户的数据库访问体验。
因此,本实施例中,对增量数据的统计信息进行采集,通过若干次采样实现。也可以认为是,每一次采样,获得增量数据的统计信息所对应的一个采样信息。
其中,采样,针对增量数据中涉及修改的若干行记录而言,是指从该涉及修改的记录中抽取至少一行记录进行统计信息的采集,也即是,采集增量数据的统计信息所对应的一个采样信息,可以对增量数据中固定行数/可变行数的记录进行随机采样,也可以对增量数据中固定行数/可变行数的记录进行顺序采样,在此并未进行具体限定。值得一提的是,此处,对于每一次采样而言,相当于一次采样任务,并未局限于单线程或者多线程,也不局限于线程是实时创建的新线程,还是线程池中已经创建且未被占用的线程。
举例来说,假设某一次写操作过程中,某个数据表中涉及修改的记录有10000行,那么,增量数据,指的是该数据表中该10000行记录涉及修改的字段。
以顺序采样固定行数的记录为例,第一次采样,对增量数据中第1行记录至第100行记录涉及修改的字段进行统计信息的采集,得到第一个采样信息;第二次采样,则对增量数据中第101行记录至第200行记录涉及修改的字段进行统计信息的采集,得到第二个采样信息,以此类推,直至增量数据中所有记录涉及修改的字段的统计信息全部采集完毕,视为采样完成。
或者,对于随机采样固定行数的记录而言,第一次采样,针对该10000行记录中的任意100行记录,对增量数据中该100行记录涉及修改的字段进行统计信息的采集,得到第一个采样信息;第二次采样,则是针对未进行采样的9900行记录中的任意100行记录,对增量数据中该100行记录涉及修改的字段进行统计信息的采集,得到第二个采样信息,以此类推,直至增量数据中所有记录涉及修改的字段的统计信息全部采集完毕,视为采样完成。
进一步地,发明人还意识到,基于内存的大数据分布式计算框架Spark,虽然可以支持不同类型的数据表,但是由于其内置单线程连接Jdbc外部表,统计信息的采集仍然非常缓慢。
因此,本实施例中,就每一次采样而言,通过多线程并发实现,也即是说,多线程用于并发执行统计信息的采样任务。换而言之,每一个采样信息对应一次并发采样。
其中,多线程,可以是实时创建的新线程,也可以从线程池中获取已经创建且未被占用的线程,此处也并未加以限定。
以前述例子中顺序采样固定行数的记录进行说明,例如,就第一次并发采样来说,针对增量数据中第1行记录至第100行记录涉及修改的字段,可以同时创建100个线程来执行本次采样任务,以同时采集前述100行记录涉及修改的字段的统计信息,即,1个线程负责1行记录涉及修改的字段,由此,通过100个线程并发执行本次采样任务获得的100行记录涉及修改的字段的统计信息,即视为第一次并发采样对应的采样信息。
通过如此设置,实现了基于并发采样的数据采集机制,避免数据采集依赖于单线程,以此有效地缩短了数据采集时间,进而有利于提升数据采集效率。
步骤330,将对应于统计信息的多个采样信息合并,得到所述增量数据的统计信息。
如前所述,每一个采样信息对应一次并发采样,也可以认为是,每一次并发采样实际仅获得了增量数据的统计信息中的一部分,即对应于增量数据的统计信息的一个采样信息。仍以前述例子进行说明,例如,针对增量数据中10000行记录涉及修改的字段,每一次并发采样仅采集其中100行记录涉及修改的字段的统计信息,待100次并发采样完成之后,方能够收集到增量数据的统计信息所对应的全部采样信息。
因此,在得到对应于统计信息的多个采样信息之后,需要对该多个采样信息加以合并,方能够得到增量数据的统计信息。
由于统计信息包括表统计信息和列统计信息,相应地,多个采样信息的合并,包括表统计信息的合并和列统计信息的合并。
可选地,表统计信息的合并,实质是多个采样信息的表统计信息的合并,可以基于数据备份模式实现。
可选地,列统计信息的合并,实质是多个采样信息的列统计信息的合并,可以基于直方图Histogram实现,还可以基于Count-Min Sketch算法实现,在此并非构成具体限定。
步骤350,存储所述增量数据的统计信息。
在获得增量数据的统计信息之后,便需要将增量数据的统计信息存储,以便后续计算机设备能够基于存储的统计信息为用户提供高效的数据采集和查询服务。
其中,存储,可以直接存储在数据库所在的计算机设备,也可以存储在区别于该计算机设备的外部存储系统,此处并未加以限定。
通过如上所述的过程,实现了基于并发采样和增量更新的数据采集机制,有效地提高了数据采集效率,提升了用户的数据库访问体验。
请参阅图4,在一示例性实施例中,步骤310可以包括以下步骤:
步骤311,针对每一次并发采样,根据所述增量数据中未进行采样的记录,随机生成采样行号。
本实施例中,采样,是通过随机采样进行的。
具体地,随机采样的过程可以包括以下步骤:
第一步,获取采样字节数阈值defaultSampleNum,并确定增量数据中未进行采样的记录的总字节数tableTotalCount、以及总行数sampleRowNum。
其中,采样字节数阈值defaultSampleN是指计算机设备配置的允许随机采样的字节数的最大值,可以根据应用场景的实际需要灵活地调整,此处并未构成具体限定。值得一提的是,该采样字节数阈值defaultSampleN实际和参与随机采样的线程数量也有关,例如,参与随机采样的线程可从线程池中获取空闲的线程,如果该空闲的线程数量越多,则采样字节数阈值defaultSampleN越大。
第二步,从上述总字节数tableTotalCount和采样字节数阈值defaultSampleNum中选取最小值,作为本次随机采样的采样字节数statCount,即statCount=min(tableTotalCount,defaultSampleNum)。
以采样字节数阈值defaultSampleNum为100字节进行说明,如果总字节数tableTotalCount为200字节,则本次随机采样的采样字节数statCount为100字节,反之,如果总字节数tableTotalCount为90字节,则本次随机采样的采样字节数statCount为90字节。
第三步,计算总行数sampleRowNum与本次随机采样的采样字节数statCount之间的比例值ratio。
应当理解,如果增量数据中某一行记录涉及修改的字段很多,则可能仅该行记录涉及修改的字段所包含的总字节数就已经超过了本次随机采样的采样字节数statCount,此时,对于本次随机采样而言,只能在本次随机采样的采样字节数statCount范围之内,对该行记录涉及修改的字段进行采样。
反之,如果增量数据中每一行记录涉及修改的字段很少,例如,仅一个字段涉及修改,则可能所有记录涉及修改的字段所包含的总字节数都未能够超过本次随机采样的采样字节数statCount,此时,对于本次随机采样而言,便可针对所有记录涉及修改的字段进行采样。
基于此,比例值ratio表示本次随机采样是否允许按照总行数sampleRowNum进行。如果该比例值ratio大于1,表示总行数sampleRowNum已经超过了允许随机采样的行数,则将该比例值ratio配置为1,否则,如果该比例值ratio小于1,表示允许随机采样的行数未超过总行数sampleRowNum,则保持该比例值ratio。
第四步,根据比例值ratio和本次随机采样的采样字节数statCount,随机生成采样行号,即buildSampleSql(String tableName,long ratio,long statCount)。其中,buildSampleSql表示用于随机生成采样行号所对应的SQL函数,tableName表示进行本次随机采样的数据表。
由此,实现了采样行号的随机生成,进而便能够基于该随机生成的采样行号实现统计信息的随机采样。
步骤313,基于线程池中空闲的线程,对所述增量数据中对应于所述采样行号的记录进行并发采样,得到一个采样信息。
其中,并发,是基于线程池中空闲的线程实现的,也即是说,由线程池中空闲的线程并发执行统计信息的采样任务。该空闲的线程,是指线程池中已经创建且未被占用的线程,而并非实时创建的新线程。
通过如此设置,在数据采集过程中,只要线程池中存在空闲的线程,便可进行增量数据的统计信息的并发采样,避免无终止的创建新线程,导致计算机设备内存占用率过高,甚至在增量数据较大时导致计算机设备死机,以此增强数据采集的可靠性,进一步地提升数据采集效率。
下面对基于空闲的线程,实现采样的并发过程加以说明。
具体地,如图5所示,采样的并发过程可以包括以下步骤:
步骤3131,将所述采样行号对应的记录封装为目标对象。该目标对象包括但不限于Runnable对象等等。
步骤3133,从所述线程池中获取空闲的线程调用所述目标对象,得到一个采样信息。
由此,无论何种类型的数据表,在通过目标对象的封装之后,线程将能够基于统一的应用程序接口(API,Application Program Interface)进行该目标对象的调用。例如,当统一的应用程序接口为JDBC接口时,目标对象为Runnable对象。
换而言之,无论数据表是何种类型,均能够通过统一的应用程序接口实现数据采集,使得数据采集能够同时支持不同类型的数据表,进而扩展了数据采集的通用性。
在上述实施例的作用下,实现了基于并发采样的数据采集机制,从而有效地提高了数据采集效率。
请参阅图6,在一示例性实施例中,步骤330可以包括以下步骤:
步骤331,基于数据备份模式,根据多个采样信息的表统计信息,获得所述增量数据的表统计信息。
其中,数据备份模式包括增量模式和全量模式。该增量模式针对当前进行的并发采样而言,指的是对当前进行的并发采样涉及的若干行记录进行备份统计,该全量模式则是针对已经进行的并发采样而言,是指对已经进行的并发采样涉及的若干行记录进行备份统计。
那么,在确定数据备份模式之后,便可按照不同的数据备份模式,合并多个采样信息的表统计信息。
具体地,一方面,当所述数据备份模式为增量模式,计算多个采样信息的表统计信息之和,作为所述增量数据的表统计信息。
由上可知,随着并发采样的不断进行,增量模式下,采样信息的表统计信息仅针对当前进行的并发采样涉及的若干行记录而被更新。
举例来说,增量数据的表统计信息包括涉及修改的记录的总行数R、涉及修改的记录的总字节数M。假设,对于第i次并发采样而言,第i个采样信息的表统计信息包括第i次并发采样涉及的记录的行数Ri、第i次并发采样涉及的记录的字节数Mi。
那么,
Figure BDA0002412648130000141
其中,L表示并发采样的总次数。
换而言之,增量模式下,增量数据的表统计信息是各次并发采样得到的采样信息的表统计信息之和。
另一方面,当所述数据备份模式为全量模式,将采样时间最晚的采样信息的表统计信息,作为所述增量数据的表统计信息。
由上可知,随着并发采样的不断进行,全量模式下,采样信息的表统计信息将针对已经进行的并发采样涉及的全部记录而被更新。
以表统计信息中的行数举例说明,就L次并发采样而言,假设第一次并发采样涉及的记录的行数R1,是对第一次并发采样涉及的记录进行备份统计,而第二次并发采样涉及的记录的行数R2,实质是对前两次并发采样涉及的全部记录进行备份统计,以此类推,第L次并发采样涉及的记录的行数Rl,则是对L次并发采样涉及的全部记录进行备份统计。
基于此,全量模式下,增量数据中记录的总行数R即为第L次并发采样涉及的记录的行数Rl
换而言之,全量模式下,增量数据的表统计信息是最后一次并发采样得到的采样信息的表统计信息。
由此,即完成多个采样信息的表统计信息基于数据备份模式的合并。
步骤333,基于直方图,对多个采样信息的列统计信息进行合并,获得所述增量数据的列统计信息。
首先说明的是,直方图,通过其所包含的矩形区域,相当于“桶”,来反映增量数据中各字段中数值的分布情况,相当于各字段中的数值落入了同一个桶或者不同的桶。
其中,直方图类型包括但不限于:等宽直方图、等深直方图等等,此处并未加以限定。值得一提的是,等宽直方图是指不同的桶的宽度相等,等深直方图则是不同的桶的高度相等。
进一步地,桶的属性包括:桶在直方图中的索引、直方图中桶的总数、桶的高度和宽度、桶的上限和下限。其中,桶在直方图中的索引,唯一地表示了该桶在直方图中的位置,例如,桶的索引为1,可以表示该桶是直方图中的第一个桶。桶的高度表示落入桶中数值的个数。桶的宽度表示落入桶中数值的范围。桶的上限表示落入桶中数值的最大值,桶的下限表示落入桶中数值的最小值,也可以理解为,桶的上限与下限之差即为桶的宽度。
由此,基于桶的属性,直方图便能够准确地反映增量数据中各字段中数值的分布情况。
下面结合前述例子对等深直方图进行说明,假设表1中字段名“语文”的字段进行了修改,则需要进行并发采样的增量数据包括:字段“语文”={97、98、99、97}。
如图7所示,等深直方图中包含两个高度相等的桶,分别是桶a和桶b。那么,基于等深直方图的原理,对于字段“语文”{97、98、99、97}而言,{97、97}将落入等深直方图中的桶a,而{98、99}则落入等深直方图中的桶b。
基于此,桶a的上限反映了字段“语文”{97、97}中落入桶a中的数值的最大值=97,桶a的下限反映了字段“语文”{97、97}中落入桶a中的数值的最小值=97,桶a的高度反映了字段“语文”{97、97}中落入桶a中的数值的个数=2个,而桶a的宽度则反映了字段“语文”{97、97}落入桶a中的数值的范围=[97]。
同理,桶b的上限反映了字段“语文”{98、99}中落入桶b中的数值的最大值=99,桶b的下限反映了字段“语文”{98、99}中落入桶b中的数值的最小值=98,桶b的高度反映了字段“语文”{98、99}中落入桶b中的数值的个数=2个,而桶b的宽度则反映了字段“语文”{98、99}落入桶b中的数值的范围=[98,99]。
如前所述,列统计信息,包括但不限于各字段的平均长度、各字段的最大长度、每一个字段中数值的最大值、每一个字段中数值的最小值、每一个字段中数值的个数、数据表中空字段的个数等等。故而,直方图中的桶,实质是以图形方式对采样信息的列统计信息进行准确地描述。
由此可知,对多个采样信息的列统计信息进行合并,实质是合并直方图中的桶,以此将增量数据中各字段中相同分布情况的数值合并,最终得到增量数据的列统计信息。
步骤335,由所述增量数据的表统计信息和列统计信息,生成所述增量数据的统计信息。
在上述实施例的配合下,实现了采样信息的合并,使得上述统计信息的若干次并发采样得以实现,进而有利于实现基于并发采样的数据采集机制,从而提高数据采集效率。
请参阅图8,在一示例性实施例中,步骤333可以包括以下步骤:
步骤3331,对多个采样信息进行遍历,根据当前一个采样信息的列统计信息创建第二直方图,所述第二直方图区别于由前若干个采样信息的列统计信息创建的第一直方图。
步骤3333,根据所述第一直方图、所述第二直方图中桶的属性,生成第三直方图。
具体地,(1)对所述第一直方图、所述第二直方图中的桶进行遍历,将所述第一直方图中遍历到的桶作为第一当前桶,将所述第二直方图中遍历到的桶作为第二当前桶。
(2)当所述第一当前桶、所述第二当前桶的索引满足第一生成条件,将所述第一当前桶和/或所述第二当前桶,添加至所述第三直方图。
其中,第一生成条件,是指第一当前桶的索引小于第一直方图中桶的总数,并且,第二当前桶的索引小于第二直方图中桶的总数。
a、如果所述第一当前桶的上限小于所述第二当前桶的下限,则将所述第一当前桶添加至所述第三直方图。
b、如果所述第一当前桶的下限大于所述第二当前桶的上限,则将所述第二当前桶添加至所述第三直方图。
c、否则,当第一当前桶的上限和下限均不符合a、b时,在所述第三直方图中构造一个新桶,将所述第一当前桶、所述第二当前桶的高度之和作为所述新桶的高度,并将所述第二当前桶的宽度作为所述新桶的宽度。
d、返回步骤(1),即将所述第一直方图中的后一个桶作为第一当前桶,和/或,将所述第二直方图中的后一个桶作为第二当前桶,继续对所述第一直方图,和/或,所述第二直方图中的其余桶进行遍历。
(3)当所述第一当前桶、所述第二当前桶的索引满足第二生成条件,将所述第一直方图中未添加的桶,添加至所述第三直方图。
其中,第二生成条件,是指第一当前桶的索引小于第一直方图中桶的总数,但是,第二当前桶的索引大于等于第二直方图中桶的总数,即表示第二直方图中的桶已经全部添加至第三直方图。
(4)当所述第一当前桶、所述第二当前桶的索引满足第三生成条件,将所述第二直方图中未添加的桶,添加至所述第三直方图。
其中,第三生成条件,是指第二当前桶的索引小于第二直方图中桶的总数,但是,第一当前桶的索引大于等于第一直方图中桶的总数,即表示第一直方图中的桶已经全部添加至第三直方图。
下面基于前述例子来说明基于直方图的合并过程。
如图9a所示,假设桶a属于第一次并发采样得到的前一个采样信息的列统计信息创建的第一直方图,以桶a作为第一当前桶。其中,桶a的上限为97,桶a的下限为97,桶a的高度为2。
如图9b所示,假设桶b属于第二次并发采样得到的当前一个采样信息的列统计信息创建的第二直方图,以桶b作为第二当前桶。其中,桶b的上限为99,桶b的下限为98,桶b的高度为2。
第一种情况,假设桶a在第一直方图中的索引为1,桶b在第二直方图中的索引为1,第一直方图、第二直方图中桶的总数各为100。
此时,桶a、桶b的索引满足第一生成条件,又因为桶a的上限97小于桶b的下限98,那么,桶a添加至第三直方图,如图9c所示。
然后,将第一直方图中位于桶a之后的后一个桶作为第一当前桶,继续与桶b进行第三直方图中桶的添加。
第二种情况,结合第一种情况中桶b作为第二当前桶,如图9a所示,第一直方图中存在桶c位于桶a之后,将桶c作为第一当前桶,且桶c的上限为100,下限为100,桶c的高度为1。
此时,桶c的索引为2,桶b的索引为1,桶c、桶b的索引仍然满足第一生成条件,而桶c的下限大于桶b的上限,则桶b添加至第三直方图,如图9c所示。
然后,将第二直方图中位于桶b之后的后一个桶作为第二当前桶,继续与桶c进行第三直方图中桶的添加。
第三种情况,结合第二种情况中桶c作为第一当前桶,如图9b所示,第二直方图中存在桶d位于桶b之后,将桶d作为第二当前桶,且桶d的上限为100,下限为100,桶d的高度为1。
此时,桶d的索引为2,桶c的索引为2,桶d、桶c的索引仍然满足第一生成条件,而桶c的上限和下限与桶d的上限和下限分别相等,因此,构造桶e添加至第三直方图中,该桶e的高度为2,上限为100,下限为100,即桶e的宽度分别桶c、桶d的宽度相等,如图9c所示。
当然,在其他实施例中,第三种情况,还可能是桶c的上限和下限被包含在桶d的上限和下限之内,即{桶c下限,桶c上限}∈{桶d下限,桶d上限},此处并非构成具体限定。
第四种情况,假设第一直方图中仍存在桶f位于桶c之后,即桶f的索引为3,而第二直方图中桶d已经是最后一个桶,即桶d的索引为100,表示第二直方图中的桶已经全部添加至第三直方图。
此时,桶f、桶d的索引满足第二生成条件,将第一直方图中桶f及其后的桶全部添加至第三直方图。
第五种情况,假设第一直方图中桶c已经是最后一个桶,即桶c的索引为100,表示第一直方图中的桶已经全部添加至第三直方图,而第二直方图中仍存在桶g位于桶d之后,即桶g的索引为3。此时,桶c、桶g的索引满足第三生成条件,将第二直方图中桶g及其后的桶全部添加至第三直方图。
待第一直方图、第二直方图中的所有桶都添加至第三直方图,即视为当前一个采样信息和前一个采样信息合并完成。
值得一提的是,在对多个采样信息进行遍历的过程中,当针对第三次并发采样得到的后一个采样信息的列统计信息继续进行合并时,相对于该后一个采样信息而言,当前一个采样信息和前一个采样信息视为前两个采样信息,那么,由该后一个采样信息的列统计信息创建的直方图即视为第二直方图,而合并得到的第三直方图即视为由该前两个采样信息的列统计信息创建的第一直方图,以此类推,第四次并发采样得到的采样信息的列统计信息创建的直方图作为第二直方图,而合并得到的第三直方图作为由前三个采样信息的列统计信息创建的第一直方图,直至若干次并发采样得到的采样信息全部完成遍历。
步骤3335,待多个采样信息完成遍历,根据所述第三直方图中桶的属性,得到所述增量数据的列统计信息。
通过上述过程,实现了基于直方图的统计信息合并,使得基于增量更新的数据采集机制得以实现,从而有利于提高数据采集的效率。
请参阅图8,在一示例性实施例中,步骤350可以包括以下步骤:
步骤351,将所述增量数据的统计信息写入内存队列。
步骤353,利用消费者线程,从所述内存队列中读取所述增量数据的统计信息,进行持久化存储。
如图9所示,基于线程池中空闲的线程Thread,合并得到增量数据的统计信息Stat之后,该统计信息Stat即被写入内存队列,以供消费者线程Thread读取。
而对于消费者线程Thread而言,将从内存队列中依序不断地消费增量数据的统计信息Stat,进而持久化地存储至外部存储系统External Store,以供后续计算机设备基于外部存储系统External Store中存储的统计信息Stat,为用户提高高效的数据采集和查询服务。
图10~图11是一应用场景中一种数据采集方法的具体实现示意图。
该应用场景中,请求方是指请求在数据库中进行数据采集的用户所在用户端,数据源是指被请求数据库所在服务器端,采集方是指进行统计信息采集和存储的服务器端。
具体地,一方面,如图11所示,采集方通过统计信息的采样、合并、存储,形成针对数据库中数据的统计信息。
另一方面,结合图10所示,请求方通过采集指令请求采集目标数据,而数据源基于采集方中存储的目标数据的统计信息,计算最佳的SQL执行路径,以此生成最优执行计划,进而基于该最优执行计划实现目标数据的查询和采集。
在本应用场景中,实现了基于并发采样和增量更新的数据采集机制,能够有效地缩短SQL执行时间,从而为用户提供高效的数据采集和查询服务,有效地提升了用户的数据库访问体验。
下述为本发明装置实施例,可以用于执行本发明所涉及的数据采集方法。对于本发明装置实施例中未披露的细节,请参照本发明所涉及的数据采集方法的方法实施例。
请参阅图12,在一示例性实施例中,一种数据采集装置900包括但不限于:采样模块910、合并模块930以及存储模块950。
其中,采样模块910,用于对增量数据进行统计信息的若干次并发采样,得到对应于统计信息的多个采样信息,每一个采样信息对应一次并发采样,所述增量数据是在对数据库中的数据进行写操作过程中生成的。
合并模块930,用于将对应于统计信息的多个采样信息合并,得到所述增量数据的统计信息。
存储模块950,用于存储所述增量数据的统计信息。
需要说明的是,上述实施例所提供的数据采集装置在进行数据采集时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即数据采集装置的内部结构将划分为不同的功能模块,以完成以上描述的全部或者部分功能。
另外,上述实施例所提供的数据采集装置与数据采集方法的实施例属于同一构思,其中各个模块执行操作的具体方式已经在方法实施例中进行了详细描述,此处不再赘述。
请参阅图13,在一示例性实施例中,一种计算机设备1000,包括至少一处理器1001、至少一存储器1002、以及至少一通信总线1003。
其中,存储器1002上存储有计算机可读指令,处理器1001通过通信总线1003读取存储器1002中存储的计算机可读指令。
该计算机可读指令被处理器1001执行时实现以下步骤,包括但不限于:对增量数据进行统计信息的若干次并发采样,得到对应于统计信息的多个采样信息,每一个采样信息对应一次并发采样,所述增量数据是在对数据库中的数据进行写操作过程中生成的;将对应于统计信息的多个采样信息合并,得到所述增量数据的统计信息;存储所述增量数据的统计信息。
在一示例性实施例中,该计算机可读指令被处理器1001执行时实现以下步骤,包括但不限于:针对每一次并发采样,根据所述增量数据中未进行采样的记录,随机生成采样行号;基于线程池中空闲的线程,对所述增量数据中对应于所述采样行号的记录进行并发采样,得到一个采样信息。
在一示例性实施例中,该计算机可读指令被处理器1001执行时实现以下步骤,包括但不限于:将所述采样行号对应的记录封装为目标对象;从所述线程池中获取空闲的线程调用所述目标对象,得到一个采样信息。
在一示例性实施例中,所述统计信息包括表统计信息和列统计信息;该计算机可读指令被处理器1001执行时实现以下步骤,包括但不限于:基于数据备份模式,根据多个采样信息的表统计信息,获得所述增量数据的表统计信息;基于直方图,对多个采样信息的列统计信息进行合并,获得所述增量数据的列统计信息;由所述增量数据的表统计信息和列统计信息,生成所述增量数据的统计信息。
在一示例性实施例中,该计算机可读指令被处理器1001执行时实现以下步骤,包括但不限于:当所述数据备份模式为增量模式,计算多个采样信息的表统计信息之和,作为所述增量数据的表统计信息;或者,当所述数据备份模式为全量模式,将采样时间最晚的采样信息的表统计信息,作为所述增量数据的表统计信息。
在一示例性实施例中,该计算机可读指令被处理器1001执行时实现以下步骤,包括但不限于:对多个采样信息进行遍历,根据当前一个采样信息的列统计信息创建第二直方图,所述第二直方图区别于由前若干个采样信息的列统计信息创建的第一直方图;根据所述第一直方图、所述第二直方图中桶的属性,生成第三直方图;待多个采样信息完成遍历,根据所述第三直方图中桶的属性,得到所述增量数据的列统计信息。
在一示例性实施例中,所述桶的属性包括桶在直方图中的索引;该计算机可读指令被处理器1001执行时实现以下步骤,包括但不限于:对所述第一直方图、所述第二直方图中的桶进行遍历,将所述第一直方图中遍历到的桶作为第一当前桶,将所述第二直方图中遍历到的桶作为第二当前桶;当所述第一当前桶、所述第二当前桶的索引满足第一生成条件,将所述第一当前桶和/或所述第二当前桶,添加至所述第三直方图;当所述第一当前桶、所述第二当前桶的索引满足第二生成条件,将所述第一直方图中未添加的桶,添加至所述第三直方图;当所述第一当前桶、所述第二当前桶的索引满足第三生成条件,将所述第二直方图中未添加的桶,添加至所述第三直方图。
在一示例性实施例中,所述桶的属性包括桶的宽度、高度、上限和下限;该计算机可读指令被处理器1001执行时实现以下步骤,包括但不限于:如果所述第一当前桶的上限小于所述第二当前桶的下限,则将所述第一当前桶添加至所述第三直方图;如果所述第一当前桶的下限大于所述第二当前桶的上限,则将所述第二当前桶添加至所述第三直方图;否则,在所述第三直方图中构造一个新桶,将所述第一当前桶、所述第二当前桶的高度之和作为所述新桶的高度,并将所述第二当前桶的宽度作为所述新桶的宽度。
在一示例性实施例中,该计算机可读指令被处理器1001执行时实现以下步骤,包括但不限于:将所述增量数据的统计信息写入内存队列;利用消费者线程,从所述内存队列中读取所述增量数据的统计信息,进行持久化存储。
在一示例性实施例中,一种存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各实施例中的数据采集方法。
上述内容,仅为本发明的较佳示例性实施例,并非用于限制本发明的实施方案,本领域普通技术人员根据本发明的主要构思和精神,可以十分方便地进行相应的变通或修改,故本发明的保护范围应以权利要求书所要求的保护范围为准。

Claims (15)

1.一种数据采集方法,其特征在于,包括:
对增量数据进行统计信息的若干次并发采样,得到对应于统计信息的多个采样信息,每一个采样信息对应一次并发采样,所述增量数据是在对数据库中的数据进行写操作过程中生成的;
将对应于统计信息的多个采样信息合并,得到所述增量数据的统计信息;
存储所述增量数据的统计信息。
2.如权利要求1所述的方法,其特征在于,所述对增量数据进行统计信息的若干次并发采样,得到对应于统计信息的多个采样信息,包括:
针对每一次并发采样,根据所述增量数据中未进行采样的记录,随机生成采样行号;
基于线程池中空闲的线程,对所述增量数据中对应于所述采样行号的记录进行并发采样,得到一个采样信息。
3.如权利要求2所述的方法,其特征在于,所述基于线程池中空闲的线程,对所述增量数据中对应于所述采样行号的记录进行并发采样,得到一个采样信息,包括:
将所述采样行号对应的记录封装为目标对象;
从所述线程池中获取空闲的线程调用所述目标对象,得到一个采样信息。
4.如权利要求1所述的方法,其特征在于,所述统计信息包括表统计信息和列统计信息;
所述将对应于统计信息的多个采样信息合并,得到所述增量数据的统计信息,包括:
基于数据备份模式,根据多个采样信息的表统计信息,获得所述增量数据的表统计信息;
基于直方图,对多个采样信息的列统计信息进行合并,获得所述增量数据的列统计信息;
由所述增量数据的表统计信息和列统计信息,生成所述增量数据的统计信息。
5.如权利要求4所述的方法,其特征在于,所述基于数据备份模式,根据多个采样信息的表统计信息,获得所述增量数据的表统计信息,包括:
当所述数据备份模式为增量模式,计算多个采样信息的表统计信息之和,作为所述增量数据的表统计信息;或者,
当所述数据备份模式为全量模式,将采样时间最晚的采样信息的表统计信息,作为所述增量数据的表统计信息。
6.如权利要求4所述的方法,其特征在于,所述基于直方图,对多个采样信息的列统计信息进行合并,获得所述增量数据的列统计信息,包括:
对多个采样信息进行遍历,根据当前一个采样信息的列统计信息创建第二直方图,所述第二直方图区别于由前若干个采样信息的列统计信息创建的第一直方图;
根据所述第一直方图、所述第二直方图中桶的属性,生成第三直方图;
待多个采样信息完成遍历,根据所述第三直方图中桶的属性,得到所述增量数据的列统计信息。
7.如权利要求6所述的方法,其特征在于,所述桶的属性包括桶在直方图中的索引;
所述根据所述第一直方图、所述第二直方图中桶的属性,生成第三直方图,包括:
对所述第一直方图、所述第二直方图中的桶进行遍历,将所述第一直方图中遍历到的桶作为第一当前桶,将所述第二直方图中遍历到的桶作为第二当前桶;
当所述第一当前桶、所述第二当前桶的索引满足第一生成条件,将所述第一当前桶和/或所述第二当前桶,添加至所述第三直方图;
当所述第一当前桶、所述第二当前桶的索引满足第二生成条件,将所述第一直方图中未添加的桶,添加至所述第三直方图;
当所述第一当前桶、所述第二当前桶的索引满足第三生成条件,将所述第二直方图中未添加的桶,添加至所述第三直方图。
8.如权利要求7所述的方法,其特征在于,所述桶的属性包括桶的宽度、高度、上限和下限;
所述当所述第一当前桶、所述第二当前桶的索引满足第一生成条件,将所述第一当前桶和/或所述第二当前桶,添加至所述第三直方图,包括:
如果所述第一当前桶的上限小于所述第二当前桶的下限,则将所述第一当前桶添加至所述第三直方图;
如果所述第一当前桶的下限大于所述第二当前桶的上限,则将所述第二当前桶添加至所述第三直方图;
否则,在所述第三直方图中构造一个新桶,将所述第一当前桶、所述第二当前桶的高度之和作为所述新桶的高度,并将所述第二当前桶的宽度作为所述新桶的宽度。
9.如权利要求1所述的方法,其特征在于,所述存储所述增量数据的统计信息,包括:
将所述增量数据的统计信息写入内存队列;
利用消费者线程,从所述内存队列中读取所述增量数据的统计信息,进行持久化存储。
10.一种数据采集装置,其特征在于,包括:
采样模块,用于对增量数据进行统计信息的若干次并发采样,得到对应于统计信息的多个采样信息,每一个采样信息对应一次并发采样,所述增量数据是在对数据库中的数据进行写操作过程中生成的;
合并模块,用于将对应于统计信息的多个采样信息合并,得到所述增量数据的统计信息;
存储模块,用于存储所述增量数据的统计信息。
11.如权利要求10所述的装置,其特征在于,所述采样模块,包括:
行号生成单元,用于针对每一次并发采样,根据所述增量数据中未进行采样的记录,随机生成采样行号;
对象调用单元,用于基于线程池中空闲的线程,对所述增量数据中对应于所述采样行号的记录进行并发采样,得到一个采样信息。
12.如权利要求10所述的装置,其特征在于,所述统计信息包括表统计信息和列统计信息;
所述合并模块,包括:
表统计合并单元,用于基于数据备份模式,根据多个采样信息的表统计信息,获得所述增量数据的表统计信息;
列统计合并单元,用于基于直方图,对多个采样信息的列统计信息进行合并,获得所述增量数据的列统计信息;
信息生成单元,用于由所述增量数据的表统计信息和列统计信息,生成所述增量数据的统计信息。
13.一种数据采集系统,其特征在于,包括:用户端和服务器端;
所述用户端,用于针对数据库中的目标数据,向所述服务器端发送采集指令,请求服务器端采集所述目标数据;
所述服务器端,用于当接收到所述采集指令,根据所述目标数据的统计信息计算最佳的SQL执行路径,所述目标数据的统计信息是按照如权利要求1至9中任一项所述的数据采集方法采集得到的;
所述服务器端,还用于根据计算得到的SQL执行路径,进行所述目标数据的采集;
所述用户端,还用于接收所述服务器端采集到的所述目标数据。
14.一种计算机设备,其特征在于,包括:
处理器;及
存储器,所述存储器上存储有计算机可读指令,所述计算机可读指令被所述处理器执行时实现如权利要求1至9中任一项所述的数据采集方法。
15.一种存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至9中任一项所述的数据采集方法。
CN202010181413.XA 2020-03-16 2020-03-16 数据采集方法、装置、系统、计算机设备及存储介质 Active CN111427920B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010181413.XA CN111427920B (zh) 2020-03-16 2020-03-16 数据采集方法、装置、系统、计算机设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010181413.XA CN111427920B (zh) 2020-03-16 2020-03-16 数据采集方法、装置、系统、计算机设备及存储介质

Publications (2)

Publication Number Publication Date
CN111427920A true CN111427920A (zh) 2020-07-17
CN111427920B CN111427920B (zh) 2023-08-11

Family

ID=71546424

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010181413.XA Active CN111427920B (zh) 2020-03-16 2020-03-16 数据采集方法、装置、系统、计算机设备及存储介质

Country Status (1)

Country Link
CN (1) CN111427920B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112559536A (zh) * 2021-02-20 2021-03-26 北京工业大数据创新中心有限公司 一种工业设备数据的处理方法及系统
CN114430366A (zh) * 2022-01-25 2022-05-03 北京百度网讯科技有限公司 信息采集应用下发方法、相关装置及计算机程序产品

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103390066A (zh) * 2013-08-08 2013-11-13 上海新炬网络技术有限公司 一种数据库全局性自动化优化预警装置及其处理方法
US20150052320A1 (en) * 2013-08-14 2015-02-19 International Business Machines Corporation Reducing data backup time during incremental snapshots
CN104620239A (zh) * 2012-09-28 2015-05-13 甲骨文国际公司 自适应查询优化
CN105320679A (zh) * 2014-07-11 2016-02-10 中国移动通信集团重庆有限公司 一种数据表索引集合生成方法及装置
US20160110417A1 (en) * 2013-04-30 2016-04-21 Hewlett-Packard Development Company, L.P. Incrementally Updating Statistics
US20180336252A1 (en) * 2017-05-17 2018-11-22 Sap Se Summarization of Large Histograms
JP2018206074A (ja) * 2017-06-05 2018-12-27 Kddi株式会社 ヒストグラム生成方法、ヒストグラム生成装置及びヒストグラム生成プログラム
CN110704458A (zh) * 2019-08-15 2020-01-17 平安科技(深圳)有限公司 数据同步方法、装置、计算机设备及存储介质
US20200042522A1 (en) * 2018-08-06 2020-02-06 Oracle International Corporation Techniques for maintaining statistics in a database system

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104620239A (zh) * 2012-09-28 2015-05-13 甲骨文国际公司 自适应查询优化
US20160110417A1 (en) * 2013-04-30 2016-04-21 Hewlett-Packard Development Company, L.P. Incrementally Updating Statistics
CN103390066A (zh) * 2013-08-08 2013-11-13 上海新炬网络技术有限公司 一种数据库全局性自动化优化预警装置及其处理方法
US20150052320A1 (en) * 2013-08-14 2015-02-19 International Business Machines Corporation Reducing data backup time during incremental snapshots
CN105320679A (zh) * 2014-07-11 2016-02-10 中国移动通信集团重庆有限公司 一种数据表索引集合生成方法及装置
US20180336252A1 (en) * 2017-05-17 2018-11-22 Sap Se Summarization of Large Histograms
JP2018206074A (ja) * 2017-06-05 2018-12-27 Kddi株式会社 ヒストグラム生成方法、ヒストグラム生成装置及びヒストグラム生成プログラム
US20200042522A1 (en) * 2018-08-06 2020-02-06 Oracle International Corporation Techniques for maintaining statistics in a database system
CN110704458A (zh) * 2019-08-15 2020-01-17 平安科技(深圳)有限公司 数据同步方法、装置、计算机设备及存储介质

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
CRI5768: "MYSQL 5.6 5.7处理数据分布不均的问题(eq_range_index_dive_limit参数)", pages 157 - 159, Retrieved from the Internet <URL:https://blog.csdn.net/cri5768/article/details/100199413> *
余宣杰等, 上海科学普及出版社 *
韩兵等: "基于JDBC的缓存数据细粒度管理的研究", 计算机技术与发展, vol. 29, no. 12, pages 66 - 71 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112559536A (zh) * 2021-02-20 2021-03-26 北京工业大数据创新中心有限公司 一种工业设备数据的处理方法及系统
CN114430366A (zh) * 2022-01-25 2022-05-03 北京百度网讯科技有限公司 信息采集应用下发方法、相关装置及计算机程序产品
CN114430366B (zh) * 2022-01-25 2024-05-14 北京百度网讯科技有限公司 信息采集应用下发方法、相关装置及计算机程序产品

Also Published As

Publication number Publication date
CN111427920B (zh) 2023-08-11

Similar Documents

Publication Publication Date Title
US10296498B2 (en) Coordinated hash table indexes to facilitate reducing database reconfiguration time
US9852180B2 (en) Systems and methods of accessing distributed data
US10158709B1 (en) Identifying data store requests for asynchronous processing
US11080207B2 (en) Caching framework for big-data engines in the cloud
CN111258978A (zh) 一种数据存储的方法
CN112148693A (zh) 一种数据处理方法、装置及存储介质
CN109614270A (zh) 基于Hbase的数据读写方法、装置、设备及存储介质
CN113111038B (zh) 文件存储方法、装置、服务器及存储介质
US7895247B2 (en) Tracking space usage in a database
CN111427920B (zh) 数据采集方法、装置、系统、计算机设备及存储介质
CN112965939A (zh) 一种文件合并方法、装置和设备
CN110222046B (zh) 列表数据的处理方法、装置、服务器和存储介质
WO2016175880A1 (en) Merging incoming data in a database
CN114896215A (zh) 元数据的存储方法及装置
US20220342888A1 (en) Object tagging
CN101483668A (zh) 热点数据的网络存储和访问方法、设备及系统
CN111752941B (zh) 一种数据存储、访问方法、装置、服务器及存储介质
CN116303246A (zh) 存储增量统计方法、装置、计算机设备及存储介质
CN116226250A (zh) 针对发电领域海量时序数据管理的汇聚式管理方法及系统
CN115576947A (zh) 一种数据管理方法、装置、组合库、电子设备及存储介质
CN116628042A (zh) 数据处理方法、装置、设备及介质
CN111782647A (zh) 一种eos网络的区块数据存储方法、系统、介质及设备
CN111782588A (zh) 一种文件读取方法、装置、设备和介质
CN109492004A (zh) 一种数字渔业异构数据存储方法、系统及装置
US9720970B2 (en) Efficient storage and retrieval of fragmented data using pseudo linear dynamic byte array

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40025897

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant