CN112740195A - 数据库系统中维护统计的技术 - Google Patents
数据库系统中维护统计的技术 Download PDFInfo
- Publication number
- CN112740195A CN112740195A CN201980061056.9A CN201980061056A CN112740195A CN 112740195 A CN112740195 A CN 112740195A CN 201980061056 A CN201980061056 A CN 201980061056A CN 112740195 A CN112740195 A CN 112740195A
- Authority
- CN
- China
- Prior art keywords
- statistics
- database
- statistic
- column
- database server
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 148
- 230000008569 process Effects 0.000 claims abstract description 60
- 238000012423 maintenance Methods 0.000 claims description 28
- 238000010801 machine learning Methods 0.000 claims description 16
- 238000012545 processing Methods 0.000 claims description 14
- 230000007246 mechanism Effects 0.000 claims description 13
- 230000002085 persistent effect Effects 0.000 claims description 9
- 230000004044 response Effects 0.000 claims description 7
- 238000004891 communication Methods 0.000 description 16
- 238000003780 insertion Methods 0.000 description 11
- 230000037431 insertion Effects 0.000 description 11
- NRNCYVBFPDDJNE-UHFFFAOYSA-N pemoline Chemical compound O1C(N)=NC(=O)C1C1=CC=CC=C1 NRNCYVBFPDDJNE-UHFFFAOYSA-N 0.000 description 9
- 238000010586 diagram Methods 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 5
- 238000012217 deletion Methods 0.000 description 5
- 230000037430 deletion Effects 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 230000008520 organization Effects 0.000 description 5
- 238000005070 sampling Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 241000711404 Avian avulavirus 1 Species 0.000 description 3
- 230000009471 action Effects 0.000 description 3
- 239000008186 active pharmaceutical agent Substances 0.000 description 3
- 230000003044 adaptive effect Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 102000020897 Formins Human genes 0.000 description 2
- 108091022623 Formins Proteins 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000013213 extrapolation Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000007596 consolidation process Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000012966 insertion method Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2462—Approximate or statistical queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/221—Column-oriented storage; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N7/00—Computing arrangements based on specific mathematical models
- G06N7/01—Probabilistic graphical models, e.g. probabilistic networks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Probability & Statistics with Applications (AREA)
- Databases & Information Systems (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Fuzzy Systems (AREA)
- Computational Linguistics (AREA)
- Computational Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Algebra (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
提供了用于在数据库系统中收集统计的技术。这些技术涉及使用“即时”技术收集一些统计,一些统计通过“高频”技术收集,还有的其它统计使用“预测”技术收集。用于收集每个统计的技术至少部分地基于收集统计所需的开销。例如,可以使用正在执行影响统计的操作的同一处理“即时”收集开销低的统计,而其收集带来较大开销的统计可以在数据库在线时使用高频技术在后台收集。预测技术可以用于相对高的开销统计,其可以基于历史数据和预测器统计的当前值来进行预测。
Description
技术领域
本发明涉及用于维护数据库内的统计的技术,并且更具体地涉及用于以在对新统计的需求与使统计维护对数据库性能的影响最小化的需求之间进行平衡的方式来维护统计的技术。
背景技术
通常,可以以多种方式执行相同的数据库命令,每种方式都产生相同的正确结果。可以执行数据库命令的各种方式中的每种方式都具有对应的“执行计划”。选择针对给定查询要执行哪个执行计划的数据库组件被称为“优化器”。
虽然针对查询的所有执行计划都应产生相同的正确结果,但是执行同一查询的执行计划所需的时间和资源可能会有显著差异。因此,为查询选择最佳执行计划会对数据库系统的整体性能产生显著影响。
在为查询选择执行计划时,优化器考虑数据库服务器维护的统计。基于该统计,数据库服务器可以例如确定使用一种联接(join)技术是否将比另一种联接技术更高效,以及从特定索引访问信息是否比从底层表直接访问同一信息更高效。因为执行计划决策是基于统计做出的,因此统计越准确,优化器将选择最佳执行计划的可能性就越大。
准确反映数据库的当前状态的统计被称为“实时”统计。遗憾的是,实时统计并不总是对优化器可用,因为维护实时统计可能会给数据库命令处理带来很大的开销。用户通常可以选择执行统计收集处理,以“手动”收集优化器所需的实时统计。但是,此类手动统计收集操作所带来的开销可能会以超过基于实时统计选择执行计划所带来的性能益处的方式使性能降级。
为了避免此类开销,优化器通常不得不基于不反映数据库的当前状态的“陈旧”统计来选择查询计划。统计越“陈旧”,统计往往越不准确,并且统计越不准确,优化器选择次优查询计划的可能性就越大。例如,反映十分钟前表的状态的统计往往将比反映十天前同一个表的状态的统计更准确(并导致更好的查询计划选择)。
已经开发出许多方法来高效地收集数据库系统内的统计。例如,在美国专利第9,582,525号、美国专利第9,798,772号、美国专利第10,073,885号和美国专利申请第16/147,511号中描述了一些这样的方法,这些专利中的每一个的内容都通过引用并入本文。一种收集统计的方法涉及等待“安静时段”,在该时段期间,数据库系统不在执行改变数据库的内容的数据库操纵语言(DML)命令。在安静时段期间,数据库服务器可以执行统计收集处理,以刷新优化器所需的所有统计。然后,这些统计被优化器使用,直到新的统计在下一个安静时段期间被收集为止。
这样的“安静时段”也被称为“维护窗口”,因为安静时段用于执行维护操作,这些维护操作如果不在安静时段期间执行,那么将会减慢用户应用。通常,维护窗口是严格实施的,使得在一个维护窗口内未完成的任何维护操作(诸如统计收集)将被暂停,直到下一个维护窗口为止。
当使用“维护窗口”技术时,当前可用统计的准确性取决于自从最近维护窗口以来已经过多少时间。通常,期间收集统计的“维护窗口”是在夜间(overnight)。因此,在清晨时分,由数据库系统的优化器使用的统计可能相对准确。另一方面,在傍晚时分,由优化器使用的统计可能相对不准确,因为该统计没有考虑由当天期间执行的DML命令所做的更改。如果统计收集处理不能在单个维护窗口期间完成,那么统计的准确性甚至更低。
本节中描述的方法是可以采用的方法,但不一定是先前已经设想或采用的方法。因此,除非另有说明,否则不应仅由于将本节中所述的任何方法包括在本节中而认为它们有资格作为现有技术。
附图说明
在附图中:
图1是根据实施例的被配置为将增量(delta)统计存储在易失性存储器中的数据库系统的框图;
图2是图示根据实施例的生成用于MIN/MAX统计的增量统计的步骤的流程图;
图3是图示根据实施例的可以在数据库系统中同时使用的三种类型的统计维护的图;以及
图4是可以在其上实现本发明的实施例的计算机系统的框图。
具体实施方式
在以下描述中,出于解释的目的,阐述了许多具体细节以便提供对本发明的透彻理解。但是,将显而易见的是,可以在没有这些具体细节的情况下实践本发明。在其它情况下,以框图形式示出了众所周知的结构和设备,以避免不必要地使本发明模糊。
总体概述
本文描述了用于在数据库系统中收集统计的技术。这些技术涉及使用“即时(on-the-fly)”技术收集一些统计,一些统计通过“高频”技术收集,还有的其它统计使用“预测”技术收集。用于收集每种类型的统计的技术至少部分地基于收集统计所需的开销。例如,可以“即时”收集低开销的统计,而其收集产生较大开销的统计可以使用高频技术来收集。可以基于即时收集的其它统计来预测高开销统计。此外,这些技术可以与其它技术(诸如在维护窗口期间执行统计收集处理)结合使用。
即时技术涉及存储统计信息,该统计信息反映在执行DML更改时由DML操作做出的更改,并作为执行DML更改的同一处理的一部分。根据一个实施例,不是更新统计的盘上(on-disk)副本(通常在数据库的字典表中找到)来反映由DML操作引起的统计更改,而是将“增量统计”存储在存储器中(in-memory)统计储存库中。
在一个实施例中,以这种方式生成的存储器中增量统计被周期性地刷新到为增量统计保留的盘。当优化器需要统计来帮助针对给定查询选择要执行哪个竞争查询计划时,优化器可以调用API,该API从存储器中储存库检索所需的增量统计、从字典表中检索对应的增量统计、以及对应的基本统计,并将它们全部合并以创建“更新的统计”,然后优化器使用该更新的统计来决定执行计划。
在这个存储器中维护即时统计首先会提供“最新”统计,而不会带来每个DML操作实时更新字典表中的盘上统计所需的开销。这种开销会是显著的,因为任何数量的并发执行的DML操作都将争取在字典表中获得对相关统计的写锁定。由于更新的统计的最新,优化器能够更准确地选择最高效的查询计划。这些统计在后台作业中从存储器刷新到盘中。因此,该开销对于前台应用是不可见的。
在一个实施例中,增量统计也与基本统计分开存储在盘上。这提供了两个统计之间的隔离,使得我们可以轻松打开和关闭增量统计的使用。这不仅对于测试是有益的,而且在增量统计损害查询性能的极少数情况下还提供控制。
根据一个实施例,使用“高频”收集技术来收集一些不使用即时技术维护的统计。根据高频收集技术,数据库系统不等待维护窗口来收集统计。而是,数据库服务器定期发起后台统计收集处理。后台统计收集处理能够收集和存储统计,而与前台中正在执行的其它处理无关。在一个实施例中,统计收集处理被配置为仅在没有其它统计收集处理实例处于活动时才开始处理。为了减少统计收集处理对并发执行的前台处理的性能的负面影响,对分配给统计收集处理的CPU周期数量进行封顶(例如,不超过可用CPU周期的5%)。
预测统计是根据历史信息预测的统计。例如,数据库服务器可以存储时间戳、行计数和列的不同值数量(NDV)的历史记录。如果历史数据表明列的NDV倾向于对于添加到表的每1000行增加50,那么数据库服务器可以基于指示已向表添加1000行的即时统计预测该列的NDV计数比在最近刷新时间存储的NDV值多50。
预测模型建立在历史中具有显著NDV变化的列上,仅针对预测中会存在值的列,因为列NDV倾向于随时间变化。
预测模型在后台自动维护,或者在维护窗口中维护或者在高频统计处理中维护。在模型收集处理中,建立新模型并刷新现有模型。取决于模型的质量是否满足我们的指标,可以启用或禁用模型。
在尝试刷新现有模型之前,进行检查以确定自从上次模型创建时间以来是否收集有足够多的新统计点。对于不再满足质量指标的模型,将禁用其使用,而不是丢弃它们。以这种方式,系统避免对列的相同历史数据重复建立相同的模型,对列的相同历史数据重复建立相同的模型很浪费。
一旦建立模型,系统就使用即时统计周期性地外推NDV,并将外推结果存储在盘上。在查询编译时间期间,外推的NDV与其它即时统计一起使用。换句话说,外推是离线完成的,并且在查询编译时间期间不会带来开销。
数据库统计
数据库系统可以在各种级别维护统计。例如,数据库系统可以维护表级别统计、列级别统计和索引级别统计。表级别统计包括例如表中的行的数量和表中的块的数量。
列级别统计包括例如列中的最小值(MIN)、列中的最大值(MAX)、平均列宽(以字节为单位)、列的基数(cardinality)和列中的值的直方图。
假设使用树结构(例如,B-树或B+树等)实现索引,那么索引级别统计可以包括:索引中叶节点的数量、索引树的深度、索引的总大小、不同键的数量、集群因子等。其它类型的统计也可以用于其它类型的索引。
这些仅仅是可以采用本文描述的统计收集技术的统计类型的示例。本文描述的技术不限于任何特定的统计或统计集合。
收集即时统计
如上所述,收集即时统计涉及在执行DML更改时存储反映由DML操作做出的更改的统计信息。在一个实施例中,通过正在执行影响统计的DML操作的处理将统计信息存储在存储器中统计储存库中。参考图1,它是根据实施例的数据库系统的框图。数据库系统包括具有易失性存储器102的数据库服务器100。在易失性存储器102内,数据库服务器100维护用于即时收集的那些统计的存储器中统计储存库104。
数据库服务器100可操作地耦合到一个或多个持久性存储设备,这些设备由盘160统一表示。存储设备持久性地存储由数据库服务器100管理的数据库120。数据库120包括存储用户数据的表130和持久性地存储与数据库120相关联的统计(包括表统计、列统计和索引统计)的字典表150。例如,字典表150可以存储表130的表统计、表130中每一列的列统计,以及建立在表130的一个或多个列上的索引140的索引统计。
因为即时统计信息是响应于影响统计的DML操作的提交而存储的,因此存储器中统计储存库104中的统计信息非常新。此外,由于统计信息被存储在存储器中统计储存库104中而不是提交给字典表150,因此与维护统计相关联的开销被大大减少。此外,与通常以表状结构维护的字典表150中的统计不同,存储在存储器中统计储存库104中的统计可以存储在优化访问效率的结构中,诸如链表、散列表或其组合。
根据一个实施例,在数据更改操作(诸如INSERT、DELETE、UPDATE和MERGE)期间维护即时统计,而与操作是否影响单行或许多行无关,并且与操作是否使用常规或直接路径插入方法无关。(直接路径插入技术通常需要其中插入行的整个表上的锁,并且插入的行将存储在新分配的块上,而不是写入到表的任何已分配块)。如上所述,即时统计的维护是由执行影响统计的数据更改操作的处理执行的。
目前,仅针对最便宜的统计维护即时统计。根据一个实施例,数据库服务器至少为以下各项维护即时统计:表行计数、表块计数、列最小值和列最大值、空值(null)的数量、列的平均列长。这仅是数据库服务器可以为其维护即时统计的统计的示例,并且本文描述的技术不限于任何特定的即时统计集合。无论如何,该框架,即,存储器中储存库、表上用于增量统计的表、刷新机制对于其它类型的统计都是通用的。
为了说明的目的,将使用DML命令将十行插入到具有三列c1、c2和c3的表130中的示例来解释即时统计的维护。这样的插入操作可以影响表130、列,以及与表130相关联的任何索引(例如,索引140)的统计,如将在下文中进行解释的。还应假设字典表150包含自最近执行对应的统计收集处理以来准确的统计。统计收集处理的最近执行的提交时间在本文中将被称为“最新刷新时间”。通常,最新刷新时间将在最近维护窗口期间。
即时表统计-行计数
受将十行插入到表130中影响的一个表级别统计是表130的“行计数”。根据一个实施例,数据库服务器100对自从最新刷新时间以来在每个表上发生的DML更改(插入、删除、更新)执行即时跟踪。例如,紧接在最新刷新时间之后,字典表150可以指示表130为1000行,并且存储器中统计储存库104可以包括“增量”值0,指示自从最新刷新时间以来还没有向表130添加行或从表130中删除行。
响应于将十行插入到表130中,数据库服务器100可以通过将增量行计数值递增10以指示自从最新刷新时间以来已经添加十行来更新存储器中统计储存库104。在一个实施例中,对存储器中统计储存库104内的每个统计的访问由锁存器管控。因此,为了更新存储器中统计,DML处理将获得对存储器中统计储存库104内表130的增量行计数值的锁存器、将增量行计数值递增10,然后释放增量行计数值上的锁存器。
当以这种方式在存储器中统计储存库104中维护增量行计数更改时,可以通过组合DML更改(存储器中统计储存库104中的增量行计数)和存储在字典表150中的旧行计数(“tab$.row_count)来简单地计算实时行计数:
实时行计数=tab$.row_count+delta-row-count(其中delta-row-count是自从最新刷新时间以来的插入次数减去自从最新刷新时间以来的删除次数)。
即时增量统计最初在存储器中统计储存库104中维护。在一个实施例中,经由后台刷新处理(例如,每15分钟)将存储器中统计储存库104中的增量统计周期性地刷新到盘160中。刷新到盘的统计在图1中图示为刷新统计142。在刷新之后,可以将存储器中统计储存库104中的增量行计数中的增量统计重置为零。在这样的实施例中,为了获得最新的行计数,数据库服务器100组合来自三个来源的信息:
实时行计数=(刷新统计142中的增量行计数)+(字典表150中的行计数)+(存储器中统计储存库104中的增量行计数)。
例如,假设存储在字典表中的行计数为150。即,截至最新刷新时间,表130具有150行。假设在最新刷新时间之后,插入了100行并删除了50行。100个插入和50个删除(或增量行计数50)的记录将维护在存储器中统计储存库104中。此时,来自存储器中统计储存库104的信息可以作为刷新统计142被写入到盘160中。响应于存储器中统计被刷新到盘中,存储器中统计储存库104中的增量行计数统计被重置。然后,附加的DML操作可能导致还有50个插入的行,以及还有20个删除的行(新的增量行计数30)。在该时间点:
·字典表150指示表130的行计数为150。
·刷新统计142指示增量行计数为50(100个插入和50个删除)。
·存储器中统计储存库104指示增量行计数为30(50个插入和20个删除)。
通过合并这些统计,数据库服务器100可以产生150+(100-50)+(50-20)=230的即时行计数。然后,优化器可以使用即时行计数230作为为查询选择执行计划的基础。
根据一个实施例,可以将刷新的增量行计数的副本和字典表150行计数的副本高速缓存在易失性存储器102中。在这样的实施例中,实时行计数的生成更快,因为其所有三个组件都可从易失性存储器102中获得。
在又一个实施例中,数据库服务器不在易失性存储器中维护增量行计数。而是,每次提交影响行计数的DML操作时,都会更新字典表150中的行计数。在这样的实施例中,字典表150将总是反映更新的行计数。但是,DML操作将不得不争用写许可来更新表150内的行计数。
在包括多个数据库服务器的集群数据库系统中,每个数据库服务器都可以在其易失性存储器中维护其自己的增量行计数。在这样的集群系统中,数据库服务器可以周期性地合并和同步其存储器中增量行计数值。
出于解释的目的,已经描述了其中增量统计在被刷新到盘中之后在易失性存储器中被“重置”的实施例。但是,在替代实施例中,将表的统计刷新到盘中允许易失性存储器重新用于其它统计。因此,在将表130的增量统计刷新到盘中之后,存储器中统计储存库104可能不再具有表130的任何增量统计。然后,如果/当另一个DML处理执行影响表130的统计的操作时,表130的新增量统计被添加到存储器中统计储存库104。在刷新统计之后释放易失性存储器是可取的,因为可能存在很长一段时间,期间没有DML会影响表,并且在那些时段期间继续消耗易失性存储器用于该表的统计是浪费的。
合并统计
在以上给出的示例中,计算行计数的即时版本涉及合并来自易失性存储器102的增量行计数、刷新到盘中(例如,在刷新统计142中)的增量行计数,以及字典表150中的行计数。但是,合并统计也在组合来自不同DML处理的统计时发生。
例如,在数据库服务器的单个实例中,可能同时执行多个DML处理,每个DML处理正在执行影响表130的行计数和表130的列的MIN/MAX值的插入。在一个实施例中,每个并发的DML处理维护其自己的增量统计,并且在提交时,使那些统计被合并到在存储器中统计储存库104中维护的服务器范围的增量统计中。如上所述,对维护在存储器中统计储存库104中的服务器范围的统计的访问可以通过锁存器来管控。
此外,多个数据库服务器实例可能正在执行影响相同统计的DML操作。在一个实施例中,那些数据库服务器实例中的每个实例在其各自的易失性存储器中维护其自己的服务器范围统计,并且周期性地将其服务器范围统计与所有其它数据库服务器实例的服务器范围统计合并。例如,可以通过将每个服务器的服务器范围统计刷新到盘160中,然后将统计合并到字典表150中来执行服务器范围统计的合并。在一个实施例中,锁用于序列化对在字典表150中维护的每个统计的写访问。
统计值的合并方式基于所讨论的统计。例如,合并列的增量MIN值(从服务器中的多个DML处理获得,或来自多个服务器实例的服务器范围的增量MIN值)是通过选择增量MIN值中的最小值来执行的。类似地,合并列的增量MAX值是通过选择增量MAX值中的最大值来执行的。另一方面,合并表的增量行计数统计(从服务器中的多个DML处理获得,或来自多个服务器实例的服务器范围的增量行计数)涉及对增量行计数统计求和。
即时表统计-块计数
数据库服务器100可以对其执行即时跟踪的另一个表级别统计是表130的块计数。在盘160上,表130的数据被存储在段中,并且每个段都有相关联的扩展区(extent)映射,该映射记录了表所消耗的块的总数。作为执行导致新扩展区被添加到表的更改的DML处理的一部分,扩展区映射被更改。因此,为了获得表130的即时块计数,数据库服务器100在优化器使用该信息之前简单地从表130的扩展区映射中读取块计数。
即时列统计
列级别统计包括最小值、最大值、不同值的数量(NDV)、空值的数量、平均列长和直方图。这些与表的行计数和块计数相比,即时维护要困难得多。但是,减少此类统计的陈旧度很重要,因为如果优化器使用字典表150中的陈旧列级别统计,那么可能会发生重大错误。
例如,考虑以下场景:其中优化器正在确定查询“SELECT name FROM emp WHEREage>80”的执行计划。假设表emp的age列中的实际MAX值为85,但字典表150中记录的陈旧MAX值为75。例如,如果自从最新刷新时间以来已插入age=85的行,那么可能会发生这种情况。当优化器使用陈旧的MAX值75时,优化器可能会得出结论:没有行将满足条件“age>80”,并且基于这个错误的结论,处理查询的性能可能受到影响,这是因为使用了不正确的统计。
针对MIN/MAX的即时列统计
根据实施例,为了避免由于优化器使用陈旧的列级别统计而导致的错误,针对列的最小值和最大值计算即时列级别统计。因此,对于那些最近没有刷新统计的表,优化器可以访问每列的最新最小值和最大值。除其它外,访问每列的实时最小值和最大值有助于优化器准确地识别和处置超出范围的查询。
与即时表统计跟踪类似,即时MIN/MAX跟踪涉及每当DML操作发生时执行额外的工作。在一个实施例中,执行的工作取决于DML操作是否正在执行插入、删除或两者(其中更新被视为先删除后插入)。
为了针对插入操作进行即时MIN/MAX跟踪,在存储器中统计储存库104中维护每列的“增量”最小值和“增量”最大值。在对列的MIN/MAX值执行统计收集操作(例如,在维护窗口期间)之后,用每列的MIN/MAX更新字典表150,并且初始化存储器中统计储存库104中的增量MIN/MAX值。根据一个实施例,增量MIN/MAX被初始化为零,而不是字典表中存储的MIN/MAX值,并且存储器中储存库仅跟踪自从最新刷新时间以来执行的增量数据更改的MIN/MAX。
在替代实施例中,增量MIN/MAX被初始化为存储在字典表中的MIN/MAX值。例如,假设表130具有列“age”和“salary”。进一步假设字典表150指示“age”的MIN/MAX值为15/80,并且“salary”的MIN/MAX值为20,000/1,000,000。在这些情况下,存储在存储器中统计储存库104中的MIN/MAX增量值对于age列被初始化为15/80,并且对于salary列被初始化为20,000/1,000,000。
假设紧接在那些统计被存储在字典表150中的最新刷新时间之后,执行其中将十行插入到表130中的DML操作。执行DML的处理还通过以下各项执行统计维护:
·将存储器中统计储存库104中的增量最小年龄设置为以下两者中的较小者:(a)当前增量最小年龄,以及(b)十个新插入的行中的最小年龄值。
·将存储器中统计储存库104中的增量最大年龄设置为以下两者中的较大者:(a)当前增量最大年龄,以及(b)十个新插入的行中的最大年龄值。
·将存储器中统计储存库104中的增量最低薪水设置为以下两者中的较小者:(a)当前增量最低薪水,以及(b)十个新插入的行中的最低薪水值。
·将存储器中统计储存库104中的增量最高薪水设置为以下两者中的较大者:(a)当前增量最高薪水,以及(b)十个新插入的行中的最高薪水值。
因此,假设在10个插入的行中插入的最大年龄是85,那么执行插入操作的DML将把存储器中统计储存库104中存储的增量最大年龄值更新为85,因为85大于当前增量年龄最大值80。
类似地,如果在10个插入的行中插入的最小年龄是13,那么执行插入的DML操作将把存储器中统计储存库104中存储的增量最小年龄值更新为13,因为它小于当前增量年龄最大值15。执行插入的DML操作也将以类似方式更新增量薪水MIN/MAX值。
由于存储器中统计储存库仅具有增量MIN/MAX,因此优化器将通过合并存储器中MIN/MAX和字典表来即时计算最新统计,并使用这些统计来处理查询。
使用采样来减少维护即时统计的开销
当然,即时维护列级别统计(诸如,每列的MIN和MAX)需要时间和存储器/盘空间。此外,由于统计收集开销是由影响统计的前台DML处理执行的,因此统计收集开销将影响用户应用的性能,并可能降低用户体验。根据一个实施例,为了最小化在前台完成的工作,提供了实现基于样本的实况MIN/MAX而不是确切的MIN/MAX的技术。即,为了减少维护即时MIN/MAX列统计所需的开销,在确定DML操作期间插入的MIN/MAX值时,仅考虑插入行的子集。
例如,假设DML操作插入1000行。如果不进行采样,那么将需要分析1000行中的每行插入到每列中的值,以确定通过DML操作插入到每列中的MIN/MAX值。根据一个实施例,不是分析插入在1000行中的每行中的值,而是数据库服务器100对1000行进行随机采样。例如,随机采样可以仅从1000行中选择100行。确定属于采样的100行的每一列的MIN/MAX值将比确定所有1000个插入的行的MIN/MAX值所需的开销少得多。
参考图2,它是图示根据实施例的由数据库服务器100执行的用于维护即时每列MIN/MAX统计的步骤的流程图。在步骤200处,数据库服务器接收DML命令,该命令插入行(或者通过INSERT操作,或者作为UPDATE操作的一部分)。在步骤202处,从将在DML命令期间插入的行创建样本。例如,可以通过随机选择要由DML命令插入的每100行中的一行来创建样本。实际的采样技术可以不同,并且本文描述的统计维护技术不限于任何特定的采样技术。
在步骤204处,数据库服务器100确定样本中各行的每列样本MIN/MAX值。最后,在步骤206处,将以这种方式导出的样本MIN/MAX值与存储在存储器中统计储存库104中的增量MIN/MAX值组合。在一个实施例中,图2中所示的步骤由与正在执行插入值的DML操作的相同处理执行。但是,由于仅为样本确定MIN/MAX值,因此处理执行统计维护带来的开销比如果处理所有插入行时的开销要少得多。
允许的不准确性
当基于采样而非所有插入值来生成即时增量统计时,所得统计可能不准确。例如,假设当前增量MAX年龄为80,样本中的MAX年龄为85,并且所有插入的行中的MAX年龄为90。在这种情况下,即使其中age=90的行被插入到age列中,增量MAX年龄也将被更新为85。
可能导致不准确统计的另一种情况是使用仅插入增量统计。仅插入增量统计是仅考虑插入对统计的影响的增量统计,即使DML操作可能不仅仅涉及插入。
在一个实施例中,不是招致额外的开销来确保在更新和/或删除之后增量MIN/MAX统计是准确的,而是允许MIN/MAX的增量统计变得不准确。即,仅更新增量MIN/MAX统计以仅考虑由DML操作进行的插入。即使仅插入增量MIN/MAX统计可能不准确,仅插入增量MIN/MAX统计也将比不考虑自从最新刷新时间以来的任何变化的、存储在字典表150中的统计更准确。此外,对于其中值必须增加的列(诸如,销售表的日期列),仅考虑插入的值仍可能导致准确的MAX统计。
高频统计收集
与即时统计收集不同,高频统计收集不会使得正在执行影响统计的DML操作的相同处理去执行任何附加工作来维护或更新统计。而是,高频统计收集涉及在后台执行统计收集处理,同时允许DML操作在前台处理中继续执行。
因为统计收集处理正在后台执行,因此可能限制了可供统计收集处理使用的CPU资源。例如,在一个实施例中,允许统计收集处理消耗不超过数据库服务器100可用的CPU时钟周期的5%。
统计收集处理被认为是“高频”的,因为统计收集处理的发起频率比“维护窗口”的发生频率高得多。例如,在一些系统中,维护窗口可能仅每24小时出现一次。相比之下,高频统计收集处理可以每15分钟启动一次。
与触发统计收集处理执行的间隔相比,由统计收集处理执行的操作可能需要更长的时间来执行。例如,高频统计收集处理可能需要20分钟才能完成,即使执行该处理的间隔为15分钟也是如此。因此,根据一个实施例,数据库服务器100被设计为,如果对于特定统计或统计集合没有其它统计收集处理实例处于活动,那么仅针对该相同统计或统计集合启动新的统计收集处理。
例如,如果在1:00pm发起针对特定表的MIN/MAX统计收集处理,但是该处理在1:15之前尚未完成,那么在1:15不会为该特定表发起新的MIN/MAX统计收集处理。而是,允许当前活动的MIN/MAX统计收集处理继续进行,而不必和与同一列MIN/MAX统计相关联的其它统计收集处理竞争资源。
自适应频率统计收集
在上面给出的示例中,以固定时间间隔收集高频统计。但是,以固定时间间隔收集统计在一些情况下可能过于频繁,而在其它情况下可能不够频繁。如果收集得太频繁,那么统计收集的开销会影响系统的性能。如果没有足够频繁地收集,那么优化器将没有新的统计来做出最佳执行计划选择。
可以预期的是,在上升(ramp-up)阶段(当最初填充表时,如在表的初始迁移期间),表将经历的DML的数量将急剧增加,并且逐渐变得越来越不活跃。当它处于上升阶段时,应该非常频繁地收集统计以跟上数据变化。当表的大小达到一定数量级时,相同的频率将不适用。
因此,根据一个实施例,对于高频后台统计收集,不是以固定频率收集统计,而是使用取决于实际工作负载的自适应频率。仅当表的陈旧统计变得重要时,优化器才很有可能被统计所误导。因此,在一个实施例中,仅在那些情况下才调用后台统计收集。因此,在一个实施例中,统计维护是需求驱动的操作,其需要在前台和后台都采取动作,如将在下文中详细描述的。
用于统计收集的队列
根据一个实施例,数据库服务器100维护用于统计收集的队列。统计收集队列中的每个条目都识别对于其正是收集统计的时间的数据库结构,诸如表、分区或索引。触发在用于统计收集的队列中插入条目的条件是数据库对象的陈旧度超过了陈旧度阈值(例如,10%)。
在一个实施例中,作为前台动作,数据库服务器100检测到表超过百分比陈旧度阈值,并将目标表的条目放入到等待后台统计收集的队列中。在集群数据库环境中,每个服务器节点的易失性存储器中的DML监视信息可能不足以确定陈旧度。因此,在这样的实施例中,每个服务器节点的易失性存储器中的统计信息被刷新到盘中以进行陈旧度确定。
根据一个实施例,数据库服务器创建例如每1分钟周期性地被唤醒以将DML监视信息刷新到盘中的作业。在将特定表的统计刷新到盘中时,计算该特定表的陈旧百分比。如果超过阈值,那么数据库服务器将为该特定表放置一个条目,并将该表的条目放入到等待队列中。
在替代实施例中,一种机制连续检查目标队列是否为空。如果队列为空,那么将已经历DML的各种数据库对象的DML监视信息刷新到盘中。在将特定表的统计刷新到盘中时,计算该特定表的陈旧百分比。如果超过阈值,那么数据库服务器100将该特定表的条目放置到用于统计收集的队列中。
在又一个实施例中,在DML操作的提交期间,数据库服务器100即时计算陈旧度,以在当前事务中涉及的对象的陈旧度超过10%阈值的情况下,将这些对象添加到用于统计收集的队列中。基于DML的陈旧度确定的益处在于,它是完全由漂移驱动的,而不是时间驱动的。但是,由于DML是在前台执行的,因此陈旧度确定也在前台执行。作为在前台采取的动作,应彻底最小化其开销,以减少对用户应用的影响。
维护用于统计收集的队列
用于统计收集的队列可以由多个不同的数据库服务器实例共享。根据一个实施例,每个数据库服务器实例可以将条目添加到队列,并且每个数据库服务器实例可以处理在队列的头部的条目。
为了处理位于队列的头部的条目,数据库服务器实例读取该条目中识别的数据库对象、将该条目标记为“进行中”,并发起适当的统计收集操作以收集该数据库对象的统计。在完成统计收集操作后,数据库服务器实例将从队列中移除该条目(或将该条目标记为“完成”),并在字典表150中更新该数据库对象的统计。
预测统计生成
如前所述,实时维护一些统计可能太昂贵。根据一个实施例,使用预测方法来预测那些统计的近似实时值。
例如,在一个实施例中,不实时维护列的不同值的数量(NDV),因为要找出被插入的行中的列的值是新的(NDV应该被递增1)还是旧的(NDV保持不变),必须将该值与表中已存在的行中的列的值进行比较。但是,在许多情况下,不同值的数量与其它类型的统计相关,例如,行的计数、时间戳。如果相关的统计是实时维护的,那么它们可以用于导出当前的NDV。
根据一个实施例,数据库服务器如下生成某些统计的即时预测:
·预测器统计被实时维护(例如,时间戳、行的计数)
·统计收集作业收集并存储目标统计和预测器统计的历史值。这些作业还在预测器统计和目标统计之间展现出强的相关性的那些列上建立预测模型,并且在相关性模式变化时刷新模型。统计收集作业可以在维护窗口期间发生,或者可以作为高频统计收集的一部分发生。假定实时维护的预测器统计,系统使用为此列创建的预测模型(如果存在这样的模型)来预测当前目标统计。
例如,假设在过去(例如,最近100天中的每一天)已记录N个点的表的时间戳和行计数以及NDV。该历史信息可以用于创建预测模型,该预测模型将即时收集的统计(例如,时间戳、行计数)作为输入并输出预测的NDV值。预测机制可以是例如机器学习引擎。在机器学习引擎的实施例中,可以通过向机器学习引擎馈送(时间戳、行计数)的N条记录以及对应的先前记录的NDV值来训练机器学习引擎。
一旦以这种方式训练了机器学习引擎,数据库服务器100就可以使机器学习引擎通过(a)使用上述技术即时收集时间戳的值和表行计数,以及(b)将这些值馈送给经训练的机器学习系统来为列生成NDV的即时预测。虽然不能保证是精确的,但是以这种方式生成的NDV值可能比存储在字典表150中的陈旧的NDV准确得多,特别是在自从该列的NDV统计的最新刷新以来已对该列操作许多DML的情况下。
多层统计收集方法
如上所述,不同的统计带来了不同的统计收集挑战。例如,可以以比其它统计少得多的开销来维护一些统计。此外,一些统计可能比其它统计更准确地进行预测。因此,根据一个实施例,为数据库系统提供了用于不同统计的不同统计收集方法。
参考图3,它是根据实施例的图示如何通过实现多层统计收集方法的数据库来维护统计的流程图。步骤300指示收集统计的方式基于统计的类型。对于其收集会带来相对小的开销的诸如表行计数之类的统计,执行即时统计收集,如步骤302处所示。如在步骤304处所解释的,在即时统计收集期间,执行影响统计的DML的处理也执行用于统计收集的操作。例如,对于表行计数,操作可能涉及基于所讨论的DML插入了多少行来更新存储器中增量行计数。
对于需要更多开销的统计,可以执行高频后台统计收集操作(步骤312)。如步骤314中所示,可以周期性地或基于对应数据库对象的陈旧度来发起执行高频统计收集的后台处理。在后一种情况下,自适应频率可能涉及确定每个数据库对象的统计陈旧程度。对于超过指定陈旧程度的那些对象,将条目添加到用于统计收集的队列中。后台处理可以读取队列的头部的记录,并收集与该条目相关联的数据库对象的统计。
最后,对于需要大量开销来即时收集但可以基于其它统计以合理的准确性进行预测的统计,可以使用统计预测(步骤322)。如步骤324中所示,生成统计的即时预测可以涉及将预测器统计的即时值馈送到经训练的机器学习引擎。基于预测器统计的即时值,机器学习引擎为预测的统计输出预测值。例如,经训练的机器学习引擎可以基于列的MIN/MAX值和当前行计数来输出该列的NDV值。
这三种统计维护技术的互补关系如下:
·通过基于样本的即时统计收集来维护最轻量的统计,诸如表行计数、块计数和列MIN/MAX/空值的数量、平均列长;
·不能即时维护的NDV将由统计预测来解决。
·由于即时统计收集和统计预测两者都不是100%准确,因此后台高频统计收集将在必要时纠正统计。注意的是,经由高频统计收集收集到的统计是准确的。
云计算
本文通常使用术语“云计算”来描述计算模型,该计算模型使得能够按需访问共享的计算资源池,诸如计算机网络、服务器、软件应用和服务,以及允许以最少的管理工作量或服务提供商交互快速供给和释放资源。
云计算环境(有时被称为云环境或云)可以以各种不同的方式实现,以最佳地适合不同的需求。例如,在公共云环境中,底层的计算基础设施由组织拥有,该组织使其云服务可用于其它组织或普通大众。相比之下,私有云环境通常仅供单个组织使用或在单个组织内使用。社区云旨在由社区内的几个组织共享;而混合云包括两种或更多种类型的云(例如,私有云、社区云或公共云),这些云通过数据和应用可移植性绑定在一起。
一般而言,云计算模型使得一些以前由组织自己的信息技术部门提供的那些职责改为作为云环境内的服务层交付,以供消费者(根据云的公共/私有性质,在组织内或在组织外)使用。取决于特定的实施方式,由每个云服务层提供或在每个云服务层内提供的组件或特征的精确定义可能有所不同,但是常见的示例包括:软件即服务(SaaS),其中消费者使用在云基础设施上运行的软件应用,而SaaS提供商管理或控制底层的云基础设施和应用。平台即服务(PaaS),其中消费者可以使用由PaaS提供者支持的软件编程语言和开发工具来开发、部署和控制其自己的应用,而PaaS提供者管理或控制云环境的其它方面(即,在运行时执行环境下面的所有一切)。基础设施即服务(IaaS),其中消费者可以部署和运行任意软件应用,和/或供给处理、存储、网络和其它基本计算资源,而IaaS提供者管理或控制底层的物理云基础设施(即,操作系统层下面的所有一切)。数据库即服务(DBaaS),其中消费者使用运行在云基础设施上的数据库服务器或数据库管理系统,而DbaaS提供者管理或控制底层的云基础设施、应用和服务器,包括一个或多个数据库服务器。
统计检索
当数据库服务器需要统计(例如,以在查询的竞争执行计划中进行选择)时,数据库服务器可以以多种方式检索统计。例如,即时增量统计可以周期性地合并到字典表中,并且数据库服务器可以被设计为始终从字典表中获得统计。另一方面,数据库服务器可以被设计为针对最近生成的即时统计检查存储器中统计储存库104,并且仅当此类统计不在存储器中统计储存库104中时才去到字典表150。在又一个实施例中,数据库服务器可以从字典表150中检索较旧的统计\从存储器中统计储存库104中检索增量统计,并且将两者合并以提供即时统计。
在又一个实施例中,通过提供数据库服务器可以通过其请求统计的API,使数据库服务器与生成即时统计的方式隔离。响应于对API的调用,统计生成处理可以以多种方式中的任何一种来生成即时统计。例如,取决于请求的实际统计,统计生成处理可以:
·从字典表150中获得统计
·从存储器中统计储存库104中获得增量统计
·将来自存储器中统计储存库104中的增量统计与来自字典表150的统计组合
·从预测机制获得预测统计
本文描述的统计生成技术不限于用于向数据库服务器提供期望的统计的任何特定机制。
硬件概述
根据一个实施例,本文描述的技术由一个或多个专用计算设备实现。专用计算设备可以是硬连线的以执行这些技术,或者可以包括数字电子设备(诸如被持久性地编程为执行这些技术的一个或多个专用集成电路(ASIC)或现场可编程门阵列(FPGA)),或者可以包括被编程为根据固件、存储器、其它存储装置或组合中的程序指令执行这些技术的一个或多个通用硬件处理器。这种专用计算设备还可以将定制的硬连线逻辑、ASIC或FPGA与定制编程相结合,以实现这些技术。专用计算设备可以是台式计算机系统、便携式计算机系统、手持设备、联网设备或者结合硬连线和/或程序逻辑以实现这些技术的任何其它设备。
例如,图4是图示可以在其上实现本发明实施例的计算机系统400的框图。计算机系统400包括总线402或用于传送信息的其它通信机制,以及与总线402耦合以处理信息的硬件处理器404。硬件处理器404可以是例如通用微处理器。
计算机系统400还包括耦合到总线402的主存储器406,诸如随机存取存储器(RAM)或其它动态存储设备,用于存储将由处理器404执行的信息和指令。主存储器406还可以用于存储在执行由处理器404执行的指令期间的临时变量或其它中间信息。当存储在处理器404可访问的非瞬态存储介质中时,这些指令使计算机系统400成为被定制以执行指令中指定的操作的专用机器。
计算机系统400还包括耦合到总线402的只读存储器(ROM)408或其它静态存储设备,用于存储用于处理器404的静态信息和指令。提供存储设备410(诸如磁盘、光盘或固态驱动器)并耦合到总线402,用于存储信息和指令。
计算机系统400可以经由总线402耦合到显示器412(诸如阴极射线管(CRT)),用于向计算机用户显示信息。包括字母数字键和其它键的输入设备414耦合到总线402,用于将信息和命令选择传送到处理器404。另一种类型的用户输入设备是光标控件416(诸如鼠标、轨迹球或光标方向键),用于将方向信息和命令选择传送到处理器404并用于控制显示器412上的光标移动。这种输入设备通常在两个轴上具有两个自由度,第一轴(例如,x)和第二轴(例如,y),这允许设备指定平面中的位置。
计算机系统400可以使用定制的硬连线逻辑、一个或多个ASIC或FPGA、固件和/或程序逻辑(它们与计算机系统相结合,使计算机系统400成为或将计算机系统400编程为专用机器)来实现本文所述的技术。根据一个实施例,响应于处理器404执行包含在主存储器406中的一个或多个指令的一个或多个序列,计算机系统400执行所述的技术。这些指令可以从另一个存储介质(诸如存储设备410)读入到主存储器406中。包含在主存储器406中的指令序列的执行使得处理器404执行本文所述的处理步骤。在替代实施例中,可以使用硬连线的电路系统代替软件指令或与软件指令组合。
如本文使用的术语“存储介质”是指存储使机器以特定方式操作的数据和/或指令的任何非瞬态介质。这种存储介质可以包括非易失性介质和/或易失性介质。非易失性介质包括例如光盘、磁盘或固态驱动器,诸如存储设备410。易失性介质包括动态存储器,诸如主存储器406。存储介质的常见形式包括例如软盘、柔性盘、硬盘、固态驱动器、磁带或任何其它磁数据存储介质、CD-ROM、任何其它光学数据存储介质、任何具有孔图案的物理介质、RAM、PROM和EPROM、FLASH-EPROM、NVRAM、任何其它存储器芯片或盒式磁带。
存储介质不同于传输介质但可以与传输介质结合使用。传输介质参与在存储介质之间传送信息。例如,传输介质包括同轴电缆、铜线和光纤,包括包含总线402的导线。传输介质也可以采用声波或光波的形式,诸如在无线电波和红外数据通信期间生成的那些。
各种形式的介质可以参与将一个或多个指令的一个或多个序列传送到处理器404以供执行。例如,指令最初可以在远程计算机的磁盘或固态驱动器上携带。远程计算机可以将指令加载到其动态存储器中,并使用调制解调器通过电话线发送指令。计算机系统400本地的调制解调器可以在电话线上接收数据并使用红外发送器将数据转换成红外信号。红外检测器可以接收红外信号中携带的数据,并且适当的电路系统可以将数据放在总线402上。总线402将数据传送到主存储器406,处理器404从主存储器406检索并执行指令。由主存储器406接收的指令可以可选地在由处理器404执行之前或之后存储在存储设备410上。
计算机系统400还包括耦合到总线402的通信接口418。通信接口418提供耦合到网络链路420的双向数据通信,其中网络链路420连接到本地网络422。例如,通信接口418可以是集成服务数字网(ISDN)卡、电缆调制解调器、卫星调制解调器或者提供与对应类型的电话线的数据通信连接的调制解调器。作为另一个示例,通信接口418可以是局域网(LAN)卡,以提供与兼容LAN的数据通信连接。还可以实现无线链路。在任何此类实现中,通信接口418都发送和接收携带表示各种类型信息的数字数据流的电信号、电磁信号或光信号。
网络链路420通常通过一个或多个网络向其它数据设备提供数据通信。例如,网络链路420可以提供通过本地网络422到主计算机424或到由互联网服务提供商(ISP)426操作的数据设备的连接。ISP 426进而通过全球分组数据通信网络(现在通常称为“互联网”428)提供数据通信服务。本地网络422和互联网428都使用携带数字数据流的电信号、电磁信号或光信号。通过各种网络的信号以及网络链路420上并通过通信接口418的信号(其将数字数据携带到计算机系统400和从计算机系统400携带数字数据)是传输介质的示例形式。
计算机系统400可以通过(一个或多个)网络、网络链路420和通信接口418发送消息和接收数据,包括程序代码。在互联网示例中,服务器430可以通过互联网428、ISP 426、本地网络422和通信接口418发送对应用程序的所请求代码。
接收到的代码可以在被接收到时由处理器404执行,和/或存储在存储设备410或其它非易失性存储器中以供稍后执行。
在前面的说明书中,已经参考众多具体细节描述了本发明的实施例,这些细节可以从实现到实现有所变化。因此,说明书和附图应被视为说明性而非限制性的。本发明范围的唯一和排他性指示,以及申请人意图作为本发明范围的内容,是以发布这种权利要求书的具体形式从本申请发布的权利要求书集合的字面和等同范围,包括任何后续更正。
Claims (24)
1.一种方法,包括:
在持久性存储装置上存储反映数据库的特定状态的统计;
在数据库服务器处接收数据操纵语言(DML)命令;
响应于所述DML命令:
对存储在数据库中的数据进行一个或多个更改;以及
生成反映所述一个或多个更改如何影响所述统计的一个或多个增量统计;以及
将所述一个或多个增量统计存储在数据库服务器的易失性存储器中,
基于所述持久性存储装置上的所述统计和所述一个或多个增量统计,生成一个或多个即时统计;以及
至少部分地基于所述即时统计,为后续数据库命令从多个候选查询计划中选择特定查询计划;
其中所述方法由一个或多个计算设备执行。
2.如权利要求1所述的方法,其中生成所述一个或多个增量统计包括:
选择由所述DML命令插入的项目的样本;以及
基于所述项目的样本来生成所述一个或多个增量统计。
3.如权利要求1所述的方法,其中生成一个或多个增量统计包括为以下至少之一生成增量统计:
表中的行的计数;
表中的块的计数;
表的列中的最大值;
表的列的最小值;
表的列的空值的数量;或者
表的列的平均列长。
4.如权利要求1所述的方法,其中:
反映所述数据库的所述特定状态的所述统计被存储在所述持久性存储装置中的一个或多个字典表中;以及
所述特定状态是所述统计的最新刷新时间。
5.如权利要求1所述的方法,其中:
所述一个或多个即时统计对应于被存储在所述持久性存储装置上的统计的第一子集;
所述方法还包括,对于存储在所述持久性存储装置上的统计的第二子集中的每个统计,通过使所述数据库服务器调用后台执行的统计收集操作来刷新所述统计。
6.如权利要求5所述的方法,其中所述后台执行的统计收集操作由所述数据库服务器基于经过固定时间间隔来调用。
7.如权利要求6所述的方法,其中,当经过固定时间间隔之后,后台执行的统计收集操作的先前调用尚未完成时,所述数据库服务器不调用所述后台执行的统计收集操作的另一个实例。
8.如权利要求5所述的方法,其中所述后台执行的统计收集操作由所述数据库服务器基于统计的第二子集相对于特定数据库对象超过陈旧度阈值来调用。
9.如权利要求8所述的方法,还包括:
由前台处理确定所述特定数据库对象的统计的第二子集超过陈旧度阈值;
将所述特定数据库对象的条目添加到用于统计收集的队列中;以及
调用后台处理,所述后台处理基于所述队列中的条目执行统计收集操作,以收集所述特定数据库对象的统计的第二子集。
10.如权利要求1所述的方法,其中:
所述一个或多个即时统计包括针对特定统计的一个或多个预测器统计;以及
所述方法还包括:基于以下各项使用预测机制来生成针对所述特定统计的即时预测值:
针对所述一个或多个预测器统计即时生成的值;以及
所述一个或多个预测器统计和特定统计的值的历史。
11.如权利要求10所述的方法,其中所述预测机制是经训练的机器学习引擎。
12.如权利要求10所述的方法,其中所述特定统计是特定表的特定列的不同值的数量。
13.如权利要求11所述的方法,还包括以下步骤:通过用所述一个或多个预测器统计和特定统计的值的历史训练所述经训练的机器学习引擎来训练所述经训练的机器学习引擎以预测所述特定统计。
14.如权利要求12所述的方法,还包括:
选择所述特定列作为要为其预测不同值的数量的列;
其中选择所述特定列至少部分地基于如与所述特定列相关联的历史数据所指示的该列的不同值的数量倾向于随时间变化的程度。
15.如权利要求10所述的方法,其中:
所述预测机制使用预测模型;以及
所述方法还包括使用后台处理或者在维护窗口期间或者使用高频统计处理来维护所述预测模型。
16.如权利要求10所述的方法,其中:
所述预测机制使用预测模型;以及
所述方法还包括,一旦创建了所述预测模型,就仅在自从与所述预测模型相关联的最后的模型创建时间以来已经收集了足够的新统计点时才刷新模型。
17.如权利要求10所述的方法,其中:
所述预测机制使用预测模型来预测特定列的不同值的数量;以及
所述方法还包括:
在接收到特定查询之前:
使用所述预测模型来预测所述特定列的不同值的数量;
存储所述特定列的不同值的预测数量;以及
在接收到所述特定查询之后,使用所存储的针对所述特定列的不同值的预测数量来处理所述特定查询。
18.一种方法,包括:
在持久性存储装置中存储反映由数据库服务器管理的数据库的特定状态的统计;
其中关于所述持久性存储装置的统计包括一组特定统计;
对于所述一组特定统计中的每个统计,通过使数据库服务器调用后台执行的统计收集操作来刷新所述统计;
其中所述后台执行的统计收集操作由所述数据库服务器基于所述特定一组统计相对于数据库中的特定数据库对象超过陈旧度阈值来调用;
其中所述方法由一个或多个计算设备执行。
19.如权利要求18所述的方法,还包括:
由前台处理确定所述特定数据库对象的所述一组特定统计超过陈旧度阈值;
将所述特定数据库对象的条目添加到用于统计收集的队列中;以及
调用后台处理,所述后台处理基于所述队列中的条目执行统计收集操作,以收集所述特定数据库对象的所述特定一组统计。
20.一种方法,包括:
在持久性存储装置中存储反映数据库的特定状态的统计;
在数据库服务器处接收数据操纵语言(DML)命令;
响应于所述DML命令:
对存储在数据库中的数据进行一个或多个更改;以及
生成反映所述一个或多个更改如何影响所述统计的一个或多个增量统计;
将所述一个或多个增量统计存储在数据库服务器的易失性存储器中,
基于所述一个或多个增量统计来生成一个或多个即时统计;其中所述一个或多个即时统计包括针对特定统计的一个或多个预测器统计;
基于以下各项使用预测机制来生成针对所述特定统计的即时预测值:
针对所述一个或多个预测器统计即时生成的值;以及
所述一个或多个预测器统计和特定统计的值的历史;
其中所述方法由一个或多个计算设备执行。
21.如权利要求20所述的方法,其中所述预测机制是经训练的机器学习引擎。
22.如权利要求20所述的方法,其中所述特定统计是特定表的特定列的不同值的数量。
23.如权利要求21所述的方法,还包括以下步骤:通过用所述一个或多个预测器统计和特定统计的值的历史训练所述经训练的机器学习引擎来训练所述经训练的机器学习引擎以预测所述特定统计。
24.一种或多种存储指令的非暂态计算机可读介质,所述指令在由一个或多个计算设备执行时,使得执行权利要求1至23中的任一项所述的方法。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862715263P | 2018-08-06 | 2018-08-06 | |
US62/715,263 | 2018-08-06 | ||
US201962856246P | 2019-06-03 | 2019-06-03 | |
US62/856,246 | 2019-06-03 | ||
PCT/US2019/045361 WO2020033446A1 (en) | 2018-08-06 | 2019-08-06 | Techniques for maintaining statistics in a database system |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112740195A true CN112740195A (zh) | 2021-04-30 |
Family
ID=67688835
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980061056.9A Pending CN112740195A (zh) | 2018-08-06 | 2019-08-06 | 数据库系统中维护统计的技术 |
Country Status (4)
Country | Link |
---|---|
US (2) | US11468073B2 (zh) |
EP (1) | EP3834093A1 (zh) |
CN (1) | CN112740195A (zh) |
WO (1) | WO2020033446A1 (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020033446A1 (en) | 2018-08-06 | 2020-02-13 | Oracle International Corporation | Techniques for maintaining statistics in a database system |
US11120049B2 (en) * | 2018-11-19 | 2021-09-14 | Servicenow, Inc. | Concurrent data imports |
US11514044B2 (en) * | 2019-08-20 | 2022-11-29 | Sap Se | Automated plan upgrade system for backing services |
US20210279633A1 (en) * | 2020-03-04 | 2021-09-09 | Tibco Software Inc. | Algorithmic learning engine for dynamically generating predictive analytics from high volume, high velocity streaming data |
CN111427920B (zh) * | 2020-03-16 | 2023-08-11 | 深圳市腾讯计算机系统有限公司 | 数据采集方法、装置、系统、计算机设备及存储介质 |
US11256720B1 (en) * | 2021-03-23 | 2022-02-22 | Efolder Inc. | Hierarchical data structure having tiered probabilistic membership query filters |
CN113901004B (zh) * | 2021-10-27 | 2023-06-02 | 江苏瑞中数据股份有限公司 | 一种数据中台化的大数据复杂实时计算的方法 |
US11775516B2 (en) * | 2022-02-09 | 2023-10-03 | International Business Machines Corporation | Machine-learning-based, adaptive updating of quantitative data in database system |
CN117349347A (zh) * | 2023-12-05 | 2024-01-05 | 北京天元特通科技有限公司 | 数据集的更新统计方法、装置、电子设备及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101178727A (zh) * | 2006-11-08 | 2008-05-14 | 国际商业机器公司 | 用于搜索数据库的方法和系统 |
US20110022581A1 (en) * | 2009-07-27 | 2011-01-27 | Rama Krishna Korlapati | Derived statistics for query optimization |
CN103049556A (zh) * | 2012-12-28 | 2013-04-17 | 中国科学院深圳先进技术研究院 | 一种海量医疗数据的快速统计查询方法 |
CN103678459A (zh) * | 2012-09-14 | 2014-03-26 | 德商赛克公司 | 用于大潜在异质数据集统计在线分析的系统和/或方法 |
US20140095474A1 (en) * | 2012-09-28 | 2014-04-03 | Oracle International Corporation | Creating and using data that indicates misestimates of actual costs |
CN104798070A (zh) * | 2012-09-28 | 2015-07-22 | 甲骨文国际公司 | 活动跟踪、数据分类和数据库内归档的技术 |
CN108140048A (zh) * | 2015-10-22 | 2018-06-08 | 甲骨文国际公司 | 分层存储装置中的列式高速缓存 |
Family Cites Families (47)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5953729A (en) | 1997-12-23 | 1999-09-14 | Microsoft Corporation | Using sparse file technology to stage data that will then be stored in remote storage |
US6697881B2 (en) | 2001-05-29 | 2004-02-24 | Hewlett-Packard Development Company, L.P. | Method and system for efficient format, read, write, and initial copy processing involving sparse logical units |
US7499907B2 (en) * | 2001-10-12 | 2009-03-03 | Teradata Us, Inc. | Index selection in a database system |
US7047231B2 (en) | 2002-03-01 | 2006-05-16 | Software Engineering Gmbh | Getpage-workload based index optimizer |
US7475098B2 (en) | 2002-03-19 | 2009-01-06 | Network Appliance, Inc. | System and method for managing a plurality of snapshots |
US7010663B2 (en) | 2002-03-22 | 2006-03-07 | Sun Microsystems, Inc. | Method and system for dividing a plurality of existing volumes of storage into a plurality of virtual logical units of storage |
US7849032B1 (en) | 2002-05-24 | 2010-12-07 | Oracle International Corporation | Intelligent sampling for neural network data mining models |
US7457982B2 (en) | 2003-04-11 | 2008-11-25 | Network Appliance, Inc. | Writable virtual disk of read-only snapshot file objects |
US7213012B2 (en) | 2003-05-09 | 2007-05-01 | Oracle International Corporation | Optimizer dynamic sampling |
US20040268068A1 (en) | 2003-06-24 | 2004-12-30 | International Business Machines Corporation | Efficient method for copying and creating block-level incremental backups of large files and sparse files |
US7644730B2 (en) | 2003-09-23 | 2010-01-12 | Reck Michael E | Method for isolating an appliance in a plumbing system |
US7617205B2 (en) | 2005-03-30 | 2009-11-10 | Google Inc. | Estimating confidence for query revision models |
US7409511B2 (en) | 2004-04-30 | 2008-08-05 | Network Appliance, Inc. | Cloning technique for efficiently creating a copy of a volume in a storage system |
US8032522B2 (en) | 2006-08-25 | 2011-10-04 | Microsoft Corporation | Optimizing parameterized queries in a relational database management system |
US7933869B2 (en) | 2006-12-29 | 2011-04-26 | Sap Ag | Method and system for cloning a tenant database in a multi-tenant system |
US7739241B2 (en) | 2007-01-03 | 2010-06-15 | International Business Machines Corporation | Implementing dynamic copy-on-write (COW) storage compression through purge function |
WO2008121873A1 (en) | 2007-03-29 | 2008-10-09 | Vmware, Inc. | Synchronization and customization of a clone computer |
US7716183B2 (en) | 2007-04-11 | 2010-05-11 | Dot Hill Systems Corporation | Snapshot preserved data cloning |
US8332365B2 (en) | 2009-03-31 | 2012-12-11 | Amazon Technologies, Inc. | Cloning and recovery of data volumes |
US9582525B2 (en) | 2009-09-08 | 2017-02-28 | Oracle International Corporation | Technique to gather statistics on very large hierarchical collections in a scalable and efficient manner |
US8412678B2 (en) | 2009-09-16 | 2013-04-02 | Strategic Technologies, Inc. | Systems and methods for providing business continuity services |
US9811532B2 (en) | 2010-05-03 | 2017-11-07 | Panzura, Inc. | Executing a cloud command for a distributed filesystem |
US9401967B2 (en) | 2010-06-09 | 2016-07-26 | Brocade Communications Systems, Inc. | Inline wire speed deduplication system |
US10838957B2 (en) * | 2010-06-17 | 2020-11-17 | Microsoft Technology Licensing, Llc | Slicing relational queries using spool operators |
JP5822452B2 (ja) | 2010-10-22 | 2015-11-24 | 株式会社インテック | ストレージサービス提供装置、システム、サービス提供方法、及びサービス提供プログラム |
CN102651007A (zh) | 2011-02-28 | 2012-08-29 | 国际商业机器公司 | 一种管理数据库索引的方法和装置 |
US8832028B2 (en) | 2011-08-25 | 2014-09-09 | Oracle International Corporation | Database cloning |
US9646020B2 (en) | 2012-05-02 | 2017-05-09 | Microsoft Technology Licensing, Llc | Integrated format conversion during disk upload |
US10346369B2 (en) | 2012-10-11 | 2019-07-09 | Delphix Corp. | Retrieving point-in-time copies of a source database for creating virtual databases |
US9354976B2 (en) | 2013-03-08 | 2016-05-31 | Netapp, Inc. | Locating previous versions of an object in a storage cluster |
US9600786B2 (en) * | 2013-04-09 | 2017-03-21 | Hewlett Packard Enterprise Development Lp | Optimizing analytic flows |
US20140310302A1 (en) | 2013-04-12 | 2014-10-16 | Oracle International Corporation | Storing and querying graph data in a key-value store |
US9239869B1 (en) | 2013-05-08 | 2016-01-19 | Ca, Inc. | Replication and synchronization for protecting NTFS deduplication volumes |
US9298396B2 (en) | 2013-12-04 | 2016-03-29 | International Business Machines Corporation | Performance improvements for a thin provisioning device |
US10860237B2 (en) | 2014-06-24 | 2020-12-08 | Oracle International Corporation | Storage integrated snapshot cloning for database |
US10346362B2 (en) | 2014-09-26 | 2019-07-09 | Oracle International Corporation | Sparse file access |
US9846642B2 (en) | 2014-10-21 | 2017-12-19 | Samsung Electronics Co., Ltd. | Efficient key collision handling |
US9575849B2 (en) | 2014-11-25 | 2017-02-21 | Sap Se | Synchronized backup and recovery of database systems |
US9864769B2 (en) | 2014-12-12 | 2018-01-09 | Pure Storage, Inc. | Storing data utilizing repeating pattern detection |
US9892160B2 (en) * | 2015-04-07 | 2018-02-13 | International Business Machines Corporation | Database statistics based on transaction state |
US10025822B2 (en) | 2015-05-29 | 2018-07-17 | Oracle International Corporation | Optimizing execution plans for in-memory-aware joins |
US10459916B2 (en) * | 2015-07-31 | 2019-10-29 | International Business Machines Corporation | Updating database statistics during query execution |
CN110622152B (zh) * | 2017-02-27 | 2021-04-13 | 分秒库公司 | 用于查询时间序列数据的可扩展数据库系统 |
WO2020033446A1 (en) | 2018-08-06 | 2020-02-13 | Oracle International Corporation | Techniques for maintaining statistics in a database system |
US11061902B2 (en) | 2018-10-18 | 2021-07-13 | Oracle International Corporation | Automated configuration parameter tuning for database performance |
WO2020198925A1 (en) * | 2019-03-29 | 2020-10-08 | Pivotal Software, Inc. | Predicted properties for database query planning |
US20210406717A1 (en) | 2020-06-29 | 2021-12-30 | Oracle International Corporation | Enabling efficient machine learning model inference using adaptive sampling for autonomous database services |
-
2019
- 2019-08-06 WO PCT/US2019/045361 patent/WO2020033446A1/en unknown
- 2019-08-06 EP EP19756288.7A patent/EP3834093A1/en active Pending
- 2019-08-06 CN CN201980061056.9A patent/CN112740195A/zh active Pending
- 2019-08-06 US US16/533,614 patent/US11468073B2/en active Active
-
2021
- 2021-09-23 US US17/483,326 patent/US20220012240A1/en active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101178727A (zh) * | 2006-11-08 | 2008-05-14 | 国际商业机器公司 | 用于搜索数据库的方法和系统 |
US20110022581A1 (en) * | 2009-07-27 | 2011-01-27 | Rama Krishna Korlapati | Derived statistics for query optimization |
CN103678459A (zh) * | 2012-09-14 | 2014-03-26 | 德商赛克公司 | 用于大潜在异质数据集统计在线分析的系统和/或方法 |
US20140095474A1 (en) * | 2012-09-28 | 2014-04-03 | Oracle International Corporation | Creating and using data that indicates misestimates of actual costs |
CN104798070A (zh) * | 2012-09-28 | 2015-07-22 | 甲骨文国际公司 | 活动跟踪、数据分类和数据库内归档的技术 |
CN103049556A (zh) * | 2012-12-28 | 2013-04-17 | 中国科学院深圳先进技术研究院 | 一种海量医疗数据的快速统计查询方法 |
CN108140048A (zh) * | 2015-10-22 | 2018-06-08 | 甲骨文国际公司 | 分层存储装置中的列式高速缓存 |
Also Published As
Publication number | Publication date |
---|---|
US11468073B2 (en) | 2022-10-11 |
US20220012240A1 (en) | 2022-01-13 |
EP3834093A1 (en) | 2021-06-16 |
US20200042522A1 (en) | 2020-02-06 |
WO2020033446A1 (en) | 2020-02-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112740195A (zh) | 数据库系统中维护统计的技术 | |
US10180946B2 (en) | Consistent execution of partial queries in hybrid DBMS | |
US11113282B2 (en) | Online optimizer statistics maintenance during load | |
JP7410181B2 (ja) | ハイブリッド・インデックス作成方法、システム、プログラム | |
CN105989194B (zh) | 表数据比较的方法和系统 | |
US10691722B2 (en) | Consistent query execution for big data analytics in a hybrid database | |
US10191932B2 (en) | Dependency-aware transaction batching for data replication | |
EP2901323B1 (en) | Policy driven data placement and information lifecycle management | |
US11475006B2 (en) | Query and change propagation scheduling for heterogeneous database systems | |
US10452629B2 (en) | Automatic maintenance of a set of indexes with different currency characteristics in a database management system | |
US8380702B2 (en) | Loading an index with minimal effect on availability of applications using the corresponding table | |
US10372726B2 (en) | Consistent query execution in hybrid DBMS | |
US10838933B2 (en) | Periodic performance optimization through heatmap based management of an in-memory area | |
US10169411B2 (en) | Forecasting query access plan obsolescence | |
US11340827B2 (en) | Method, device, and program product for managing storage space in storage system | |
AU2021244852B2 (en) | Offloading statistics collection | |
US8495009B2 (en) | Incorporating temporal aspects of data in a relational storage system | |
US10664309B2 (en) | Use of concurrent time bucket generations for scalable scheduling of operations in a computer system | |
WO2023009182A1 (en) | Chaining bloom filters to estimate the number of keys with low frequencies in a dataset | |
US11468099B2 (en) | Automatic creation and maintenance of zone maps | |
US20240152467A1 (en) | Systems and methods to generate a cache miss ratio curve where cache data has a time-to-live |
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 |