CN114398378B - 确定索引代价的方法和装置 - Google Patents
确定索引代价的方法和装置 Download PDFInfo
- Publication number
- CN114398378B CN114398378B CN202210298016.XA CN202210298016A CN114398378B CN 114398378 B CN114398378 B CN 114398378B CN 202210298016 A CN202210298016 A CN 202210298016A CN 114398378 B CN114398378 B CN 114398378B
- Authority
- CN
- China
- Prior art keywords
- rows
- index
- data
- row
- cost
- 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.)
- Active
Links
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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
提供一种确定索引代价的方法和装置。所述方法应用于基于LSM树存储引擎的数据库,所述数据库中存储有基线数据和增量数据,所述基线数据和所述增量数据包含索引的数据,所述索引具有物理行,所述索引的物理行的行数为所述基线数据中包含的所述索引的行数和所述增量数据中包含的所述索引的行数之和,所述方法包括:接收第一数据库查询语句;根据所述第一数据库查询语句确定所述索引需要被扫描的物理行的行数;根据所述物理行的行数确定扫描所述索引的代价。
Description
技术领域
本公开涉及数据库领域,并且更为具体地,涉及一种确定索引代价的方法和装置。
背景技术
在关系型数据库中,基表访问路径选择方法是指数据库的优化器选择索引或索引路径的方法。索引路径选择方法需要评估每一个索引的代价并选择代价最小的索引来访问数据库中的表。
通常来说,索引的代价评估取决于很多因素。例如,索引的代价评估可以考虑以下因素中的一种或多种:扫描的行数,回表的行数,投影的列数,谓词的个数等。这些因素中的大部分因素均需要通过数据库***维护的统计信息计算得到。
在影响索引代价的因素中,行数信息是影响索引代价的重要因素。在关系型数据库中,扫描索引的代价和回表的代价,均是基于行数信息确定的。
传统的关系型数据库一般基于buffer-pool的存储引擎对数据进行管理。在此类存储引擎中,基于统计信息计算出的行数信息与数据库中真实存储的行数信息一般是匹配的,所以基于该行数信息进行索引代价的计算通常不会存在太大的问题。
但是,LSM树存储引擎的索引代价计算方法和传统的基于Buffer-Pool的存储引擎有着显著的区别。传统的行数信息计算方式是没办法准确的用来评估LSM树存储引擎的索引的代价,从而导致数据库***的优化器可能没办法选到较优的基表访问路径。
发明内容
本公开提供一种确定索引代价的方法和装置,以提高LSM树存储引擎中的索引代价评估的准确性。
第一方面,提供一种确定索引代价的方法,所述方法应用于基于LSM树存储引擎的数据库,所述数据库中存储有基线数据和增量数据,所述基线数据和所述增量数据包含索引的数据,所述索引具有物理行,所述索引的物理行的行数为所述基线数据中包含的所述索引的行数和所述增量数据中包含的所述索引的行数之和,所述方法包括:接收第一数据库查询语句;根据所述第一数据库查询语句确定所述索引需要被扫描的物理行的行数;根据所述物理行的行数确定扫描所述索引的代价。
可选地,作为一种可能的实现方式,所述索引还具有逻辑行,所述索引的逻辑行的行数为所述基线数据中包含的所述索引的行和所述增量数据中包含的所述索引的行经过合并之后的剩余行的行数,所述方法还包括:根据所述第一数据库查询语句确定所述索引需要回表的逻辑行的行数;根据所述逻辑行的行数确定所述索引的回表代价。
可选地,作为一种可能的实现方式,所述索引需要被扫描的物理行的行数是基于第一行数信息和第二行数信息确定的,所述第一行数信息用于指示所述基线数据中包含的行数,所述第二行数信息用于指示所述增量数据中包含的以下行数中的一种或多种:新增的行数、删除的行数以及更改的行数。
可选地,作为一种可能的实现方式,所述索引需要回表的逻辑行的行数是基于第一行数信息和第二行数信息确定的,所述第一行数信息用于指示所述基线数据中包含的行数,所述第二行数信息用于指示所述增量数据中包含的以下行数中的一种或多种:新增的行数、删除的行数以及更改的行数。
可选地,作为一种可能的实现方式,所述第一行数信息是从所述基线数据的元数据中获取的。
可选地,作为一种可能的实现方式,所述第二行数信息是通过对所述增量数据进行动态采样获取的。
第二方面,提供一种确定索引代价的装置,所述装置包括基于LSM树存储引擎的数据库,所述数据库中存储有基线数据和增量数据,所述基线数据和所述增量数据包含索引的数据,所述索引具有物理行,所述索引的物理行的行数为所述基线数据中包含的所述索引的行数和所述增量数据中包含的所述索引的行数之和,所述装置包括:接收模块,用于接收第一数据库查询语句;第一确定模块,用于根据所述第一数据库查询语句确定所述索引需要被扫描的物理行的行数;第二确定模块,用于根据所述物理行的行数确定扫描所述索引的代价。
可选地,作为一种可能的实现方式,所述索引还具有逻辑行,所述索引的逻辑行的行数为所述基线数据中包含的所述索引的行和所述增量数据中包含的所述索引的行经过合并之后的剩余行的行数,所述装置还包括:第三确定模块,用于根据所述第一数据库查询语句确定所述索引需要回表的逻辑行的行数;第四确定模块,用于根据所述逻辑行的行数确定所述索引的回表代价。
可选地,作为一种可能的实现方式,所述索引需要被扫描的物理行的行数是基于第一行数信息和第二行数信息确定的,所述第一行数信息用于指示所述基线数据中包含的行数,所述第二行数信息用于指示所述增量数据中包含的以下行数中的一种或多种:新增的行数、删除的行数以及更改的行数。
可选地,作为一种可能的实现方式,所述索引需要回表的逻辑行的行数是基于第一行数信息和第二行数信息确定的,所述第一行数信息用于指示所述基线数据中包含的行数,所述第二行数信息用于指示所述增量数据中包含的以下行数中的一种或多种:新增的行数、删除的行数以及更改的行数。
可选地,作为一种可能的实现方式,所述第一行数信息是从所述基线数据的元数据中获取的。
可选地,作为一种可能的实现方式,所述第二行数信息是通过对所述增量数据进行动态采样获取的。
第三方面,提供一种确定索引代价的装置,包括:存储器,用于存储指令;处理器,用于执行所述存储器中存储的指令,以执行如第一方面或第一方面中的任意一种可能实现方式所述的方法。
第四方面,提供一种计算机可读存储介质,其上存储有用于执行第一方面或第一方面中的任意一种可能的实现方式所述的方法的指令。
第五方面,提供一种计算机程序产品,包括用于执行第一方面或第一方面中的任意一种可能的实现方式所述的方法的指令。
在考虑了引入了LSM树存储引擎的数据存储特点的前提下,本公开实施例引入了物理行的概念,与传统的统计信息统计出的行数不同,物理行是LSM树存储引擎在扫描索引过程中真实需要访问的行数,因此,物理行概念的引入能够提高索引路径选择的准确性。
附图说明
为了更清楚地说明本公开实施例或背景技术中的技术方案,下面将对本公开实施例或背景技术中所需要使用的附图进行说明。
图1是LSM树存储引擎的数据存储方式的示例图。
图2是LSM树存储引擎的行数信息的示例图。
图3是本公开实施例提供的物理行和逻辑行的确定方式示例图。
图4是本公开一个实施例提供的确定索引代价的方法的流程示意图。
图5是本公开另一实施例提供的确定索引代价的方法的流程示意图。
图6是本公开一个实施例提供的确定索引代价的装置的流程示意图。
图7是本公开另一实施例提供的确定索引代价的装置的流程示意图。
具体实施方式
下面结合本公开实施例中的附图对本公开实施例进行描述。以下描述中,参考形成本公开一部分并以说明之方式示出本公开实施例的具体方面或可使用本公开实施例的具体方面的附图。应理解,本公开实施例可在其它方面中使用,并可包括附图中未描绘的结构或逻辑变化。因此,以下详细描述不应以限制性的意义来理解。例如,应理解,结合所描述方法的揭示内容可以同样适用于用于执行所述方法的对应设备或***,且反之亦然。例如,如果描述一个或多个具体方法步骤,则对应的设备可以包含如功能单元等一个或多个单元,来执行所描述的一个或多个方法步骤(例如,一个单元执行一个或多个步骤,或多个单元,其中每个都执行多个步骤中的一个或多个),即使附图中未明确描述或说明这种一个或多个单元。另一方面,例如,如果基于如功能单元等一个或多个单元描述具体装置,则对应的方法可以包含一个步骤来执行一个或多个单元的功能性(例如,一个步骤执行一个或多个单元的功能性,或多个步骤,其中每个执行多个单元中一个或多个单元的功能性),即使附图中未明确描述或说明这种一个或多个步骤。进一步,应理解的是,除非另外明确提出,本文中所描述的各示例性实施例和/或方面的特征可以相互组合。
在关系型数据库中,基表访问路径选择方法是指数据库的优化器选择索引的方法。因此,基表访问路径选择方法有时也可称为索引路径选择方法。索引路径选择方法需要评估每一个索引的代价并选择代价最小的索引来访问数据库中的表。
通常来说,索引的代价评估取决于很多因素。例如,索引的代价评估可以考虑以下因素中的一种或多种:扫描的行数,回表的行数,投影的列数,谓词的个数等。这些因素中的大部分因素均需要通过数据库***维护的统计信息计算得到。
在影响索引代价的因素中,行数信息是影响索引代价的重要因素。在传统的关系型数据库中,扫描索引的代价和回表的代价。上述两种代价均是基于行数信息确定的。
以扫描索引的代价为例。通常来讲,扫描索引的代价跟该索引需要被扫描的行数成正比,而索引需要被扫描的行数则是由数据库查询语句中的一部分查询谓词决定的,这些谓词定义了索引扫描开始和结束位置(也就是说,这些谓词定义了索引的扫描范围(QueryRange))。理论上来说,扫描的行数越多,数据库查询语句的执行时间就会越久。
以索引回表的代价为例。索引的回表代价跟该索引需要回表的行数也是正相关的,而回表的行数也是由数据库查询语句中的查询谓词来决定的。理论上来说,回表的行数越多,数据库查询语句的执行时间就会越久。
在传统的关系型数据库中,行数信息一般是通过优化器中维护的统计信息来计算谓词选择率得到。当然,在一些数据库中,行数信息也可以通过其他更加高级的方式获取,比如通过动态采样的方式获取。举个简单的例子,给定联合索引(a,b)和查询谓词a>1 anda<5 and b<5, 那么谓词a>1 and a<5定义了索引扫描开始和结束的位置,如果满足这两个条件的行数有1万行,那么扫描索引的代价就是1万行的顺序扫描。如果select语句所选择的字段在联合索引(a,b)中是缺失的,则需要回表,假设谓词b<5的谓词选择率是0.5,那么该索引的回表代价为5千行的随机扫描。
最近几年,很多数据库***使用LSM树(LSM-TREE)作为它们的存储引擎。LSM树存储引擎把数据分为了如图1所示的两部分:基线数据和增量数据。基线数据也可称为静态数据,增量数据也可称为动态数据。基线数据不会被修改,是只读的,存储于磁盘;所有的修改操作(增、删、改)被记录在增量数据中,增量数据通常先存储于内存中,如果内存中存储的数据量超过一定的阈值,则增量数据会被转储至磁盘中。基线数据和增量数据会定期的合并形成新的基线数据。在LSM树存储引擎中,对于一个查询操作,需要合并LSM树来形成最终的查询结果。
传统的关系型数据库一般基于buffer-pool的存储引擎对数据进行管理。在此类存储引擎中,基于上述统计信息计算出的行数信息与数据库中真实存储的行数信息一般是匹配的,所以基于该行数信息进行索引代价的计算通常不会存在太大的问题。
但是,LSM树存储引擎的索引代价计算方法和传统的基于Buffer-Pool的存储引擎有着显著的区别。传统的基于选择率计算的行数信息是没办法准确的用来评估LSM树存储引擎中的索引代价,导致优化器可能没办法选到较优的基表访问路径。
考虑图2所示的LSM树存储引擎中的基线数据被删除的一个例子。在图2中,基线数据包含10万行数据,增量数据中维护了对这10万行数据的删除操作。在这种场景下,这张表的总行数是0行,在传统的基于Buffer-Pool的存储引擎中,扫描索引的代价和扫描索引的行数相匹配,因此扫描会很快完成。但是,在LSM树存储引擎中,扫描会很慢(扫描过程涉及10万行基线数据和10万行增量数据的合并)。由此可见,在LSM树存储引擎中,索引的行数和扫描索引的代价是不匹配的。产生这个问题的原因在于:在基于LSM树的存储引擎上,传统的基于动态采样和谓词选择率计算出来的行数信息不足以反应实际计算代价过程中需要扫描的行数。举个简单的例子,在传统的关系型数据库中,如果***1万行数据,然后删除其中的1千行数据,那么在计算索引代价的时候会用9千行去计算。但是,在LSM树存储引擎的场景下,如果前文提到的1万行数据存储在基线数据中,1k行数据为存储在内存中的增量数据,那么在计算索引代价的时候,用一万一千行去计算才是准确的。
为了解决LSM树存储引擎在计算索引的代价时,行数信息与索引中的真实行数不一致的问题,本公开实施例提供一种新的适于LSM树存储引擎的行数计算方式。该行数计算方式可以应用于基于LSM树存储引擎的数据库,如OceanBase数据库。
首先,本公开实施例引入了“物理行”和“逻辑行”的概念,并在此基础上提出了基于“物理行”和“逻辑行”的索引代价计算方法。
一个索引的物理行的行数可以等于基线数据中包含的该索引的行数和增量数据中包含的该索引的行数之和。物理行主要用于表征LSM树这种存储引擎在计算扫描索引的代价时需要真正访问的行数。一个索引的逻辑行的行数为基线数据中包含的索引的行和增量数据中包含的该索引的行经过合并之后的剩余行的行数。逻辑行可以理解为传统意义上的行数。重新参见图2,在图2的示例中,逻辑行是0行,而物理行是20w行。
物理行可以用于确定扫描索引的代价。也就是说,扫描索引的代价可以基于该索引需要被扫描的物理行的行数确定。
在一些实施例中,索引需要被扫描的物理行的行数可以基于第一行数信息和第二行数信息确定。第一行数信息指的是与基线数据关联的行数信息;第二行数信息指的是与增量数据关联的行数信息。
第一行数信息可用于指示基线数据中包含的行数。例如,可以先确定索引的扫描范围,然后确定基线数据中的位于该索引的扫描范围内的行数。
第一行数信息的获取方式可以有多种。例如,可以通过数据库的统计信息获取。又如,可以从基线数据的元数据中获取。有些数据库(如OceanBase数据库)为基线数据维护了块级别的统计信息,因此能够很快地计算出上述第一行数信息。
第二行数信息可用于指示增量数据中包含的以下行数中的一种或多种:新增的行数、删除的行数以及更改的行数。例如,可以先确定索引的扫描范围,然后确定增量数据中的位于该索引的扫描范围内的新增的行数、删除的行数以及更改的行数。
本公开实施例同时考虑了增量数据和基线数据,相当于统计信息是实时的,而传统的统计信息搜集是有一定的滞后性的(通常是一张表的增/删/修改操作到了一定程度,才会触发统计信息的重新搜集)。
逻辑行可用于确定索引需要回表的代价。也就是说,索引需要回表的代价可以基于该索引需要回表的逻辑行的行数确定。索引需要回表的代价之所以可以采用逻辑行确定,是因为在扫描索引的过程中,会对基线数据和增量数据进行合并,因此直接利用基线数据和增量数据合并后的数据计算索引的回表代价即可。
在一些实施例中,索引需要回表的逻辑行的行数可以基于第一行数信息和第二行数信息确定。第一行数信息指的是与基线数据关联的行数信息;第二行数信息指的是与增量数据关联的行数信息。
第一行数信息可用于指示基线数据中包含的行数。例如,可以先确定索引的扫描范围,然后确定基线数据中的位于该索引的扫描范围内的行数。
第一行数信息的获取方式可以有多种。例如,可以通过数据库的统计信息获取。又如,可以从基线数据的元数据中获取。有些数据库(如OceanBase数据库)为基线数据维护了块级别的统计信息,因此能够很快地计算出上述第一行数信息。
第二行数信息可用于指示增量数据中包含的以下行数中的一种或多种:新增的行数、删除的行数以及更改的行数。例如,可以先确定索引的扫描范围,然后确定增量数据中的位于该索引的扫描范围内的新增的行数、删除的行数以及更改的行数。
参见图3,基线数据包含元数据。因此,可以利用元数据计算基线数据中的行数(对应于上文中的第一行数信息),并利用动态采样的方式对增量数据进行动态采样,得到新增、删除、修改的行数(对应于上文中的第二行数信息)。将二者合并,则可以得到逻辑行和物理行。
图4示出的是本公开一个实施例提供的确定索引代价的方法。图4的方法400可以由数据库执行,例如可以由数据库中的优化器执行。该数据库可以为基于LSM树存储引擎的数据库。例如,该数据库可以为OceanBase数据库。OceanBase数据库的优势之一在于解决了索引列上的谓词依赖关系。例如,考虑索引(a,b)以及查询条件a=1 and b=1,传统数据库在计算这个查询条件的谓词选择率的时候必然要考虑的一个问题是a和b是否存在依赖关系,然后再使用对应的统计信息(多列直方图或者动态采样)来估计行数信息,从而提高谓词选择率计算的正确率。OceanBase数据库目前的估行方式已经将不同谓词条件之间的依赖关系考虑在内,因此利用OceanBase数据库默认能够解决a和b存在依赖关系的场景。数据库可以基于图4所示的方法对基表访问路径进行选择(即选择访问数据库中的表的索引)。例如,数据库可以基于图4所示的方法计算各个索引的代价,然后根据各个索引的代价,确定访问数据库中的表的索引路径。如图4所示,该方法400可以包括步骤S410、步骤S420和步骤S430,下面对这些步骤进行详细描述。
在步骤S410,接收第一数据库查询语句。作为一个示例,该数据库查询语句可以是SQL语句。
在步骤S420,根据第一数据库查询语句确定索引需要被扫描的物理行的行数。例如,可以根据数据库查询语句中的谓词,确定索引的扫描范围,然后计算基线数据和增量数据中的位于该扫描范围内的行数之和,从而得到该索引需要被扫描的物理行的行数。
在步骤S430,根据物理行的行数确定扫描索引的代价。以该索引需要被扫描的物理行的行数为1万行为例,则可以将扫描该索引的代价确定为1万行的顺序扫描。
在考虑了引入了LSM树存储引擎的数据存储特点的前提下,本公开实施例引入了物理行的概念,与传统的统计信息统计出的行数不同,物理行是LSM树存储引擎在扫描索引过程中真实需要访问的行数,因此,物理行概念的引入能够提高索引路径选择的准确性。
图5示出的是本公开另一实施例提供的确定索引代价的方法。图5的方法500可以由数据库执行,例如可以由数据库中的优化器执行。该数据库可以为基于LSM树存储引擎的数据库。例如,该数据库可以为OceanBase数据库。数据库可以基于图5所示的方法对基表访问路径进行选择(即选择访问数据库中的表的索引)。例如,数据库可以基于图5所示的方法计算各个索引的代价,然后根据各个索引的代价,确定访问数据库中的表的索引路径。如图5所示,该方法500可以包括步骤S510、步骤S520以及步骤S530。下面对这些步骤进行详细描述。
在步骤S510,接收第一数据库查询语句。作为一个示例,该数据库查询语句可以是SQL语句。
在步骤S520,根据第一数据库查询语句确定索引需要被扫描的物理行的行数以及索引需要回表的逻辑行的行数。例如,可以根据数据库查询语句中的谓词,确定索引的扫描范围,然后计算基线数据和增量数据中的位于该扫描范围内的行数,从而得到该索引需要被扫描的物理行和逻辑行的行数。
在步骤S530,根据物理行的行数和逻辑行的行数分别确定扫描索引的代价和索引的回表代价。以该索引需要被扫描的物理行的行数为1万行、逻辑行为5千行为例,则可以将扫描该索引的代价确定为1万行的顺序扫描,将索引的回表代价确定为5千行的随机扫描。
本公开实施例通过引入逻辑行和物理行两个概念,能够提高LSM树存储引擎估行的准确性,从而提高索引路径选择的准确性。
上文结合图1至图5,详细描述了本公开的方法实施例,下面结合图6至图7,详细描述本公开的装置实施例。应理解,方法实施例的描述与装置实施例的描述相互对应,因此,未详细描述的部分可以参见前面方法实施例。
图6是本公开实施例提供的一种确定索引代价的装置。图6所示的装置600包括基于LSM树存储引擎的数据库,所述数据库中存储有基线数据和增量数据,所述基线数据和所述增量数据包含索引的数据,所述索引具有物理行,所述索引的物理行的行数为所述基线数据中包含的所述索引的行数和所述增量数据中包含的所述索引的行数之和。
所述装置600包括:接收模块610、第一确定模块620以及第二确定模块630。
接收模块610可用于接收第一数据库查询语句。
第一确定模块620可用于根据所述第一数据库查询语句确定所述索引需要被扫描的物理行的行数。
第二确定模块630可用于根据所述物理行的行数确定扫描所述索引的代价。
可选地,在一些实施例中,所述索引还具有逻辑行,所述索引的逻辑行的行数为所述基线数据中包含的所述索引的行和所述增量数据中包含的所述索引的行经过合并之后的剩余行的行数,所述装置还包括:第三确定模块,用于根据所述第一数据库查询语句确定所述索引需要回表的逻辑行的行数;第四确定模块,用于根据所述逻辑行的行数确定所述索引的回表代价。
可选地,在一些实施例中,所述索引需要被扫描的物理行的行数是基于第一行数信息和第二行数信息确定的,所述第一行数信息用于指示所述基线数据中包含的行数,所述第二行数信息用于指示所述增量数据中包含的以下行数中的一种或多种:新增的行数、删除的行数以及更改的行数。
可选地,在一些实施例中,所述索引需要回表的逻辑行的行数是基于第一行数信息和第二行数信息确定的,所述第一行数信息用于指示所述基线数据中包含的行数,所述第二行数信息用于指示所述增量数据中包含的以下行数中的一种或多种:新增的行数、删除的行数以及更改的行数。
可选地,在一些实施例中,所述第一行数信息是从所述基线数据的元数据中获取的。
可选地,在一些实施例中,所述第二行数信息是通过对所述增量数据进行动态采样获取的。
图7是本公开另一实施例提供的确定索引代价的装置的结构示意图。图7所述的确定索引代价的装置700可以包括存储器710和处理器720,存储器710可以用于存储指令。处理器720可以用于执行存储器710中存储的指令,以实现前文描述的各个方法中的步骤。在一些实施例中,该装置700还可以包括网络接口730,处理器720与外部设备的数据交换可以通过该网络接口730实现。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其他任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本公开实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如数字视频光盘(digital video disc,DVD))、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
本领域普通技术人员可以意识到,结合本公开实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本公开的范围。
在本公开所提供的几个实施例中,应该理解到,所揭露的***、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以所述权利要求的保护范围为准。
Claims (13)
1.一种确定索引代价的方法,所述方法应用于基于LSM树存储引擎的数据库,所述数据库中存储有基线数据和增量数据,针对所述数据库中的数据的修改操作被记录在所述增量数据中,所述基线数据和所述增量数据包含索引的数据,所述索引具有物理行,所述物理行用于表征所述LSM树存储引擎在计算扫描索引的代价时需要访问的行数,所述索引的物理行的行数为所述基线数据中包含的所述索引的行数和所述增量数据中包含的所述索引的行数之和,
所述方法包括:
接收第一数据库查询语句,所述第一数据库查询语句的查询结果是基于所述LSM树存储引擎合并所述基线数据和所述增量数据后形成的;
根据所述第一数据库查询语句中的谓词,确定所述索引的扫描范围,并在所述扫描范围内确定所述索引需要被扫描的物理行的行数;
根据所述物理行的行数确定扫描所述索引的代价。
2.根据权利要求1所述的方法,所述索引还具有逻辑行,所述索引的逻辑行的行数为所述基线数据中包含的所述索引的行和所述增量数据中包含的所述索引的行经过合并之后的剩余行的行数,
所述方法还包括:
根据所述第一数据库查询语句确定所述索引需要回表的逻辑行的行数;
根据所述逻辑行的行数确定所述索引的回表代价。
3.根据权利要求1所述的方法,所述索引需要被扫描的物理行的行数是基于第一行数信息和第二行数信息确定的,所述第一行数信息用于指示所述基线数据中包含的行数,所述第二行数信息用于指示所述增量数据中包含的以下行数中的一种或多种:新增的行数、删除的行数以及更改的行数。
4.根据权利要求2所述的方法,所述索引需要回表的逻辑行的行数是基于第一行数信息和第二行数信息确定的,所述第一行数信息用于指示所述基线数据中包含的行数,所述第二行数信息用于指示所述增量数据中包含的以下行数中的一种或多种:新增的行数、删除的行数以及更改的行数。
5.根据权利要求3或4所述的方法,所述第一行数信息是从所述基线数据的元数据中获取的。
6.根据权利要求3或4所述的方法,所述第二行数信息是通过对所述增量数据进行动态采样获取的。
7.一种确定索引代价的装置,所述装置包括基于LSM树存储引擎的数据库,所述数据库中存储有基线数据和增量数据,针对所述数据库中的数据的修改操作被记录在所述增量数据中,所述基线数据和所述增量数据包含索引的数据,所述索引具有物理行,所述物理行用于表征所述LSM树存储引擎在计算扫描索引的代价时需要访问的行数,所述索引的物理行的行数为所述基线数据中包含的所述索引的行数和所述增量数据中包含的所述索引的行数之和,
所述装置包括:
接收模块,用于接收第一数据库查询语句,所述第一数据库查询语句的查询结果是基于所述LSM树存储引擎合并所述基线数据和所述增量数据后形成的;
第一确定模块,用于根据所述第一数据库查询语句中的谓词,确定所述索引的扫描范围,并在所述扫描范围内确定所述索引需要被扫描的物理行的行数;
第二确定模块,用于根据所述物理行的行数确定扫描所述索引的代价。
8.根据权利要求7所述的装置,所述索引还具有逻辑行,所述索引的逻辑行的行数为所述基线数据中包含的所述索引的行和所述增量数据中包含的所述索引的行经过合并之后的剩余行的行数,
所述装置还包括:
第三确定模块,用于根据所述第一数据库查询语句确定所述索引需要回表的逻辑行的行数;
第四确定模块,用于根据所述逻辑行的行数确定所述索引的回表代价。
9.根据权利要求7所述的装置,所述索引需要被扫描的物理行的行数是基于第一行数信息和第二行数信息确定的,所述第一行数信息用于指示所述基线数据中包含的行数,所述第二行数信息用于指示所述增量数据中包含的以下行数中的一种或多种:新增的行数、删除的行数以及更改的行数。
10.根据权利要求8所述的装置,所述索引需要回表的逻辑行的行数是基于第一行数信息和第二行数信息确定的,所述第一行数信息用于指示所述基线数据中包含的行数,所述第二行数信息用于指示所述增量数据中包含的以下行数中的一种或多种:新增的行数、删除的行数以及更改的行数。
11.根据权利要求9或10所述的装置,所述第一行数信息是从所述基线数据的元数据中获取的。
12.根据权利要求9或10所述的装置,所述第二行数信息是通过对所述增量数据进行动态采样获取的。
13.一种确定索引代价的装置,包括:
存储器,用于存储指令;
处理器,用于执行所述存储器中存储的指令,以执行如权利要求1-6中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210298016.XA CN114398378B (zh) | 2022-03-25 | 2022-03-25 | 确定索引代价的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210298016.XA CN114398378B (zh) | 2022-03-25 | 2022-03-25 | 确定索引代价的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114398378A CN114398378A (zh) | 2022-04-26 |
CN114398378B true CN114398378B (zh) | 2022-11-01 |
Family
ID=81234199
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210298016.XA Active CN114398378B (zh) | 2022-03-25 | 2022-03-25 | 确定索引代价的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114398378B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5282269A (en) * | 1985-09-27 | 1994-01-25 | Oce-Nederland B.V. | Raster image memory |
CN103678619A (zh) * | 2013-12-17 | 2014-03-26 | 北京国双科技有限公司 | 数据库索引处理方法和装置 |
CN105447059A (zh) * | 2014-09-29 | 2016-03-30 | 华为技术有限公司 | 一种数据处理方法及装置 |
CN105701098A (zh) * | 2014-11-25 | 2016-06-22 | 国际商业机器公司 | 针对数据库中的表生成索引的方法和装置 |
CN107038206A (zh) * | 2017-01-17 | 2017-08-11 | 阿里巴巴集团控股有限公司 | Lsm树的建立方法、lsm树的数据读取方法和服务器 |
CN108804625A (zh) * | 2018-05-31 | 2018-11-13 | 阿里巴巴集团控股有限公司 | 一种lsm树的优化方法、装置及计算机设备 |
CN111694992A (zh) * | 2019-03-15 | 2020-09-22 | 阿里巴巴集团控股有限公司 | 一种数据处理方法和装置 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4855680B2 (ja) * | 2002-05-09 | 2012-01-18 | ザ・ユニバーシティ・オブ・シカゴ | 圧力駆動プラグによる輸送と反応のための装置および方法 |
CN103390038B (zh) * | 2013-07-16 | 2016-03-30 | 西安交通大学 | 一种基于HBase的构建和检索增量索引的方法 |
CN106557494B (zh) * | 2015-09-25 | 2019-09-20 | 北京国双科技有限公司 | 更新列存储表的方法及装置 |
CN106484815B (zh) * | 2016-09-26 | 2019-04-12 | 北京赛思信安技术股份有限公司 | 一种基于海量数据类sql检索场景的自动识别优化方法 |
CN107918642A (zh) * | 2017-10-26 | 2018-04-17 | 深圳市金立通信设备有限公司 | 数据查询方法、服务器及计算机可读存储介质 |
CN108021702A (zh) * | 2017-12-26 | 2018-05-11 | 百度在线网络技术(北京)有限公司 | 基于LSM-tree的分级存储方法、装置、OLAP数据库***及介质 |
CN112748866A (zh) * | 2019-10-31 | 2021-05-04 | 北京沃东天骏信息技术有限公司 | 一种增量索引数据的处理方法和装置 |
CN112783758B (zh) * | 2019-11-11 | 2024-02-27 | 阿里云计算有限公司 | 测试案例库与特征库生成方法、设备及存储介质 |
CN112000846B (zh) * | 2020-08-19 | 2021-07-20 | 东北大学 | 基于gpu分组lsm树索引的方法 |
CN112346950B (zh) * | 2020-12-04 | 2022-07-22 | 东北大学 | 基于查询日志分析的数据库索引性能估计***与方法 |
-
2022
- 2022-03-25 CN CN202210298016.XA patent/CN114398378B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5282269A (en) * | 1985-09-27 | 1994-01-25 | Oce-Nederland B.V. | Raster image memory |
CN103678619A (zh) * | 2013-12-17 | 2014-03-26 | 北京国双科技有限公司 | 数据库索引处理方法和装置 |
CN105447059A (zh) * | 2014-09-29 | 2016-03-30 | 华为技术有限公司 | 一种数据处理方法及装置 |
CN105701098A (zh) * | 2014-11-25 | 2016-06-22 | 国际商业机器公司 | 针对数据库中的表生成索引的方法和装置 |
CN107038206A (zh) * | 2017-01-17 | 2017-08-11 | 阿里巴巴集团控股有限公司 | Lsm树的建立方法、lsm树的数据读取方法和服务器 |
CN108804625A (zh) * | 2018-05-31 | 2018-11-13 | 阿里巴巴集团控股有限公司 | 一种lsm树的优化方法、装置及计算机设备 |
CN111694992A (zh) * | 2019-03-15 | 2020-09-22 | 阿里巴巴集团控股有限公司 | 一种数据处理方法和装置 |
Non-Patent Citations (2)
Title |
---|
A quantitative investigation of through the wall imaging;Mohammad Zoofaghari 等;《2017 11th European Conference on Antennas and Propagation (EUCAP)》;20170518;3596-3600 * |
基于LSM-Tree的HBase数据库分布式索引研究;李运福;《中国优秀硕士学位论文全文数据库 信息科技辑》;20180115(第01(2018)期);I138-821 * |
Also Published As
Publication number | Publication date |
---|---|
CN114398378A (zh) | 2022-04-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10983994B2 (en) | Partition access method for query optimization | |
US8145621B2 (en) | Graphical representation of query optimizer search space in a database management system | |
US8122008B2 (en) | Joining tables in multiple heterogeneous distributed databases | |
US8924373B2 (en) | Query plans with parameter markers in place of object identifiers | |
US20070083488A1 (en) | Undo hints to speed up segment extension and tuning of undo retention | |
CN104765731B (zh) | 数据库查询优化方法和设备 | |
US20080059718A1 (en) | Storage system, data relocation method thereof, and recording medium that records data relocation program | |
RU2691595C2 (ru) | Конструируемый поток данных для улучшенной обработки событий | |
US8090700B2 (en) | Method for updating databases | |
CN109471851B (zh) | 数据处理方法、装置、服务器和存储介质 | |
US20120203797A1 (en) | Enhanced control to users to populate a cache in a database system | |
CN110637292B (zh) | 用于查询资源高速缓存的***和方法 | |
CN111414410B (zh) | 数据处理方法、装置、设备和存储介质 | |
CN109815240B (zh) | 用于管理索引的方法、装置、设备和存储介质 | |
CN111382182A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
US11036701B2 (en) | Data sampling in a storage system | |
US20110093688A1 (en) | Configuration management apparatus, configuration management program, and configuration management method | |
CN112882956A (zh) | 一种通过数据组合计算自动生成全场景自动化测试案例的方法、装置、存储介质及电子设备 | |
CN114398378B (zh) | 确定索引代价的方法和装置 | |
CN113625967B (zh) | 数据存储方法、数据查询方法及服务器 | |
CN114372065A (zh) | 访问数据库表的方法和装置 | |
CN114564501A (zh) | 一种数据库数据存储、查询方法、装置、设备及介质 | |
CN110678854B (zh) | 数据查询的方法和装置 | |
CN114116729B (zh) | 一种测试数据的处理方法和设备 | |
US20230087098A1 (en) | Data analysis method, apparatus and device |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |