一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

数据库索引确定和验证的制作方法

2021-11-03 20:53:00 来源:中国专利 TAG:

数据库索引确定和验证


背景技术:

1.与具有较少最佳索引的数据库相比,具有适当索引集的数据库通常会带来数量级更好的性能和更低的资源利用率。选择正确的索引集可以取决于工作负载、架构和数据。因此,即使对于专家数据库管理员(dba)来说,选择正确的索引集也是具有挑战性的任务。能够标识和实现索引以改进查询性能是关系数据库管理系统(rdbms)的性能管理的重要附加值。这种索引标识在云数据库平台中可能更受期待,因为通常缺乏数据库性能调校(tuning)专业知识的应用开发人员可以在不使用dba的情况下供应数据库。另一挑战是针对为其应用的客户部署数百到数千个数据库的软件即服务(saas)供应方和云软件供应方(csv)。即使对于各个数据库实例具有不同的架构、查询和数据分布的专家dba来说,管理如此庞大的数据库池也是一项艰巨的任务。
附图说明
2.图1是根据各个示例的用于优化数据库的系统的框图。
3.图2是根据各个示例的用于验证数据库优化的系统的框图。
4.图3是根据各个示例的用于优化数据库的过程的流程图。
5.图4是可以结合本文所描述的技术而被使用的示例计算设备。
具体实施方式
6.当前的查询调校工具帮助dba仅针对指定的输入集标识适当的索引集。这些方法依赖于人为干预用于索引管理中的其他几个关键步骤。例如,dba可以负责几个重要的任务,诸如:(i)标识代表性的工作负载;(ii)在不影响生产实例的情况下分析数据库;(iii)实现索引改变;(iv)确保这些动作不会不利地影响查询性能;(v)随着工作负载的漂移和数据分布的改变,不断地调校数据库。这种人在环中(human

in

the

loop)的方法不能扩展到大量的数据库,例如数千、数百万。因此,一种完全自动化的数据库调校方法受到期待。
7.经由索引管理自动化调校数据库可以简化数据库的性能管理。自动化索引是性能调校的重要支柱,因为合适的索引集可能会导致数量级更好的性能。先前的系统向dba提供信息,该dba向系统提供输入。这种系统无法针对具有大量数据库的csv进行扩展。在各种示例中,自动索引服务分析数据库的工作负载,确定要优化的工作负载,标识要构建的适当索引集,实现索引,并确保实现索引之后改进查询执行成本。这种自动索引服务可以随着工作负载和数据分布的改变而不断调校数据库。
8.扩展索引优化的一个挑战是去除dba所提供的任何输入。通过人工输入,任何系统都无法扩展成要处理csv的所有数据库。例如,一些csv在全球拥有为数万客户托管数百万个数据库的多个区域。除了确保自动索引服务的正常健康和运行之外,各种示例还允许在工作负载和数据库改变时调试推荐的质量。
9.然而,在去除dba所提供的专业知识方面存在许多挑战。例如,各种示例在不了解应用语义或明确地被指定的工作负载的情况下生成高质量推荐。在先前的dba涉及调校的
系统中,dba拥有被调校的应用的上下文,这些上下文被用于标识有代表性的工作负载并且针对调校任务适当地设置必要的输入(例如,要推荐的索引类型,诸如存储预算或索引数目等任何约束)。在各种示例中,这些索引调校器的输入是在没有dba所使用的知识时而被标识的。
10.由于优化是自动地被确定和实现的,在各种示例中,优化是使用真实世界的数据库操作而不是估计成本而被验证的。例如,已知的索引推荐器可能依赖查询优化器的成本估计来确定新索引配置的好处。但是,成本估计可能与实际查询性能(例如,查询延迟)或执行成本(例如,查询的cpu时间)相比是不精确的。由于查询优化器的估计的已知的限制,在某些情况下,基于优化器的成本而估计会改进的索引在实现后会使查询执行成本(或性能)变得更糟。验证实现的优化可以用于标识和纠正这些场景。
11.各种示例描述了一种技术和系统设计,该技术和系统设计在容错服务中使用索引推荐软件,该服务可以在给定瞬间在数千个服务器和数据库上运行。此外,在出现多种故障时,控制逻辑可以管理这些长时间运行的调校会话的状态。为了调校数据库,代表性工作负载被获取,标识适当索引的关键输入,通过分析在数据库服务器上所聚合的先前查询执行。此外,一些示例指向用于索引推荐与查询优化器“同步”的技术,确保索引将在实现后以最小的开销被使用,在严格的资源约束下工作,并且确保对与调校过程同时运行的应用工作负载的影响最小。此外,如果调校会话正在影响或延迟应用的工作负载可能被检测,并且纠正措施可以被采取以最小化对工作负载的影响。为了测试优化,可以使用不同的推荐模型进行大规模实验,并且使用工作负载正在被重放的数据库的附加的副本来推动新的改进或推荐模式,其不会影响主副本上的生产工作负载。
12.图1是根据各个示例的用于优化数据库的系统100的框图。控制平面110可以控制被用于优化数据库120的自动索引服务。控制平面110可以处理数据库120的管理。控制平面110可以在一个或多个计算设备上被实现。数据库120可以是csv产品的一部分并且可以包括由最终用户所设置和管理的数据库。最终用户可以针对控制平面110提供许可以优化他们的数据库而无需与最终用户进行任何交互。在一个示例中,控制平面110可以使用诸如缺失索引的索引推荐器,诸如的缺失索引功能、数据库引擎调校顾问,诸如的数据库引擎调校顾问,或两者以优化数据库120。出于合规性原因,推荐器可以在与最终用户数据库协同地的节点上运行。在一些示例中,推荐器被修改以避免与工作负载的元数据争用。在数据库内对象被创建和销毁时,元数据争用可能会发生。避免争用有助于确保推荐器不会干扰最终用户对数据库的使用,因为推荐器可能会与最终用户的实时数据库交互。
13.模型推荐130可以由推荐器提供。模型推荐130可以包括要创建的索引、要丢弃的索引或这两者。例如,模型推荐130可以使用针对数据库的工作负载来标识会减少在数据库上运行工作负载的资源消耗的索引。在一个示例中,工作负载包括数据库操作,诸如选择、删除、更新等。资源消耗可能是执行查询的cpu时间、实际查询性能、读取的逻辑字节等。
14.控制平面110可以采用模型推荐130并且相应地更新数据库120。在示例中,数据库150存储对数据库的改变。最终用户可以使用门户160来访问被模型推荐130建议的改变。最终用户然后可以选择在数据库上实现哪些建议。控制平面110可以实现对数据库的改变,生成并且存储被包括在被选择的推荐中的索引。在另一示例中,模型推荐130由控制平面110
实现,而最终用户无需特别提供授权。在各种例子中,最终用户先前授权了模型的自动实现。
15.控制平面110可以监视数据库以确定何时实现模型推荐130。例如,控制平面110可以确定过去时间段内的数据库使用何时最小或低于资源阈值并且使用该时间来实现模型推荐130。
16.在数据库上实现模型推荐130之后,验证140服务监视数据库。在示例中,验证140服务确定在模型推荐130被实现之后的一段时间内数据库的资源消耗是否增加。如果资源消耗增加,则模型推荐130或模型推荐130的一部分可以被恢复。在一些示例中,验证140服务可以首先在实验数据库上运行模型推荐130。
17.图2是根据各个示例的用于验证数据库优化的系统200的框图。控制平面110可以接收对数据库120的所有数据库或数据库120的一些数目的数据库推荐。验证140服务可以通过在数据库120的子集上实现模型推荐130来验证模型推荐130,而不是一次实现模型推荐130的所有的模型推荐。例如,可以是实验控制210的一部分的验证140服务可以创建数据库204b的克隆作为克隆数据库206。在一个示例中,克隆数据库206是数据库204b的副本。数据库204b的模型推荐130可以在克隆数据库206上被实现。此外,针对数据库204b和数据库204c的模型推荐可以被存储用于以后实现。在一些示例中,控制平面110可以验证模型推荐130。
18.在示例中,应用服务器202b向数据库204b发送数据库操作。这些操作在数据库204b上被执行。此外,实验控制210然后可以对克隆数据库206执行相同的操作。应用服务器202a和应用服务器202c还向它们各自的数据库204a和204c发送数据库操作。实验控制210可以监控数据库204b和克隆数据库206所消耗的资源。实验控制210可以在一段时间内监视数据库204b和克隆数据库206,并且确定与数据库204b相比,具有模型推荐的克隆数据库206消耗的资源是否更少。如果消耗的资源更少,则可以实现针对数据库204a、204b和204c的模型推荐。如果消耗的资源没有更少,则实验控制210可以确定导致消耗的资源增加的一个或多个模型推荐。这些模型推荐可以从数据库204b的模型推荐中被去除并且也可以从克隆数据库206中被恢复。实验控制210然后可以继续监视克隆数据库206用于数据库204b的改进。实验控制210可以监控成百上千的克隆数据库以确保模型推荐导致更好的数据库性能。
19.图3是根据各个示例的用于优化数据库的过程300的流程图。优化数据库可能包括重新配置数据库所使用的索引。确定哪些索引应该被创建以及哪些索引应该被丢弃是一个具有挑战性的问题。先前的系统利用dba的专业知识来选择昂贵的数据库操作的工作负载。索引推荐器使用工作负载并且优化数据库以最小化工作负载的估计总成本。因此,工作负载选择是有效地优化数据库的重要步骤。
20.对于最终用户可能创建数百万个数据库的云服务提供方而言,自动地确定代表性工作负载的方法允许跨数百万个数据库的数据库优化过程规模。在一个示例中,针对给定数据库标识适当的索引集使用对已在数据库上执行的数据库操作的整体分析,诸如查询和更新。在310处,工作负载从针对数据库的、先前执行的数据库操作中被选择。工作负载将被用于优化数据库。因此,工作负载可以代表数据库实际上是如何被使用的,从而优化影响现实世界的性能。在各种示例中,工作负载覆盖被用于确定工作负载。例如,工作负载覆盖可
以是工作负载的数据库操作所消耗的资源占一段时间内在数据库上执行的所有数据库操作所消耗的总资源的百分比。高工作负载覆盖,(例如,大于75%、80%、90%等),意味着被调校器所分析的语句占针对数据库所消耗的资源的显著数量的比例。在各种示例中,查询存储的历史执行统计被用于计算工作负载覆盖。
21.在320处,工作负载的资源消耗被验证以代表先前执行的数据库操作。在示例中,这可以通过确定先前执行的数据库操作的总资源消耗和确定工作负载的总资源消耗而被完成。资源消耗然后可以被相互比较。例如,如果工作负载的资源消耗是某个时间段内所有先前执行的数据库操作的80%或更多,则该工作负载被认为具有代表性。在一个示例中,通过基于成本对数据库操作进行排序,工作负载被生成。数据库操作然后可以被添加到工作负载,直到工作负载消耗到至少资源阈值。不同类型的操作也可以被使用以确定工作负载是否具有代表性。例如,验证工作负载包括插入、更新、丢弃等还可以被做出。如果缺少任何类型的操作,则相应的操作可以从先前执行的操作中被找到,并且被添加到工作负载。
22.在330处,用于数据库的数据库优化操作被确定。数据库优化操作可能包括创建和丢弃索引。在一个示例中,优化操作可以通过使用缺失索引分析器而被找到。在一个示例中,优化器搜索用于查询的执行计划。查询谓语被分析以标识就与谓语相关的数据的访问成本而言的最佳索引。如果这些索引不存在,查询优化器将通过缺失索引功能暴露该信息。这些索引被累积在动态管理视图(dmv)集中。缺失的索引与dmv中的谓语相关联,例如,哪些列在等式谓语中被访问,哪些列在不等式谓语中被访问,以及哪些列在查询计划的上游中被需要。
23.在一些示例中,缺失索引功能仅提供关于针对查询的索引候选者的未经加工的信息。为了使用这些候选者以生成最终推荐,索引对整个工作负载的影响被分析。dmv也可能不是持久的。统计信息随时间累积,但可能会在服务器重启、故障转移、架构改变或主要的/次要的交换后被重置。在一些示例中,为了克服这些限制,dmv的定期快照可以被拍摄。最终的索引推荐可以使用dmv中的信息来生成数据库优化操作。但是,dmv信息可能需要被修改。例如,dmv可能不会指定索引中列的任何排序。为了说明这一点,非聚集的(次要的)索引候选者可以被定义为equality列,后跟inequality列作为键列,以及include列作为附加的包含列。如果每个类型中包含多个列,则类型内的排序是任意的。dmv可以提供统计信息,诸如触发索引推荐的查询数量,可以被改进的每个查询的平均优化器估计成本,以及优化器估计中索引的预期改进百分比。这些统计数据可以被用于确定索引的聚合影响。具有很少查询执行(例如,专门查询)或没有出现在几个最近的快照中(例如,由于显著的架构或工作负载改变)的候选者可能会从推荐中被过滤掉。
24.由于dmv可能会累积这些统计数据,因此真正有益的索引可能会随着时间的推移产生影响。然而,为了容忍dmv的重置,影响分数的这种正梯度的统计上鲁棒的度量可以被使用。例如,假设检验可以被制定来检验索引的增加影响。假设误差呈正态分布,索引影响随时间变化的斜率高于可配置阈值的t统计量可以被计算。通过对数十万个数据库的这些统计数据进行分析,对于高影响力索引来说,几个数据点就足以超过预定的确定性限制。此外,为了标识有利于多个查询的索引的因素,合并索引的因素可以被探索。在示例中,使用了仅执行索引的保守合并的简单规则被使用,例如,合并键列相同但包含列不同的候选。在确定优化操作的示例中,影响斜率高于阈值的具有最高影响的前k个索引可以被标识为要
针对数据库创建的索引。
25.在另一个示例中,优化操作可以通过使用数据库引擎调校顾问(dta)而被找到。在另一例子中,缺失索引分析器和dta的两者都被用于确定优化操作。dta是一种综合的物理设计工具,该物理设计工具在给定工作负载的情况下,找到使优化器估计的工作负载成本最小化的物理设计。dta的核心是基于成本的针对备选配置的搜索。针对工作负载中的每个查询,dta从针对查询找到最佳配置的候选者选择开始。来自所有查询的候选者被用于工作负载级枚举,输出最终推荐。dta可能会使用查询优化器的“假设”api来给其搜索过程中的假设配置估计成本。dta被设计为被由专家人工管理员调用,该管理员提供具有代表性的工作负载,设置适当的选项,然后分析推荐以确定要实现哪个推荐。为了利用dta进行自动索引,dta作为自动化服务被运行。dta的增强和设计改变包括能够以严格的资源和成本预算运行dta,并且对任何生产工作负载的影响最小;自动地获取具有代表性工作负载以进行调校;并且将dta作为服务运行。
26.在调校会话期间,dta可以连接到数据库以访问元数据、构建和读取采样统计信息,以及进行查询优化器调用。由于dta对服务器进行的调用数目,并且为了满足安全性和合规性要求,dta可以与数据库服务器的主要副本协同地运行。因此,dta可以与客户的工作负载同时运行。因此,dta可以以严格的资源预算运行,以确保dta对客户工作负载的影响最小。
27.dta至少可以通过两种方式影响客户的工作负载。dta在服务器上通过优化器调用、创建采样统计等所消耗的资源可能会影响客户的工作负载。例如,dta使用数据库的资源治理机制来限制dta调用所消耗的cpu、存储器和i/o。客户工作负载也可能受到由于创建和丢弃假设索引和采样统计而引起的锁和闩锁争用的影响。由于数据库锁调度器的先进先出特性,这种锁争用,尤其针对修改元数据,可以引起对用户工作负载的显著的影响。在各种示例中,允许请求具有较低优先级的锁定的低优先级锁定支持被使用,不会因用户的工作负载而阻止锁请求。在一个示例中,dta也被修改以减少dta所创建的采样统计的数目,而不会对推荐质量产生明显影响。为了进一步减少资源足迹,控制平面可以仅在分析数据库被需要时按需调用dta。
28.如上所述,dta使用被用于调校数据库的工作负载输入。在一个示例中,查询存储所捕获的过去执行统计和查询文本被用于构建工作负载。例如,在dta会话开始时,过去n小时的执行统计被使用来标识在持续时间或资源(例如,cpu时间)方面最昂贵的k个查询语句(或模板)。由于这种分析对于在查询存储中所累积千兆字节数据的许多查询可能是资源密集型的,因此n和k是基于数据库可用的资源量而被设置的。
29.标识要调校的数据库语句只是一个开始。在一些示例中,dta使用工作负载中的完整查询语句来估计不同假设索引配置的成本。虽然查询存储捕获查询文本,但查询文本可能不是完整的语句。例如,查询存储中的语句可能缺少变量,或者只有复杂条件语句的片段等。dta可能无法估计这种语句的成本。另一挑战来自无法单独被优化或“假设”api不被支持的语句。例如,在一批语句中,一条语句可以将查询的结果存入一个临时表,然后另一条语句可以引用该临时表。这种批次可能仅在执行期间被优化。这些限制限制了dta可以成功调校的语句集,通常会显著地影响dta的工作负载覆盖范围。
30.在各种示例中,一些增强被做出以克服这些限制。首先,数据库语句从其他源被扩
充。例如,如果语句是其定义在系统元数据中可用的存储过程或函数的一部分,则语句从元数据中被获取。其次,对于不完整的t

sql批处理,数据库服务器的查询计划高速缓存被用于来获取完整的批处理定义。此外,一些语句还被重写。例如,批量加载工具或api所使用的bulk insert语句可能未被优化。然而,这些语句可以被重写为可以被优化的等效insert语句,从而允许dta由于这些操作而为索引维护开销计算成本。此外,由于上述语句类型在执行过程中由数据库引擎被优化,如果这些语句可以从索引中受益,缺失索引特性可能会生成候选者。当生成缺失的索引候选者时,dta的搜索可以用这些缺失的索引候选者和优化器的成本估计而被增强。一旦dta完成对数据库的分析,详细报告就会被生成,报告指定dta分析哪些语句以及推荐中的哪些索引将影响哪个语句。该报告可以被用于向用户公开推荐细节。此外,该报告可以被用于计算工作负载覆盖,这提供了对dta推荐有效性的近似度量。
31.数据库的dta调校会话可能会运行几分钟到几小时,取决于工作负载、架构和可用资源的复杂性。在dta会话期间可能会出现多种类型的故障,无论是在数据库服务器、物理服务器上还是在dta内。对于csv,在给定的时刻可能有数千个数据库的dta会话。为了容忍故障并且大规模管理dta会话的状态,在专用于dta会话管理的控制平面中,微服务可以被使用。此外,dta会话状态可能随着数据库的状态而被增加。微服务可以标识何时调用给定数据库上的dta会话,跟踪dta会话的进度,并且确保会话达到成功完成或触发清除和可选重试的错误的终端状态。清除阶段会正确清除dta在调校和诸如临时文件等的其他调校会话特定状态期间所创建的临时对象(例如,假设索引和统计)。
32.上面讨论的两个顾问生成创建索引的推荐。向客户提供的推荐来自这些顾问中的一个顾问。有几个因素决定哪个顾问的推荐会被呈现,其中包括数据库的服务层(或slo)、两个顾问的工作负载覆盖、活动级别和资源消耗等。例如,来自具有最大资源消耗覆盖的顾问的推荐可能会被暴露。在另一示例中,来自顾问的两者的推荐被组合。推荐的组合可以基于对工作负载具有最大估计影响的索引。
33.随着工作负载、模式和数据分布发展以及新索引被创建,现有索引的好处可能会降低。识别并潜在地丢弃低影响索引以减少其维护开销和存储空间可能很有用。此外,数据库可能有多个重复索引,即具有相同键列(包括相同顺序)的索引,这些索引也是要被丢弃的潜在候选者。然而,丢弃索引会形成几个实际挑战。首先,用户通常拥有偶尔但重要的查询的索引,诸如以某种节奏报告,诸如如每天或每周。由于工作负载是被自动识别的,因此这种偶发事件可能不是工作负载的一部分,因此在确定索引的影响时在分析中被忽略。丢弃这种索引可能会引起这些偶尔的查询的速度显著地降低,由于其不频繁的性质,也很难在验证中被检测。其次,当用户手动地调校查询或强制执行计划时,查询可能会提示要使用的索引。删除丢弃这样一个暗示提示的索引会阻止查询执行,潜在地会破坏应用并引起严重的中断。第三,即使重复索引被检测,确定要丢弃哪个索引也可能是一个挑战。在许多情况下,保留其中任何一个都是可以接受的,而在其他一些情况下,特定的一个(或多个)是优选的。
34.在一个示例中,保守的方法被使用以标识具有最小回归风险的要丢弃的索引。来自数据库服务器的其他信息源可以被使用以标识低影响索引,而不是纯粹由工作负载驱动。例如,明显更长的时间段(通常为60天或更长)内的执行统计信息可以被使用。在一些示例中,丢弃索引的目标是减少维护开销,减少存储是另一个目标。来自数据库服务器的统
计,诸如索引被查询访问的频率,数据库被修改的数量等,以标识对查询无益但具有显著地维护开销的索引。查询提示和强制计划可以被用于标识索引以避免丢弃。模式和数据库元数据可以被分析以标识强制应用指定的约束的索引,以便不丢弃该索引。
35.在一些示例中,推荐可以基于最终用户的批准或自动地被应用。在其他示例中,推荐首先在实时数据库上实现之前被测试。当用户决定应用推荐或自动实现被启用时,控制平面可以协调索引实现(创建或丢弃)和后续验证以确保没有回归存在。取决于索引的大小,创建可能是资源密集型操作,其扫描数据(i/o密集型),对数据进行排序(cpu和存储器密集型),以及然后创建索引(日志密集型)。通过在数据库的低活动期间管理资源和调度大部分操作,创建索引的影响可以被减少。在一些示例中,为了进一步最小化并发工作负载的影响,只有在线操作被使用,即,可以在最少或没有阻止的情况下完成的操作。由于该创建操作可能会长时间运行,因此在某些示例中,控制平面中的微服务会跟踪索引实现的状态机。
36.验证的目标是检测创建或丢弃索引不会引起查询回归。如果回归被检测,则任何被丢弃的索引可以被重新创建并且被创建的索引可以被丢弃。在各种示例中,查询存储被用于分析索引改变被实现之前和之后的执行统计。在验证中所遭遇的一个主要挑战是由于在不受控制的生产设置中并发查询执行而引起的执行统计中的固有噪声。
37.为了克服这一挑战,逻辑执行指标,诸如消耗的cpu时间或逻辑字节读取可以被分析。这些指标代表计划质量,并且与诸如查询持续时间或物理i/o的物理指标相比,具有较小的方差。如果逻辑指标因索引而改进,则物理指标通常会改进。在某些示例中,只有在索引改变之前和之后已经执行,并且由于索引改变而引起计划改变的查询。也就是说,如果索引被创建,则创建后的新计划应该引用该索引,而如果索引被丢弃,则放弃前的旧计划应该引用该索引。此外,对于每个查询计划,查询存储可能会跟踪每个指标的执行数目、平均值和标准偏差。假设测量方差服从正态分布,则通过上述统计和welch t

test可以被使用以确定指标的改变的统计显著性(改进或回归),将索引改变后的状态与改变前的状态进行比较。
38.如果显著回归被检测,系统可以会自动地恢复改变,即如果被创建则丢弃索引,或者如果索引被丢弃则重新创建。该恢复触发器可以被设置为保守设置,其中消耗显著分数的数据库资源的任何语句的显着回归都可能触发恢复。在没有明确的应用知识或用户输入的情况下,该方法试图最大限度地减少中断,但也可能会降低其他语句可能受益于该索引的整体改进,由于该索引导致一个语句回归,该索引现在将被恢复。备选的设置测量受索引影响的所有报表的整体改进,并且仅在聚合级别的回归时恢复。如果对其他语句的改进抵消了回归,则该方法可能会显著地回归一个或多个语句。
39.在一些示例中,在实时数据实现之前,数据库优化改变可以被测试。在340处,克隆数据库可以从被用于生成数据优化操作的数据库中被创建。在一些示例中,实验可能类似于随机实验中所使用的a/b测试,但适用于数据库的上下文。
40.数据库可能在架构、查询、数据大小和数据分布方面表现出巨大的多样性。因此,为了试验多个索引推荐器并且根据推荐器的执行成本来衡量质量,相同的数据库集可以被使用来生成推荐、实现它们,并且比较实现前后的执行成本。在为应用流量提供服务的主要的数据库副本上执行此实验是有风险且不可接受的。即使使用次要的副本也是不可行的,
因为某些数据库引擎要求副本在物理上相同。
41.在一些示例中,克隆数据库被用于作为数据库的b实例。b实例是数据库的克隆,该克隆可能对外部客户不可见,该克隆从数据库的快照开始。b实例可能位于数据库引擎合规边界内的不同物理服务器上,具有独立的资源集和不同的安全凭证,也可能使用不同的数据库服务器二进制文件。
42.在350处,优化推荐在克隆数据库上被执行。在一些示例中,每个推荐器都有自己的b实例。在这些示例中,一个推荐器的优化推荐在其相应的克隆数据库上被执行。这允许将来自不同推荐器的推荐相互比较。
43.在360处,克隆数据库从原始数据库接收数据库操作。例如,克隆数据库可能会从主副本(在本上下文中被称为a实例)接收表格数据流(tds)的流量的分支,该分支在b实例上被重放。在370处,对数据库和克隆数据库执行数据库操作。b实例可以独立地执行tds流,允许重组操作等。b实例的失败不会影响a实例正常前进的能力。因此,b实例是尽力而为的克隆,并且潜在地与a实例不同。
44.创建b实例是实验中的一小步。另一步骤是为实验确定合适的候选数据库,生成推荐,实现它们,收集执行统计,生成比较有和没有推荐的状态的报告,并且执行特定实验所需的定制步骤。在一个示例中,推荐最多或改进潜力最大的数据库被选择作为候选数据库。在一个示例中,可以选择前3%、5%、10%等作为候选数据库进行测试。要将这些实验步骤扩展到不同地理区域的数百或数千个数据库,图2中的框架可以被使用。实验控制210确保实验的工作流步骤被执行。
45.克隆数据库的性能可以被与实时数据库的性能进行比较。在380处,与实时数据库的性能相比,克隆数据库的性能被验证为有改进。如上所述,性能可能基于特定语句或聚合语句。在一些示例中,一旦性能改进被验证,数据库推荐就可以在实时数据库上被实现。如果改进未被发现,则数据库推荐可以被忽略。在一些示例中,特定索引可以被标识为使一个或多个查询的性能回归。发生这种情况时,创建该索引的命令可能会从推荐中被去除。经修改的推荐然后可以被执行,以便回归查询的索引不被创建。
46.在某些情况下,客户可能希望对如何以及在何时索引推荐被实现进行更多的控制,例如,尽快实现推荐,仅在活动较少的时期实现,按预先指定的时间表实现,或仅在成功完成实验后实现。客户可能还希望控制资源如何在索引创建和并发事务之间被共享。在一些示例中,使客户的多个数据库受益的索引被实现。
47.图4是可以结合本文所描述的技术而被使用的示例计算设备。在备选的实施例中,计算设备400可以作为独立设备操作或者可以被连接(例如,联网)到其他计算设备。在联网部署中,计算设备400可以在服务器

客户端网络环境中以服务器通信设备、客户端通信设备或两者的能力操作。在一个示例中,计算设备400可以作为点对点(p2p)(或其他分布式)网络环境中的点对点计算设备。计算设备400可以是个人计算机(pc)、平板pc、机顶盒(stb)、个人数字助理(pda)、移动电话、智能电话、网络设备、网络路由器、交换机或网桥,或任何能够执行指令(顺序或其他方式)的计算设备,这些指令指定了该计算设备要采取的行动。此外,虽然仅示出了单个计算设备,但术语“计算设备”还应被视为包括单独或联合执行一组(或多组)指令以执行本文所讨论的方法的任何一个或多个指令的计算设备的任何集合,诸如云计算、软件即服务(saas)、其他计算机集群配置。计算设备可以实现ocr系统120、
对齐器130、标记器140、聚类器150、表格提取器310和表格组合器320,并且执行图5的方法。
48.计算设备400可以包括硬件处理器402(例如,中央处理单元(cpu)、图形处理单元(gpu)、硬件处理器核或其任何组合)、主存储器404和静态存储器406、其中一些或全部可以通过链路(例如,总线)408相互通信。计算设备400还可以包括显示单元410、输入设备412(例如,键盘)和用户界面(ui)导航设备414(例如,鼠标)。在示例中,显示单元410、输入设备412和ui导航设备414可以是触摸屏显示器。在示例中,输入设备412可以包括触摸屏、麦克风、相机(例如,全景或高分辨率相机)、物理键盘、轨迹球或其他输入设备。
49.计算设备400可以附加地包括存储设备(例如,驱动单元)416、信号生成设备418(例如,扬声器、投影设备或任何其他类型的信息输出设备)、网络接口设备420,以及一个或多个传感器421,诸如全球定位系统(gps)传感器、罗盘、加速度计、运动检测器或其他传感器。计算设备400可以包括输入/输出控制器428,诸如串行(例如,通用串行总线(usb)、并行或其他有线或无线(例如,红外(ir)、近场通信(nfc)等)),经由一个或多个输入/输出端口来通信或控制一个或多个外围设备(例如,打印机、读卡器等)的连接。
50.存储设备416可以包括计算可读(或机器可读)存储介质422,在其上存储一组或多组数据结构或指令424(例如,软件),这些数据结构或指令体现或利用本文所描述的任何一种或多种技术或功能。在一个示例中,软件的至少一部分可以包括操作系统和/或一个或多个应用(或app),其实现了本文所描述的一个或多个功能。指令424还可以在由计算设备400执行期间完全地或至少部分地驻留在主存储器404内、静态存储器406内和/或硬件处理器402内。在示例中,硬件处理器402、主存储器404、静态存储器406或存储设备416中的一个或任意组合可以构成计算设备(或机器)可读介质。
51.虽然计算机可读存储介质422被示为单个介质,但“计算机可读存储介质”或“机器可读存储介质”可以包括被配置为存储一个或多个指令424的单个介质或多个介质(例如,集中式或分布式数据库,和/或相关联的高速缓存和服务器)。
52.在一个示例中,计算机可读存储介质或机器可读存储介质可以包括能够存储、编码、或携带由计算设备400执行的指令,并且使计算设备400执行本公开的任何一种或多种技术,或者能够存储、编码或携带由这种指令使用或与这种指令相关联的数据结构。非限制性计算机可读存储介质示例可以包括固态存储器以及光和磁介质。计算机可读存储介质的具体示例可以包括:非易失性存储器,诸如半导体存储设备(例如,电可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom))和闪存设备;磁盘,诸如内置硬盘和可移动磁盘;磁光盘;随机存取存储器(ram);和光介质盘。计算机可读存储介质是非暂态的,因为存储介质不包含暂态传播信号。
53.指令424还可以使用传输介质经由网络接口设备420利用多种传输协议中的任何一种通过通信网络426而被传输或接收(例如,帧中继、互联网协议(ip)、传输控制协议(tcp)、用户数据报协议(udp)、超文本传输协议(http)等)。示例通信网络可以包括局域网(lan)、广域网(wan)、分组数据网络(例如,互联网)、移动电话网络(例如,蜂窝网络)、普通老式电话(pots)网络,以及无线数据网络(例如,被称为的电气和电子工程师协会(ieee)802.3标准系列,被称为的ieee 802.16标准系列),ieee 802.15.4标准系列、长期演进(lte)标准系列、通用移动电信系统(umts)标准系列、点对点(p2p)网络,等等。网络接口设备420可以使用传输协议来使用瞬时传播信号来传输数据。
54.在一个示例中,网络接口设备420可以包括一个或多个物理插孔(例如,以太网、同轴或电话插孔)或一个或多个天线以连接到通信网络426。在一个示例中,网络接口设备420可以包括一个或多个无线调制解调器,例如蓝牙调制解调器、wi

fi调制解调器或一个或多个调制解调器或在本文提及的任何通信标准下运行的收发器。在示例中,网络接口设备420可以包括多个天线以使用单输入多输出(simo)、多输入多输出(mimo)或多输入单输出(miso)技术中的至少一个进行无线通信。在一些示例中,网络接口设备420可以使用多用户mimo技术进行无线通信。在示例中,传输介质可以包括能够存储、编码或携带由计算设备400执行的指令的任何无形介质,并且包括数字或模拟通信信号或类似通信介质以促进这种软件的通信。
55.用于实现所公开的技术的任何计算机可执行指令以及在所公开的实施例的实现期间创建和使用的任何数据可以被存储在一个或多个计算机可读存储介质上。计算机可执行指令可以是例如专用软件应用程序或通过网络浏览器或其他软件应用程序访问或下载的软件应用程序的一部分(诸如远程计算应用)。例如,这种软件可以在单个本地计算机(例如,任何合适的商业可用的计算机)上或在网络环境中(例如,经由互联网、广域网、局域网、客户端

服务器网络(诸如云计算网络)或其他此类网络)使用一台或多台网络计算机而被执行。
56.示例
57.示例1是一种用于重配置数据库的方法,该方法包括:从对数据库的、先前执行的数据库操作中选择包括多个先前执行的数据库操作的工作负载;确定先前执行的数据库操作的总资源消耗;确定工作负载的总资源消耗;验证工作负载的总资源消耗大于先前执行的数据库操作的总资源消耗的预定阈值;使用工作负载确定用于数据库的优化操作;创建数据库的克隆数据库;对克隆数据库执行优化操作;接收针对数据库的数据库操作;对数据库和克隆数据库执行数据库操作;以及基于对数据库和克隆数据库的数据库操作的执行,验证克隆数据库的性能相比于数据库的性能被改进。
58.在示例2中,根据示例1的主题包括,基于验证克隆数据库的性能,对数据库执行优化操作。
59.在示例3中,根据示例1

2的主题包括,确定克隆数据库的性能对于优化操作中的至少一个优化操作没有被改进;从优化操作中去除优化操作中的至少一个优化操作;以及恢复对克隆数据库的优化操作中的至少一个优化操作。
60.在示例4中,根据示例1

3的主题包括,其中资源消耗包括中央处理单元时间。
61.在示例5中,根据示例4的主题包括,%。
62.在示例6中,根据示例1

5的主题包括,其中优化操作包括创建索引。
63.在示例7中,根据示例1

6的主题包括,重写先前执行的数据库操作中的一个先前执行的数据库优化操作,其中工作负载包括经重写的数据库操作。
64.在示例8中,根据示例7的主题包括,其中重写先前执行的数据库操作中的一个先前执行的数据库操作包括将批量插入操作重写为插入操作。
65.在示例9中,根据示例1

8的主题包括,修改先前执行的数据库操作中的一个先前执行的数据库操作,其中工作负载包括经修改的数据库操作。
66.在示例10中,根据示例9的主题包括,其中修改先前执行的数据库操作中的一个先
前执行的数据库操作包括:取回存储过程的元数据,其中先前执行的数据库操作中的一个先前执行的数据库操作使用存储过程;以及用元数据替换由先前执行的数据库操作中的一个先前执行的数据库操作使用的存储过程。
67.示例11是一种用于重配置数据库的系统,该系统包括:电子处理器,被配置为:从对数据库的、先前执行的数据库操作中选择包括多个先前执行的数据库操作的工作负载;确定先前执行的数据库操作的总资源消耗;确定工作负载的总资源消耗;验证工作负载的总资源消耗大于先前执行的数据库操作的总资源消耗的预定阈值;使用工作负载确定用于数据库的优化操作;创建数据库的克隆数据库;对克隆数据库执行优化操作;接收针对数据库的数据库操作;对数据库和克隆数据库执行数据库操作;以及基于对数据库和克隆数据库的数据库操作的执行,验证克隆数据库的性能相比于数据库的性能被改进。
68.在示例12中,根据示例11的主题包括,其中电子处理器还被配置为:基于验证克隆数据库的性能,对数据库执行优化操作。
69.在示例13中,根据示例11

12的主题包括,其中电子处理器还被配置为:确定克隆数据库的性能对于优化操作中的至少一个优化操作没有被改进;从优化操作中去除优化操作中的至少一个优化操作;以及恢复对克隆数据库的优化操作中的至少一个优化操作。
70.在示例14中,根据示例11

13的主题包括,其中电子处理器还被配置为:其中资源消耗包括中央处理单元时间。
71.在示例15中,根据示例14的主题包括,%。
72.在示例16中,根据示例11

15的主题包括,其中优化操作包括创建索引。
73.在示例17中,根据示例11

16的主题包括,其中电子处理器还被配置为:重写先前执行的数据库操作中的一个先前执行的数据库操作,其中工作负载包括经重写的数据库操作。
74.示例18是一种存储用于数据库重新配置的计算机可执行指令的非暂态计算机可读存储介质,所存储的指令包括:从对数据库的、先前执行的数据库操作中选择包括多个先前执行的数据库操作的工作负载的指令;确定先前执行的数据库操作的总资源消耗的指令;确定工作负载的总资源消耗的指令;验证工作负载的总资源消耗大于先前执行的数据库操作的总资源消耗的预定阈值的指令;使用工作负载确定用于数据库的优化操作的指令;创建数据库的克隆数据库的指令;对克隆数据库执行优化操作的指令;接收针对数据库的数据库操作的指令;对数据库和克隆数据库执行数据库操作的指令;以及基于对数据库和克隆数据库的数据库操作的执行,验证克隆数据库的性能相比于数据库的性能被改进的指令。
75.在示例19中,根据示例18的主题包括,其中指令还包括基于验证克隆数据库的性能,对数据库执行优化操作的指令。
76.在示例20中,根据示例18

19的主题包括,其中指令还包括:确定克隆数据库的性能对于优化操作中的至少一个优化操作没有被改进的指令;从优化操作中去除优化操作中的至少一个优化操作的指令;以及恢复对克隆数据库的优化操作中的至少一个优化操作的指令。
77.在示例21中,根据示例1

20的主题包括,其中优化操作包括丢弃索引。
78.示例22是包括指令的至少一种机器可读介质,当由处理电路执行时,指令引起处
理电路执行操作以实现示例1

21中的任一项。
79.示例23是一种装置,包括用于实现示例1

21中任一项的部件。
80.示例24是实现示例1

21中任一项的系统。
81.示例25是实现示例1

21中任一项的方法。
82.以上描述旨在是说明性的而非限制性的。例如,上述示例(或其一个或多个方面)可以被与其他示例组合使用。其他实施例可以被使用,诸如本领域的普通技术人员在阅读以上描述之后。此外,所附权利要求特此并入具体实施方式中,权利要求本身作为单独的实施例存在。在本文所公开的实施例的范围将参考所附权利要求以及这些权利要求所赋予的等效物的完整范围而被确定。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献