CN107820613A - 数据库索引自动推荐和创建 - Google Patents
数据库索引自动推荐和创建 Download PDFInfo
- Publication number
- CN107820613A CN107820613A CN201680037747.1A CN201680037747A CN107820613A CN 107820613 A CN107820613 A CN 107820613A CN 201680037747 A CN201680037747 A CN 201680037747A CN 107820613 A CN107820613 A CN 107820613A
- Authority
- CN
- China
- Prior art keywords
- index
- database
- module
- task
- data
- 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
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/2453—Query optimisation
-
- 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/21—Design, administration or maintenance of databases
- G06F16/217—Database tuning
-
- 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/2228—Indexing structures
-
- 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/2228—Indexing structures
- G06F16/2272—Management thereof
-
- 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/2282—Tablespace storage structures; Management thereof
-
- 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/2455—Query execution
- G06F16/24564—Applying rules; Deductive queries
- G06F16/24565—Triggers; Constraints
Abstract
一种系统,该系统自动制定用于在数据库实体上创建索引的推荐或建议,这将提高针对以如下数据库实体的那些查询的数据库和/或数据库集合的总体查询性能,针对该数据库实体的索引创建被推荐。收集模块收集由数据库或数据库集合自动生成的历史数据的至少一部分。索引推荐模块基于对总体查询性能的估计最大影响,使用所收集的历史数据来生成推荐索引任务。然后,索引创建模块发起所生成的一个或多个推荐索引任务的集合中的索引任务,从而在至少一个对应数据库实体上创建至少一个对应索引,从而提高数据库或数据库集合上的总体查询性能。
Description
背景技术
计算系统和相关联的网络已经彻底改变了人类工作、娱乐和交流的方式。计算系统在某种程度上几乎影响了我们生活的每个方面。网络的扩散使得计算系统能够共享数据和通信,极大地增加了信息访问。因此,当今时代通常被称为“信息时代”。
数据库允许将某个次序强加于可获得的大量信息。取代手动扫描所有可获得的数据、直至找到感兴趣的数据,可以向数据库发出查询,这允许仅检索查询的结果。为了允许在一个或多个数据库的一个或多个数据库实体(诸如表、视图等)上有效地处理查询,通常在一列或多列上索引这些数据库实体。索引基本上告知了在哪里能够找到具有特定参数值的数据。然而,大量的参数经常被表示在数据库实体和/或大量可能的数据库实体内。因此,对所有数据库实体的所有列和值进行索引变成不可行的任务。
为了提高数据库的性能,通常“调节”数据库。调节数据库涉及调整数据库的各种配置和结构,使得数据库能够更有效地对提交给数据库的查询进行响应。这样的调节的一个方面将涉及在特定数据库实体上的特定列上创建索引。
本文中要求保护的主题不限于解决任何缺点或仅在诸如上述环境中操作的实施例。相反,提供背景技术部分仅为了说明可以实践本文中描述的一些实施例的一个示例性技术领域。
发明内容
本文中描述的至少一些实施例涉及一种系统,该系统自动制定用于在数据库实体上创建索引的推荐或建议,这针对以新近被索引的数据库实体为目标的那些查询,将提高一个或多个(并且可能很多)数据库的集合上的总体查询性能。该系统包括收集模块,该收集模块被配置为收集由数据库集合自动生成的历史数据的至少一部分。索引推荐模块被配置为基于对数据库集合的共同性能的估计最大影响、使用由收集模块收集的历史数据来生成一个或多个推荐索引任务的集合。每个推荐任务用于索引数据库集合的至少一个数据库实体。
索引创建模块被配置为此后选择和发起所生成的一个或多个推荐索引任务的集合中的索引任务,从而在至少一个对应数据库实体上创建至少一个对应索引,从而针对以新近被索引的数据库实体为目标的查询,提高数据库集合上的总体查询性能。
因此,本文中描述了基本上自动调节大型数据库集合的有效机制,无需大量用户时间。这样的调节经由系统推荐最有可能提高数据库集合的整体性能的索引任务来实现。最终的结果是通过简化的用户界面来极大提高数据库集合的性能,从而可以实现在用户自己必须调查每个数据库以寻找可能的调节机会的情况下实际不可能达到的结果。
发明内容无意标识所要求保护的主题的关键特征或重要特征,也无意用于辅助确定所要求保护的主题的范围。
附图说明
为了描述能够获得上述以及其他优点和特征的方式,将通过参考附图来呈现各种实施例的更具体描述。应当理解,这些附图仅描绘了示例实施例,并且因此不被认为是对本发明的范围的限制,将通过使用附图、利用附加特征和细节来描述和解释这些实施例,其中:
图1示意性示出其中可以采用本文中描述的一些实施例的计算系统;
图2示出其中可以在多个数据库的上下文中进行索引建议的自动制定并且包括对数据库集合进行操作的调节部分的系统;
图3示出由图2的数据库集合生成的附加信息,该附加信息可用于图2的调节部分并且包括缺失索引数据、查询性能数据和私有数据;
图4示出图2的调节部分用于生成和向用户显示一个或多个推荐调节任务的集合的示例操作的流程图;
图5示意性示出了推荐索引任务的示例集合;
图6示意性示出表示图2的调节部分的具体示例的调节部分;
图7示意性示出推荐索引任务的示例数据结构,该数据结构可以表示图5的推荐索引任务的集合中的任何索引任务;
图8示出图2的调节部分用于验证所创建的索引的示例操作的流程图;以及
图9示出用于验证索引的创建的方法的流程图。
具体实施方式
本文中描述的至少一些实施例涉及一种系统,该系统自动制定用于在数据库实体上创建索引的推荐或建议,这针对以新近被索引的数据库实体为目标的那些查询,将提高一个或多个(并且可能很多)数据库的集合上的总体查询性能。该系统包括收集模块,该收集模块被配置为收集由数据库集合自动生成的历史数据的至少一部分。索引推荐模块被配置为基于对数据库集合的共同性能的估计最大影响、使用由收集模块收集的历史数据来生成一个或多个推荐索引任务的集合。每个推荐任务用于索引数据库集合的至少一个数据库实体。
索引创建模块被配置为此后选择和发起所生成的一个或多个推荐索引任务的集合中的索引任务,从而在至少一个对应数据库实体上创建至少一个对应索引,从而针对以新近被索引的数据库实体为目标的查询,提高数据库集合上的总体查询性能。
因此,本文中描述了基本上自动调节大型数据库集合的有效机制,无需大量用户时间。这样的调节经由系统推荐最有可能提高数据库集合的整体性能的索引任务来实现。最终的结果是通过简化的用户界面来极大提高数据库集合的性能,从而可以实现在用户自己必须调查每个数据库以寻找可能的调节机会的情况下实际不可能达到的结果。将参考图1来描述计算系统的一些介绍性讨论。然后,将参考随后的附图来描述索引推荐的自动制定、这样的索引的创建及其验证。
计算系统现在越来越多地采取各种各样的形式。例如,计算系统可以是手持设备、家用电器、膝上型计算机、台式计算机、大型机、分布式计算系统、数据中心、甚至是传统上不被认为是计算系统的设备,诸如可穿戴设备(例如,眼镜)。在本说明书和权利要求书中,术语“计算系统”被广义地定义为包括如下任何设备或系统(或其组合):该设备或系统包括至少一个物理和有形处理器以及能够在其上具有计算机可执行指令的物理和有形存储器,计算机可执行指令可以由处理器执行以由此将该计算系统提供用于特定目的。存储器可以采取任何形式并且可以取决于计算系统的性质和形式。计算系统可以分布在网络环境中,并且可以包括多个组成计算系统。
如图1所示,在最基本的配置中,计算系统100通常包括至少一个硬件处理单元102和存储器104。存储器104可以是物理系统存储器,这样的存储器可以是易失性的、非易失性的、或两者的某种组合。术语“存储器”在本文中还可以用于指代非易失性、大容量存储装置,诸如物理存储介质。如果计算系统是分布式的,则处理、存储器和/或存储能力也可以是分布式的。如本文中所使用的,术语“可执行模块”或“可执行部件”能够指代可以在计算系统上被执行的软件对象、例程或方法。本文中描述的不同部件、模块、引擎和服务可以被实现为在计算系统上执行的对象或过程(例如,作为单独的线程)。通过在计算系统上运行这样的对象和过程,计算系统相当于用于由这些对象完成的特定目的的专用计算机。
在下文描述中,参考由一个或多个计算系统执行的动作来描述实施例。如果这样的动作以软件来实现,则(执行动作的相关联的计算系统的)一个或多个处理器响应于已经执行计算机可执行指令而指导计算系统的操作,从而将计算系统转换和配置用于与在没有这样的指导的情况下相比获得更专用的目的。例如,这样的计算机可执行指令可以被体现在形成计算机程序产品的一个或多个计算机可读介质上。这样的操作的示例涉及数据的操纵。计算机可执行指令(和被操纵的数据)可以被存储在计算系统100的存储器104中。计算系统100还可以包含通信信道108,通信信道108允许计算系统100通过例如网络110而与其他计算系统通信。计算系统100还包括显示器112,显示器112可以用于向用户显示视觉表示。
本文中描述的实施例可以包括或利用专用或通用计算系统,这样的计算系统包括计算机硬件,诸如举例而言,一个或多个处理器和系统存储器,如以下更详细地讨论的。本文中描述的实施例还包括用于携带或存储计算机可执行指令和/或数据结构的物理和其他计算机可读介质。这样的计算机可读介质可以是能够由通用或专用计算系统访问的任何可用介质。存储计算机可执行指令的计算机可读介质是物理存储介质。携带计算机可执行指令的计算机可读介质是传输介质。因此,作为示例而非限制,本发明的实施例可以包括至少两种完全不同的计算机可读介质:存储介质和传输介质。
计算机可读存储介质包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储装置、磁盘存储装置或其他磁存储设备、或者任何其他物理和有形的存储介质,这些存储介质能够用于以计算机可执行指令或数据结构的形式存储期望的程序代码装置并且能够由通用或专用计算系统访问。
“网络”被定义为能够在计算系统和/或模块和/或其他电子设备之间传输电子数据的一个或多个数据链路。当通过网络或另一通信连接(硬连线、无线连接、或硬连线或无线连接的组合)将信息传输或提供给计算系统时,该计算系统将这些连接正确地视为传输介质。传输介质可以包括可以用于以计算机可执行指令或数据结构的形式携带期望的程序代码装置并且可以由通用或专用计算系统访问的网络和/或数据链路。上述的组合也应当被包括在计算机可读介质的范围内。
此外,在到达各种计算系统部件时,计算机可执行指令或数据结构形式的程序代码装置可以从传输介质自动传输到存储介质(反之亦然)。例如,通过网络或数据链路接收的计算机可执行指令或数据结构可以被缓存在网络接口模块(例如,“NIC”)内的RAM中,并且然后最终被传送到计算系统RAM和/或计算系统处的较不易失的存储介质。因此,应当理解,存储介质可以被包括在也(甚至主要)利用传输介质的计算系统部件中。
计算机可执行指令例如包括当在处理器处执行时使通用计算系统、专用计算系统或专用处理设备执行特定功能或功能组的指令和数据。计算机可执行指令例如可以是在处理器直接执行之前进行一些转译(例如,编译)的二进制文件或者甚至是指令,诸如汇编语言之类的中间格式指令或者甚至是源代码。虽然已经用特定于结构特征和/或方法动作的语言对主题进行描述,但应当理解,在所附权利要求中限定的主题不一定受限于以上描述的特征或动作。相反,所描述的特征和动作被公开为实现权利要求的示例形式。
本领域技术人员将认识到,本发明可以在具有很多类型的计算系统配置的网络计算环境中被实践,包括个人计算机、台式计算机、膝上型计算机、消息处理器、手持设备、多处理器系统、基于微处理器的或可编程的消费者电子器件、网络PC、小型计算机、大型计算机、移动电话、PDA、寻呼机、路由器、交换机、数据中心、可穿戴设备(诸如眼镜、手表等)等。本发明还可以在分布式系统环境中实践,在分布式系统环境中,通过网络(通过硬连线数据链路、无线数据链路、或通过硬连线和无线数据链路的组合)进行链接的本地和远程计算系统都执行任务。在分布式系统环境中,程序模块可以位于本地和远程存储器存储设备两者中。
图2示出了其中可以在多个数据库的上下文中进行索引建议的自动制定的系统200。系统200包括数据库集合201。可以提交(如箭头202所示)以任何、一些或全部数据库的一个或多个数据库实体的查询,并且返回对应查询结果(如箭头203所示)。在本说明书和权利要求中,“数据库”被广义地定义为可以被查询以获得对查询的响应的任何数据存储库。数据库本身可以包含结构化数据、非结构化数据、半结构化数据或前述的组合。
除了查询(由箭头202表示)及其响应(由箭头203表示)之外,每个数据库生成附加的历史数据(如箭头204所示)。图3示出了这样的历史数据300,并且包括缺失索引数据310、查询性能数据320和私有数据330。这样的信息甚至可以实时地收集,从而使得信息在被生成时就被收集。当然,历史数据300还可以包括由省略号340表示的其他信息。这样的历史数据300可以按数据库或按数据库实体来生成。然而,来自所有数据库的这样的历史数据的集合在图2中由箭头204示意性表示。
每个数据库包括多个且可能很多的数据库实体,诸如表、视图等。每个数据库实体跟踪它在其上被索引的参数。数据库实体可以在参数上被索引,使得可以快速找到该参数的匹配值,无论这对查询的最终结果还是中间结果有用。在传统数据库中,参数对应于数据库实体的列,并且因此数据库实体的传统索引按列进行索引。然而,本文中描述的原理不限于如何索引数据库实体的参数。
在一个示例中,针对每个数据库引擎实例,存在一个系统视图,并且该系统视图保持跟踪它在其上被索引的参数。如果接收到以该数据库实体为目标的查询,并且该查询是对照针对该数据库实体而被索引的特定参数,则可以使用参数索引来实现响应,而不需要完全扫描整个数据库实体。然而,如果接收到使得查询引擎查找缺失的索引(即,缺失索引)的查询,则数据库实体(例如,对应于每个数据库引擎的系统视图)跟踪该缺失索引,计算如何有多少查询已导致该缺失索引的触发,并且甚至估计在提供该缺失索引(假设索引)的情况下可以实现多少性能增益。这在本文中被统称为“缺失索引”数据310。
仅作为示例,缺失索引数据310包括标识信息311、计数信息312和影响估计信息313、以及由省略号314表示的可能的其他信息。作为示例,缺失索引数据310在SQL Server实例的情况可以包括:sys.dm_db_missing_index_group_stats、sys.dm_db_missing_index_groups和sys.dm_db_missing_index_details。
标识信息311表示由于至少一个在先查询而被触发的缺失索引的标识。计数信息312表示以每个缺失索引为目标的查询的频率或次数。例如,对于给定的缺失索引,触发信息可以包括该缺失索引作为目标的平均频率、该缺失索引已经成为目标的次数(绝对值和/或在给定时间间隔内)等。影响估计信息313表示假设索引(例如,缺失索引)将对触发假设索引的查询所具有的估计影响。
查询性能数据320可以包括与在查询的处理中所测量的性能有关的信息。这样的性能信息通常例如可以包括针对查询的以下度量(或者可能按查询类型细分):用于处理查询的处理器周期数、用于处理查询的每种类型的资源量等。例如,这样的信息可以包括针对查询的群组统计(例如,平均值、均值、中值、扩展等)。这样的群组统计可以在一段时间(诸如也许是给定时间间隔(例如,以小时为单位、以天为单位等))上被分组。因此,查询性能数据320通常可以包括查询的性能的时间测量或查询的类型。
数据库集合201被示出为包括六个数据库201A至201F。然而,省略号201G表示本文中描述的原理可以适用于从少至两个数据库到无限数目的数据库的多个数据库的任何集合201。例如,集合201可以是云计算环境,诸如公共云、私有云、或者包括公共云和私有云(和/或本地环境)的混合云,并且可能包括数百个、数千个甚至数百万个数据库或更多。
在本说明书和以下权利要求书中,“云计算”被定义为用于实现对可配置计算资源(例如,网络、服务器、存储装置、应用和服务)的共享池的按需网络访问的模型。“云计算”的定义不限于在被适当部署时可以从这样的模型获得的多个其他优点中的任一个。
例如,当前云计算在市场被上采用,以便提供对可配置计算资源的共享池的无处不在且便利的按需访问。此外,可配置计算资源的共享池可以通过虚拟化而被快速供应,并且在低管理付出或服务供应商交互的情况下被发布,并且然后被相应缩放。
云计算模型可以由诸如按需自助服务、广泛网络访问、资源池化、快速弹性、测量的服务等各种特性组成。云计算模型还可以以各种服务模型的形式出现,诸如例如软件即服务(“SaaS”)、平台即服务(“PaaS”)和基础设施即服务(“IaaS”)。云计算模型还可以使用不同的部署模型来部署,诸如私有云、社区云、公共云、混合云等。在本说明书和权利要求书中,“云计算环境”是采用云计算的环境。
系统200还包括用于调节数据库集合201从而提高数据库集合的性能的调节部分210。作为示例,调节部分210推荐(或建议)可能的缺失索引,如果创建了对应索引,则这些缺失索引可以总体上提高数据库集合201上的查询性能,以用于对已新近被索引的数据库实体为目标的未来查询。注意,“总体上”提高的查询性能并不表示以新近索引的数据库实体为目标的每个查询的性能将由于所创建的索引而得到提高。事实上,索引可能会导致一些这样的查询与在没有索引的情况下相比更差地执行。但是,总体上提高的查询性能表示,查询提高趋于更多,即针对以新近被索引的数据库实体为目标的查询,由于所创建的索引而存在查询回归。
将参考图4的方法400和图8的方法800来描述调节部分210的操作。而且,图6的调节部分600表示图2的调节部分210的具体示例。因此,将参考图2至图9来描述图2的调节部分210及其操作和示例结构。
调节部分210包括收集模块211。图4示出用于向用户呈现调节选项的方法400的流程图。收集模块211被配置为将历史数据(例如,图3的历史数据300)的至少一部分收集到推荐存储库221中(动作401)。推荐存储库221可以是任何类型的存储库,诸如单个数据库、或数据库、非数据库存储装置的组合、或上述的任何组合。在一个实施例中,推荐存储库221可以是单个数据库。
收集模块211被配置为应用隐私策略,使得历史信息300内由数据库生成的私有信息(例如,图3的私有信息330)不被收集模块211收集。因此,到数据库集合210中的那些查询(例如,查询202)的隐私被保留。例如,所收集的信息可以包括与查询相关的元数据,而不包括查询内本身通常包括的私有数据。这样的私有数据是要被保存在与客户相关联的合规边界内的客户敏感数据。
图6示出了表示图2的系统200的调节部分210的示例的调节部分600。云数据库服务611收集由数据库生成的所有历史数据(由图2中的箭头204所示),并且将这样的信息放置到遥测数据库612中(如箭头601所示)。此后,虚拟机613利用由证书615提供适当的认证使用遥测提取器模块614来访问集中式遥测数据库612(如箭头602所示)。遥测提取器614选择哪个历史数据之后提供(如箭头603所示)给索引推荐数据库621。因此,图3的云数据库服务611、集中式遥测数据库612和虚拟机613是图2的收集模块211的示例。此外,图6的索引推荐数据库621是图2的推荐数据库221的示例。例如,在云计算环境中,每个节点可以具有专门的过程,该过程周期性地收集来自该节点上的指定视图的数据并且将这些数据推送到云数据库服务的那个对应区域中的所有遥测的集中位置。数据从所有区域遥测位置被自动提取到单个单独的数据库。因此,这个集中式遥测数据库612包含缺失索引数据和对跨整个云数据库服务的所有数据库的推荐。
调节部分210还包括索引推荐模块230。索引推荐模块230被配置为使用由收集模块收集的历史数据来生成(动作402)一个或多个推荐索引任务的集合。推荐索引任务的集合可以基于对于数据库集合的总体查询性能的估计最大影响。
图6示出了索引推荐模块604的形式的索引推荐模块230的示例,索引推荐模块604对索引推荐数据库621内所收集的历史数据进行操作并且向缺失索引建议数据库630提供(如箭头605所示)推荐索引任务的集合。
图5示意性示出了推荐索引任务的示例集合500。在该示例中,集合包括由任务501至505表示的五个索引任务,尽管省略号506表示集合500内可以包括任何数目的索引任务。
图7示意性示出了示例性的推荐索引任务700,其可以表示图5的推荐索引任务的集合500中的索引任务501至505中的任一个。示例性的推荐索引任务700包括缺失索引标识符字段701、标识具有缺失索引的对应数据库实体的对应数据库实体标识符字段702、可能还包括在该对应数据库实体上创建该缺失索引的估计影响字段703、以及可能包括其他字段704。在一些实施例中,推荐索引任务可以基于对数据库集合上的共同性能的估计最大影响来排序。例如,任务501可能具有所估计的对共同性能的最高影响。
现在将描述如何计算对数据库集合的总体查询性能的影响的示例。假设每个缺失索引由三项数据来标识:相等列、不等列和包含列。它们分别表示用于以下各项的列:相等比较、不等式/范围扫描和通过SELECT语句的投影。所收集的查询性能信息可以包括1)UserSeeks,UserScans——这是触发缺失索引推荐的查询执行次数;2)AvgUserCost——可以提高的每个查询的平均成本(由优化器估计);以及3)AvgUserlmpact——在0到100之间的值,其估计查询可以被索引提高的量(以优化器为单位,平均成本的百分比)。在这种情况下,创建索引的影响(IndexAdvantage)可以根据以下公式来计算:
IndexAdvantage=(UserSeeks+UserScans)·AvgUserCost·AvgUserlmpact
索引推荐模块230还可以被配置为针对在所收集的缺失索引数据中标识出的至少一些缺失索引中的每一个,对索引任务进行过滤。例如,推荐可能太弱(IndexAdvantage太低),或者不可靠(例如,对于不同的计算经常改变),或者太陈旧。对于具有多个数据点的推荐,可以使用随时间展示IndexAdvantage的图来过滤出相关推荐。图的陡峭正斜率可以被考虑为对推荐进行加强。索引推荐模块230还可以被配置为在一些情况中合并一个或多个推荐索引任务的集合:合并集合能够在单个索引任务中被满足。
系统200还包括索引控制模块240,该索引控制模块240向用户(诸如数据库集合管理员(例如,云管理员))显示推荐索引任务的集合(动作403)。例如,在图6中,索引控制模块240在服务前端640内,该服务前端640与用户对接(如箭头606所示)。索引控制模块240还允许用户选择由索引推荐模块提供的推荐索引任务,并且触发创建对应索引。例如,在图6中,箭头606可以表示显示和选择过程。
系统200还包括索引创建模块250。索引创建模块250通过发起在至少一个对应数据库上创建至少一个对应索引来响应于用户对所生成的一个或多个推荐索引任务的集合中的索引任务的选择。图8示出了用于创建先前缺失索引从而提高对应数据库上的查询效率并且进一步提高共同的多个数据库的性能的方法800的流程图。一旦检测到用户已经选择索引任务(动作801),就触发方法800,由此索引创建模块通过发起在至少一个对应数据库上创建至少一个对应索引来进行响应。这导致对应数据库中的对应索引被创建(动作802),如图2中的箭头251进一步所示。也就是说,在一些实施例中,用户根本不需要参与。相应地,在图4中,索引推荐模块不是在动作403中显示推荐索引任务,而是简单地输出推荐索引任务。然后,作为图8中的动作801的部分,另一计算模块(而不是用户)可以选择适当的推荐索引任务。因此,在一些实施例中,图4的方法400可能直接导致图8的方法800。
例如,在用户选择的情况下,参考图6,用户(被示出为“客户”)(或计算模块)可以选择使用服务前端640显示的推荐索引任务之一,引起触发虚拟机650进行动作的控制。该触发在图6中由箭头607A、607B和608表示。虚拟机650包括自动索引创建器651,该自动索引创建器651使用(如箭头609所示)云数据库服务611来为对应数据库创建对应索引。为了安全认证的目的,虚拟机650还具有证书652。
虽然验证不是本文中描述的实施例的组成部分,但是现在将描述示例验证过程。该系统还包括验证模块260,验证模块260对由收集模块收集的附加信息的选定部分进行操作,从而针对以相应的新近索引的数据库实体为目标的查询,验证(动作803)由索引创建模块创建的索引引起的数据库集合上的总体提高的查询性能。在一些实施例中,所收集的用于验证的信息是查询性能数据320。该信息可以与索引验证数据库222一起存在。
参考图6,遥测数据库612还包括索引验证元数据(如箭头691所示),该索引验证元数据也经由遥测提取器614被提供(如箭头602和692所示)给索引验证数据库622。因此,图6的索引影响验证数据库622是图2的索引验证数据库222的一个示例。此外,图6中的箭头693表示索引影响验证模块是图2的验证模块260的一个示例。
图9示出了用于验证索引的创建的方法900的流程图。首先,验证模块260确定要验证索引的创建(动作901)。(动作901)。例如,在图2中,索引创建模块250可以向验证模块260发信号通知索引创建即将发生。在图6中,这由自动索引创建器651发信号通知(如箭头694所示)索引影响验证模型693来表示。
验证模块260然后确定验证数据是否已经被收集(判定框902)。如果是(判定框902中的“是”),则验证数据已经存在,这些验证数据可以被评估为创建索引之前的时期的基准。相应地,可以创建索引(动作904)。如果尚未收集索引创建之前的时期的验证数据(判定框902中的“否”),则在创建索引(动作904)之前收集验证数据(动作903)。
在已经收集验证数据(判定框902中的“是”)的情况下,验证数据可以随着验证数据的生成而持续地被收集,旧的验证数据可能被丢弃。这种场景是有帮助的,因为可以立即创建索引,但是缺点在于:不管索引是否将被创建,都不得不花费处理、网络和存储资源并且因此这些资源可能永远不会被使用。但是,如果经常在数据库集合上创建索引,则这种场景可以是有帮助的,从而增加了用这些资源帮助验证索引的可能性。在延迟验证数据的收集(判定框902中的“否”)、直到确定(动作901)索引将被创建的情况下,存在只有在需要验证索引创建时才利用处理、存储和网络资源的优点。但是,缺点是在索引创建之前会有一些延迟。
一旦索引被创建(动作904),收集在索引创建之后生成的验证数据(动作905)。然后评估在索引创建之前和之后生成的验证数据(动作906),以能够确定:针对以新近索引的数据库实体为目标的那些查询,是否存在被应用到数据库集合的显著的总体查询性能增益。如果存在显著的总体查询性能增益(判定框906中的“是”),则保持索引(动作907)。如果没有显著的查询性能增益(判定框906中的“否”),则恢复索引(动作908)。验证模块260例如可以执行这种恢复。在一个实施例中,验证决定可以被称为所创建的索引的索引影响。系统200可以包括恢复模块270,用于执行这样的恢复,或者可能的话,索引创建模块250可以兼作恢复模块。作为验证的结果,验证模块可以改变推荐索引任务的集合(如图6中的箭头695所示)。
系统200还包括验证控制模块,该验证控制模块允许用户控制验证模块是否验证由用户引起创建的索引而导致的提高的性能。例如,在图6中,服务前端640也可以包括这样的验证控制模块。
因此,已经描述了一种用于基本上自动调节大型数据库集合的有效机制,而无需大量用户时间。这样的调节经由系统推荐最有可能提高整个数据库集合的总体查询的索引任务来完成的。最终的结果是通过简化的用户界面来极大提高数据库集合的性能,并且可以实现在用户自己必须调查每个数据库以寻找可能的调节机会的情况下实际不可能达到的结果。
在不脱离本发明的精神或本质特征的情况下,可以以其他具体形式来实施本发明。所描述的实施例在所有方面仅被认为是说明性的而非限制性的。因此,本发明的范围由所附权利要求而不是由前面的描述来指示。在权利要求的等同含义和范围内的所有变化都将被包括在其范围内。
Claims (10)
1.一种计算系统,包括:
收集模块,被配置为收集由多个数据库自动生成的历史数据的至少一部分;
索引推荐模块,被配置为基于对所述多个数据库的共同性能的估计最大影响、使用由所述收集模块收集的所述历史数据来生成一个或多个推荐索引任务的集合,每个推荐索引任务用于对所述多个数据库的多个数据库实体中的至少一个数据库实体的至少一个参数来进行索引;以及
索引创建模块,被配置为通过在至少一个对应数据库实体上创建至少一个对应索引来发起由所述索引推荐模块生成的推荐索引任务,从而针对以如下数据库实体为目标的查询,提高共同的所述多个数据库上的总体查询性能,所述数据库实体由所述推荐索引任务而引起新近被索引。
2.根据权利要求1所述的系统,其中所述至少一个对应数据库实体是表或视图。
3.根据权利要求1所述的系统,还包括:
索引控制模块,所述索引控制模块允许用户从由所述索引推荐模块提供的所述一个或多个推荐索引任务的集合中选择索引任务,从而为所述索引创建模块提供推荐索引任务。
4.根据权利要求1所述的系统,还包括:
共同的多个数据库。
5.根据权利要求1所述的系统,还包括:
验证模块,被配置为验证由所述索引创建模块创建的索引而引起的所述对应数据库实体中的至少一个数据库实体和/或所述共同的多个数据库的经提高的性能。
6.根据权利要求1所述的系统,其中所述多个数据库包括至少一百万个数据库。
7.根据权利要求1所述的系统,还包括:
推荐存储装置,所述收集模块将所收集的历史数据存储到所述推荐存储装置中。
8.根据权利要求1所述的系统,其中所述历史数据至少包括至少表示缺失索引的缺失索引数据,所述缺失索引由所述多个数据库上的历史查询而触发。
9.根据权利要求1所述的系统,其中所收集的历史数据包括所测量的查询性能数据的至少一部分。
10.一种用于提高共同的多个数据库的性能的计算机实现的方法,所述计算机实现的方法由一个或多个处理器来实现,所述一个或多个处理器执行用于所述计算机实现的方法的计算机可执行指令,并且所述计算机实现的方法包括:
在收集模块处,收集由多个数据库自动生成的历史数据的至少一部分;
在索引推荐模块处,基于对所述多个数据库的共同性能的估计最大影响、使用所收集的历史数据来生成一个或多个推荐索引任务的集合,每个推荐索引任务用于对所述多个数据库的多个数据库实体的至少一个参数来进行索引;以及
在索引创建模块处,通过针对以如下数据库实体为目标的查询而在至少一个对应数据库实体上创建至少一个对应索引,来发起所生成的一个或多个推荐索引任务的集合中的推荐索引任务,所述数据库实体由所述推荐索引任务而引起新近被索引。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/752,620 US20160378822A1 (en) | 2015-06-26 | 2015-06-26 | Automated recommendation and creation of database index |
US14/752,620 | 2015-06-26 | ||
PCT/US2016/039125 WO2016210199A1 (en) | 2015-06-26 | 2016-06-24 | Automated recommendation and creation of database index |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107820613A true CN107820613A (zh) | 2018-03-20 |
Family
ID=56373131
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680037747.1A Pending CN107820613A (zh) | 2015-06-26 | 2016-06-24 | 数据库索引自动推荐和创建 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20160378822A1 (zh) |
EP (1) | EP3314470A1 (zh) |
CN (1) | CN107820613A (zh) |
WO (1) | WO2016210199A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108920664A (zh) * | 2018-07-05 | 2018-11-30 | 福建星瑞格软件有限公司 | 一种基于索引价值的数据库智能索引实现方法 |
CN110807041A (zh) * | 2019-11-01 | 2020-02-18 | 广州华多网络科技有限公司 | 索引推荐方法、装置、电子设备及存储介质 |
CN112559805A (zh) * | 2020-11-26 | 2021-03-26 | 成都佳华物链云科技有限公司 | 一种索引优化方法及装置 |
CN113407801A (zh) * | 2021-06-04 | 2021-09-17 | 跬云(上海)信息科技有限公司 | 云计算索引推荐方法及系统 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9384203B1 (en) * | 2015-06-09 | 2016-07-05 | Palantir Technologies Inc. | Systems and methods for indexing and aggregating data records |
US10061678B2 (en) | 2015-06-26 | 2018-08-28 | Microsoft Technology Licensing, Llc | Automated validation of database index creation |
US11182360B2 (en) | 2019-01-14 | 2021-11-23 | Microsoft Technology Licensing, Llc | Database tuning and performance verification using cloned database |
US11138266B2 (en) | 2019-02-21 | 2021-10-05 | Microsoft Technology Licensing, Llc | Leveraging query executions to improve index recommendations |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1302870A2 (en) * | 2001-10-12 | 2003-04-16 | NCR International, Inc. | Index selection in a database system |
US20130060782A1 (en) * | 2011-09-02 | 2013-03-07 | Bbs Technologies, Inc. | Determining indexes for improving database system performance |
CN103984726A (zh) * | 2014-05-16 | 2014-08-13 | 上海新炬网络技术有限公司 | 一种数据库执行计划的局部修正方法 |
CN104246728A (zh) * | 2012-04-27 | 2014-12-24 | 英派尔科技开发有限公司 | 用于数据库索引的多个可变覆盖率存储器 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8510290B1 (en) * | 2008-12-30 | 2013-08-13 | Teradata Us, Inc. | Index selection in a multi-system database management system |
US10061678B2 (en) * | 2015-06-26 | 2018-08-28 | Microsoft Technology Licensing, Llc | Automated validation of database index creation |
-
2015
- 2015-06-26 US US14/752,620 patent/US20160378822A1/en not_active Abandoned
-
2016
- 2016-06-24 CN CN201680037747.1A patent/CN107820613A/zh active Pending
- 2016-06-24 EP EP16736671.5A patent/EP3314470A1/en not_active Withdrawn
- 2016-06-24 WO PCT/US2016/039125 patent/WO2016210199A1/en active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1302870A2 (en) * | 2001-10-12 | 2003-04-16 | NCR International, Inc. | Index selection in a database system |
US20130060782A1 (en) * | 2011-09-02 | 2013-03-07 | Bbs Technologies, Inc. | Determining indexes for improving database system performance |
CN104246728A (zh) * | 2012-04-27 | 2014-12-24 | 英派尔科技开发有限公司 | 用于数据库索引的多个可变覆盖率存储器 |
CN103984726A (zh) * | 2014-05-16 | 2014-08-13 | 上海新炬网络技术有限公司 | 一种数据库执行计划的局部修正方法 |
Non-Patent Citations (1)
Title |
---|
KARL SCHNAITTER等: "Semi-Automatic Index Tuning: Keeping DBAs in the Loop", 《PROCEEDINGS OF THE VLDB ENDOWMENT》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108920664A (zh) * | 2018-07-05 | 2018-11-30 | 福建星瑞格软件有限公司 | 一种基于索引价值的数据库智能索引实现方法 |
CN108920664B (zh) * | 2018-07-05 | 2022-04-15 | 福建星瑞格软件有限公司 | 一种基于索引价值的数据库智能索引实现方法 |
CN110807041A (zh) * | 2019-11-01 | 2020-02-18 | 广州华多网络科技有限公司 | 索引推荐方法、装置、电子设备及存储介质 |
CN110807041B (zh) * | 2019-11-01 | 2022-05-20 | 广州华多网络科技有限公司 | 索引推荐方法、装置、电子设备及存储介质 |
CN112559805A (zh) * | 2020-11-26 | 2021-03-26 | 成都佳华物链云科技有限公司 | 一种索引优化方法及装置 |
CN113407801A (zh) * | 2021-06-04 | 2021-09-17 | 跬云(上海)信息科技有限公司 | 云计算索引推荐方法及系统 |
CN113407801B (zh) * | 2021-06-04 | 2023-11-28 | 跬云(上海)信息科技有限公司 | 云计算索引推荐方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
EP3314470A1 (en) | 2018-05-02 |
US20160378822A1 (en) | 2016-12-29 |
WO2016210199A1 (en) | 2016-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107820613A (zh) | 数据库索引自动推荐和创建 | |
US20200183932A1 (en) | Optimizing write operations in object schema-based application programming interfaces (apis) | |
CN105900396B (zh) | 移动云服务体系架构 | |
US10296658B2 (en) | Use of context-dependent statistics to suggest next steps while exploring a dataset | |
Ciceri et al. | Crowdsourcing for top-k query processing over uncertain data | |
WO2019143705A1 (en) | Dimension context propagation techniques for optimizing sql query plans | |
US10339038B1 (en) | Method and system for generating production data pattern driven test data | |
CN102591917B (zh) | 一种数据处理方法、系统及相关装置 | |
CN108885627A (zh) | 向远程客户端提供查询结果数据的查询即服务系统 | |
CN107679192A (zh) | 多集群协同数据处理方法、系统、存储介质及设备 | |
US8959076B2 (en) | Managing a service catalog through crowdsourcing | |
Zhang et al. | A system for tender price evaluation of construction project based on big data | |
US20140379616A1 (en) | System And Method Of Tuning Item Classification | |
CN105190595A (zh) | 唯一地识别网络连接实体 | |
US20210279246A1 (en) | Methods, apparatuses and computer program products for outputting improved autosuggestions in a group-based communication platform | |
US11561950B2 (en) | System and method for facilitating an objective-oriented data structure and an objective via the data structure | |
CN106777142A (zh) | 基于移动互联网海量数据的服务层系统及其方法 | |
CN112686717A (zh) | 一种广告召回的数据处理方法及系统 | |
CN109388751A (zh) | 一种智能情报收集推送系统、模块及方法 | |
CN111177481A (zh) | 用户标识映射方法及装置 | |
CN110716950A (zh) | 一种口径系统建立方法、装置、设备及计算机存储介质 | |
Lee et al. | A big data management system for energy consumption prediction models | |
CN106055594A (zh) | 基于用户兴趣的信息提供方法 | |
CN110837508A (zh) | 一种口径系统建立方法、装置、设备及计算机存储介质 | |
CN111488356A (zh) | 业务数据区块链的数据存储方法及其装置 |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20180320 |