CN106469174B - 数据读取方法和装置 - Google Patents
数据读取方法和装置 Download PDFInfo
- Publication number
- CN106469174B CN106469174B CN201510512989.9A CN201510512989A CN106469174B CN 106469174 B CN106469174 B CN 106469174B CN 201510512989 A CN201510512989 A CN 201510512989A CN 106469174 B CN106469174 B CN 106469174B
- Authority
- CN
- China
- Prior art keywords
- leaf node
- page number
- request
- leaf
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 40
- 238000013500 data storage Methods 0.000 claims description 8
- 238000005549 size reduction Methods 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 5
- 230000008878 coupling Effects 0.000 description 4
- 238000010168 coupling process Methods 0.000 description 4
- 238000005859 coupling reaction Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 238000004321 preservation Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012913 prioritisation Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- 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/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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种数据读取方法和装置,包括:在扫描索引聚簇表的过程中,扫描叶子节点并记录所述叶子节点的页码,将页码连续的叶子节点的I/O请求合并为一个I/O请求。通过一次I/O请求读取多个存储位置物理上连续的叶子节点的数据,从而使每次I/O请求读取的数据量增多,以充分利用全部磁盘的吞吐量,同时,能够使读取相同存储量大小的数据时所发起的I/O请求次数降低,避免受到磁盘IOPS参数限制,有效提高读取数据的效率。
Description
技术领域
本发明属于计算机技术领域,具体地说,涉及一种数据读取方法和装置。
背景技术
在关系型数据库中,通常使用二维表进行数据的存储。二维表通常有两种实现方法,一种是堆表的实现方式,一种是索引聚簇表的实现方式。其中,堆表是以无序的方式在空闲空间中存储数据;索引聚簇表根据索引键的顺序存储在B树结构上。
索引聚簇表的B树以页(page)为单位作为一个节点,以页码(page number)来定位一个页。节点包括三种类型,根(root)节点,分支(branch)节点和叶子(leaf)节点。数据库的数据保存在叶子节点。在读取数据的过程中,需要扫描索引聚簇表,扫描索引聚簇表的过程是:先定位到叶子节点;根据叶子节点之间的双向链表结构,顺序扫描其它叶子节点。根据扫描顺序依次读取每个叶子节点上的数据,每次I/O(Input/Output,输入/输出)请求一页大小的数据量,会导致数据读取效率较低。
发明内容
有鉴于此,本申请提供了一种数据读取方法和装置,以解决现有技术中数据读取效率较低的技术问题。
为了解决上述技术问题,本申请公开了一种数据读取方法,包括:在扫描索引聚簇表的过程中,扫描叶子节点并记录所述叶子节点的页码(page number),将页码连续的叶子节点的输入/输出(I/O)请求合并为一个I/O请求。
所述扫描叶子节点并记录所述叶子节点的页码包括:根据数据的索引键的键值定位到第一叶子节点;依次扫描所述第一叶子节点所在分支节点的叶子节点,判断相邻的两个叶子节点之间的页码是否连续;当相邻的两个叶子节点之间的页码连续时,记录叶子节点的页码并继续扫描;所述将页码连续的多个叶子节点的I/O请求合并为一个I/O请求包括:当相邻的两个叶子节点之间的页码不连续时,将所记录的页码连续的叶子节点的I/O请求合并为一个I/O请求。
所述方法还包括:预设所述叶子节点进行合并的最大数量;所述将页码连续的多个叶子节点的I/O请求合并为一个I/O请求还包括:当页码连续的叶子节点的数量大于或等于所述叶子节点进行合并的最大数量时,将所记录的页码连续的叶子节点的I/O请求合并为一个I/O请求。
所述扫描叶子节点并记录所述叶子节点的页码包括:根据数据的索引键的键值定位到保存所述数据的全部叶子节点;扫描所述全部叶子节点并记录每个叶子节点的页码;所述将页码连续的多个叶子节点的I/O请求合并为一个I/O请求包括:将所述全部叶子节点中页码连续的叶子节点的I/O请求分别进行合并。
所述方法还包括:预设所述叶子节点进行合并的最大数量;所述将所述全部叶子节点中页码连续的叶子节点的I/O请求分别进行合并包括:当所述全部叶子节点中页码连续的叶子节点的数量大于或等于所述叶子节点进行合并的最大数量时,根据所述叶子节点进行合并的最大数量进行合并。
所述叶子节点进行合并的最大数量,小于或等于磁盘吞吐量除以所述叶子节点的数量存储量的商。
为了解决上述技术问题,本申请还公开了一种数据读取装置,包括:扫描模块,用于在扫描索引聚簇表的过程中,扫描叶子节点并记录所述叶子节点的页码;合并模块,用于将页码连续的叶子节点的I/O请求合并为一个I/O请求。
所述扫描模块包括:第一定位子模块,用于根据数据的索引键的键值定位到第一叶子节点;第一扫描子模块,用于依次扫描所述第一叶子节点所在分支节点的叶子节点,并判断相邻的两个叶子节点之间的页码是否连续;记录子模块,用于当相邻的两个叶子节点之间的页码连续时,记录叶子节点的页码并继续扫描;所述合并模块包括:第一合并子模块,用于当相邻的两个叶子节点之间的页码不连续时,将所记录的页码连续的叶子节点的I/O请求合并为一个I/O请求。
所述装置还包括:第一设置模块,用于预设所述叶子节点进行合并的最大数量;所述合并模块还包括:第二合并子模块,用于当页码连续的叶子节点的数量大于或等于所述叶子节点进行合并的最大数量时,将所记录的页码连续的叶子节点的I/O请求合并为一个I/O请求。
所述扫描模块包括:第二定位子模块,用于根据数据的索引键的键值定位到保存所述数据的全部叶子节点;第二扫描子模块,用于扫描所述全部叶子节点并记录每个叶子节点的页码;所述合并模块包括:第三合并子模块,用于将所述全部叶子节点中页码连续的叶子节点的I/O请求分别进行合并。
所述装置还包括:第一设置模块,预设所述叶子节点进行合并的最大数量;所述合并模块包括:第四合并子模块,用于当所述全部叶子节点中页码连续的叶子节点的数量大于或等于所述叶子节点进行合并的最大数量时,根据所述叶子节点进行合并的最大数量进行合并。
所述叶子节点进行合并的最大数量,小于或等于磁盘吞吐量除以所述叶子节点的数量存储量的商。
与现有技术相比,本申请可以获得包括以下技术效果:通过一次I/O请求读取多个存储位置物理上连续的叶子节点的数据,从而使每次I/O请求读取的数据量增多,以充分利用全部磁盘的吞吐量,同时,能够使读取相同存储量大小的数据时所发起的I/O请求次数降低,避免受到磁盘IOPS参数限制,有效提高读取数据的效率。
当然,实施本申请的任一产品必不一定需要同时达到以上所述的所有技术效果。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是本申请实施例的一种数据读取方法的流程示意图;
图2是本申请实施例的一种数据读取方法的流程示意图;
图3是本申请实施例的索引聚簇表的示例性B树结构图;
图4是本申请实施例的一种数据读取方法的流程示意图;
图5是本申请实施例的一种数据读取方法的流程示意图;
图6是本申请实施例的一种数据读取方法的流程示意图;
图7是本申请实施例的一种数据读取装置的示例性结构框图。
具体实施方式
以下将配合附图及实施例来详细说明本发明的实施方式,藉此对本发明如何应用技术手段来解决技术问题并达成技术功效的实现过程能充分理解并据以实施。
对于存在的每次I/O请求一页大小的数据量,会导致数据读取效率较低的问题,本申请的发明人发现,现有的InnoDB数据库引擎提供了一种预读取方案,其工作原理是:在对叶子节点页(leaf page)进行扫描的过程中,启动一个异步后台线程,提前对下一个叶子节点页进行异步预读取,以提高读取效率,但每次I/O请求仍然是针对一个叶子节点页的数据,读取效率的提升在于异步线程的预读取,总体的I/O请求次数并没有减少,每次I/O请求的数据量仍然是一个叶子节点页的数据量,没有考虑磁盘的吞吐量以及IOPS(Input/Output Operations Per Second,每秒读写次数)等磁盘参数。
磁盘IOPS参数对磁盘每秒的响应I/O请求的次数有限制,每次I/O请求只读取一页数据,会延长数据读取的所耗费的时间。每次I/O请求所读取的一页数据的数据量远远小于磁盘的吞吐量(即传输带宽),例如,磁盘的吞吐量为100Mb/S。因此,本申请的发明人发现,现有的数据读取方案都没有考虑到磁盘针对物理连续的存储数据可以通过一次I/O请求读取的特点,并且没有充分利用磁盘的吞吐量,从而使得现有方案中针对磁盘的I/O请求次数较多,由于磁盘IOPS参数的限制,从而导致数据读取的效率偏低。
本申请的发明人针对磁盘针对物理连续的存储数据可以通过一次I/O请求读取的特点,并充分利用磁盘的吞吐量,提出了一种改进的数据读取方案。
在通过索引聚簇表进行数据存储时,数据根据主键(Primary Key)键值的顺序存储在索引聚簇表的B树结构中。在扫描索引聚簇表对数据进行读取时,可以判断扫描到的叶子节点的存储位置在物理上是连续。叶子节点的页码(page number)代表了该叶子节点的数据的存储位置在磁盘中的偏移量,因此叶子节点的数据的存储位置在物理上是否连续,可以通过全部叶子节点的页码是否连续来判断。对于在物理上连续的叶子节点的数据,利用磁盘针对物理连续的存储数据可以通过一次I/O请求读取的特点,通过一次I/O请求读取多个存储位置物理上连续的叶子节点的数据。从而使每次I/O请求读取的数据量增多,以充分利用全部磁盘的吞吐量,同时,能够使读取相同存储量大小的数据时所发起的I/O请求次数降低,避免受到磁盘IOPS参数限制,有效提高读取数据的效率。本申请实施例提供的数据读取方法,如图1所示,该方法包括以下步骤。
在步骤S10中,在扫描索引聚簇表的过程中,扫描叶子节点并记录叶子节点的页码。
在步骤S11中,将页码连续的叶子节点的I/O请求合并为一个I/O请求。
达到充分利用磁盘对于物理连续的I/O请求高吞吐量的能力,提高数据读取的效率。在数据读取请求量非常大的应用场景下,例如云存储服务器,本申请实施例提供的数据读取方法对数据读取效率的提升更加明显。
下面通过实施例对本申请提供的数据读取方法做进一步说明。
图2是本申请实施例提供的一种数据读取方法,适用于终端或服务器设备,该方法包括以下步骤。
在步骤S201中,根据数据的索引键的键值定位到第一叶子节点。
对于需要读取的数据,根据该数据的索引的索引键(索引聚簇表中的主键)的键值,在索引聚簇表中定位到第一叶子节点。如图3所示的索引聚簇表,根节点和分支节点分别记录主键键值的取值范围,根据该数据的主键键值,从根节点一直定位到相应的叶子节点。例如该数据的主键键值的范围是2≤pk≤230,则从包含主键键值为2的叶子节点开始读取数据。如图3所示,从根节点所示的主键键值的取值范围来看,主键键值范围是pk≥100000的节点位于页码为1350的分支节点,主键键值范围是0≤pk<100000的节点位于页码为2的分支节点,因此,定位到页码为2的分支节点,在页码为2的分支节点中,主键键值范围是0≤pk≤40的叶子节点是页码为3的叶子节点,因此定位到该页码为3的叶子节点为第一叶子节点。
在步骤S202中,依次扫描第一叶子节点所在分支节点的叶子节点,判断相邻的两个叶子节点之间的页码是否连续。当相邻的两个叶子节点之间的页码连续时,执行步骤S203;当相邻的两个叶子节点之间的页码不连续时执行步骤S204。
根据叶子节点主键键值的取值范围的顺序依次扫描该分支节点上的其他节点。如图3中,页码为3的第一叶子节点位于页码为2的分支节点,第一叶子节点的主键键值范围是0≤pk≤40,需要读取的数据的主键键值范围是2≤pk≤230,由于主键键值范围是0≤pk<100000的叶子节点都位于页码为2的分支节点,则继续在该页码为2的分支节点中扫描具有相应取值范围的叶子节点。主键键值范围是41≤pk≤100的第二叶子节点的页码为4,则继续扫描该第二叶子节点,并判断该第二叶子节点与第一叶子节点物理上是否连续,即通过这两个叶子节点的页码是否连续来判断。
在步骤S203中,记录叶子节点的页码,并返回步骤S202。
例如上例,此时记录第一叶子节点的页码“3”和第二叶子节点的页码“4”,返回步骤S202,继续扫描主键键值范围是101≤pk≤150的叶子节点。
在步骤S204中,将所记录的页码连续的叶子节点的I/O请求合并为一个I/O请求。
相邻叶子节点的页码连续,则根据主键键值的范围继续扫描下一个叶子节点,直到叶子节点的页码不连续时,将之前所有页码连续的叶子节点的I/O请求合并为一个I/O请求。
例如上例,继续扫描主键键值的取值范围是101≤pk≤150的第三叶子节点,该叶子节点的页码为5230,因此与上一个扫描到的第二叶子几点的页码“4”不连续。此时,将之前页码连续的第一叶子节点和第二叶子节点的I/O请求合并为一个I/O请求。这样通过合并后的一次I/O请求即可读取第一叶子节点和第二叶子节点的两页数据,使数据读取的效率提高。在有越多页码连续的叶子节点时,数据读取效率的提高越明显。
而磁盘的吞吐量是有限制的,如果合并过多的页码连续的叶子节点的I/O请求显得没有必要,因此可设置叶子节点进行合并的最大数量。如图4所示的一种数据读取方法包括以下步骤。
在步骤S301中,预设叶子节点进行合并的最大数量。
例如,设置一个会话(session)变量db_file_multipage_merge_count=128;表示在扫描的过程中,最多合并128个叶子节点。
在步骤S302中,根据数据的索引键的键值定位到第一叶子节点。
在步骤S303中,依次扫描第一叶子节点所在分支节点的叶子节点,判断相邻的两个叶子节点之间的页码是否连续。当相邻的两个叶子节点之间的页码连续时,执行步骤S304;当相邻的两个叶子节点之间的页码不连续时执行步骤S306。
在步骤S304中,记录叶子节点的页码并继续扫描。
在步骤S305中,当页码连续的叶子节点的数量大于或等于所述叶子节点进行合并的最大数量时,将所记录的页码连续的叶子节点的I/O请求合并为一个I/O请求。
例如页码连续的叶子节点的请求已达到预设的128个时,将这128个叶子节点的I/O请求合并为一个I/O请求,从而通过一次I/O请求完成128个连续的叶子节点的数据读取。如果每个叶子节点的数据存储量为4Kb,则合并后的一次I/O请求即可读取4Kb×128=512Kb的数据量,极大的提高了数据读取效率。
在步骤S306中,将所记录的页码连续的叶子节点的I/O请求合并为一个I/O请求。
此时记录的页码连续的叶子节点的数量还没有达到预设的叶子节点进行合并的最大数量,此时如果相邻的叶子节点不连续则将已记录的页码连续的叶子节点的I/O请求合并。
本申请实施例中预设的叶子节点进行合并的最大数量,可以结合磁盘吞吐量以及每个叶子节点的数据存储量来确定。通常,预设叶子节点进行合并的最大数量N≤磁盘吞吐量T÷叶子节点的数据存储量C。例如,磁盘吞吐量T=256Kb,每个叶子节点的数据存储量C=4Kb,则叶子节点进行合并的最大数量N≤64,从而为磁盘完成其他数据读写任务留有余量。
图5是本申请实施例提供的一种数据读取方法,适用于终端设备或服务器设备,该方法包括以下步骤。
在步骤S401中,根据数据的索引键的键值定位到保存该数据的全部叶子节点。
对于需要读取的数据,确定该数据的在索引聚簇表中的索引键(索引聚簇表中的主键)的键值范围;根据该范围定位到所有保存该数据的叶子节点。例如,该数据的主键键值范围是2≤pk≤230,索引聚簇表如图3所示。首先从根节点定位到主键键值范围在0≤pk≤100000的页码为“2”的分支节点,然后从该分支节点定位到主键键值范围是0≤pk≤41的页码为“3”的第一叶子节点,主键键值范围是41≤pk≤100的页码为“4”的第二叶子节点,主键键值范围是101≤pk≤150的页码为“5230”的第三叶子节点,主键键值范围是151≤pk≤180的页码为“7”的第四叶子节点,主键键值范围是181≤pk≤200的页码为“8”的第五叶子节点和主键键值范围是201≤pk≤230的页码为9的第六叶子节点。
在步骤S402中,扫描该全部叶子节点并记录每个叶子节点的页码。
扫描定位到的保存该数据的全部叶子节点并记录每个叶子节点的页码。例如,记录上例中的第一至第六叶子节点的页码“3、4、5230、7、8、9”。
在步骤S403中,将该全部叶子节点中页码连续的叶子节点的I/O请求分别进行合并。
在定位到的全部叶子节点中,将至少2个页码连续的叶子节点的I/O请求合并为一个I/O请求。例如上例中定位到的第一至第六叶子节点的页码分别为“3、4、5230、7、8、9”,则将页码为“3”的第一叶子节点和页码为“4”的第二叶子节点的I/O请求合并为一个I/O请求,将页码为“7”的第四叶子节点、页码为“8”的第五叶子节点和页码为“9”的第六叶子节点的I/O请求合并为一个I/O请求。经过合并后,使原本需要针对六个叶子节点的六次I/O请求,缩减为三次I/O请求,提高了数据读取效率。
在这种合并方式下,也可以同时考虑到磁盘的吞吐量而设置叶子节点进行合并的最大数量。如图6所示数据读取方法包括以下步骤。
在步骤S501中,预设叶子节点进行合并的最大数量。
例如设置叶子节点进行合并的最大数量为128个。
在步骤S502中,根据数据的索引键的键值定位到保存该数据的全部叶子节点。
在步骤S503中,扫描该全部叶子节点并记录每个叶子节点的页码。
在步骤S504中,当该全部叶子节点中页码连续的叶子节点的数量大于或等于所述叶子节点进行合并的最大数量时,根据该叶子节点进行合并的最大数量进行合并。
例如,记录的全部叶子节点的页码包括一段从页码“2”至页码“200”连续页码,共包括199个页码连续叶子节点。由于已预设叶子节点进行合并的最大数量为128个,则将从页码“2”至页码“129”的128个叶子节点的I/O请求合并为一个I/O请求,将剩余的从页码“130”至页码页码“200”的71个叶子节点的I/O请求合并为一个I/O请求,从而在兼顾磁盘的吞吐量的情况下尽可能提高数据读取效率。
同理该叶子节点进行合并的最大数量可以结合磁盘吞吐量以及每个叶子节点的数据存储量来确定,预设叶子节点进行合并的最大数量N≤磁盘吞吐量T÷叶子节点的数据存储量C。
图7是本申请实施例提供的一种数据读取装置,包括:
扫描模块60,用于在扫描索引聚簇表的过程中,扫描叶子节点并记录叶子节点的页码;
合并模块61,用于将页码连续的叶子节点的I/O请求合并为一个I/O请求。
在一个实施例中,该扫描模块60包括:
第一定位子模块,用于根据数据的索引键的键值定位到第一叶子节点;
第一扫描子模块,用于依次扫描第一叶子节点所在分支节点的叶子节点,并判断相邻的两个叶子节点之间的页码是否连续;
记录子模块,用于当相邻的两个叶子节点之间的页码连续时,记录叶子节点的页码并继续扫描;
该合并模块61包括:
第一合并子模块,用于当相邻的两个叶子节点之间的页码不连续时,将所记录的页码连续的叶子节点的I/O请求合并为一个I/O请求。
在一个实施例中,该装置还包括:
第一设置模块,用于预设叶子节点进行合并的最大数量;
该合并模块61还包括:
第二合并子模块,用于当页码连续的叶子节点的数量大于或等于叶子节点进行合并的最大数量时,将所记录的页码连续的叶子节点的I/O请求合并为一个I/O请求。
在一个实施例中,所述扫描模块60包括:
第二定位子模块,用于根据数据的索引键的键值定位到保存数据的全部叶子节点;
第二扫描子模块,用于扫描全部叶子节点并记录每个叶子节点的页码;
该合并模块61包括:
第三合并子模块,用于将全部叶子节点中页码连续的叶子节点的I/O请求分别进行合并。
在一个实施例中,该装置还包括:
第一设置模块,用于预设叶子节点进行合并的最大数量;
该合并模块61包括:
第四合并子模块,用于当全部叶子节点中页码连续的叶子节点的数量大于或等于叶子节点进行合并的最大数量时,根据叶子节点进行合并的最大数量进行合并。
在一个实施例中,叶子节点进行合并的最大数量,小于或等于磁盘吞吐量除以所述叶子节点的数量存储量的商。
本申请实施例提供的数据读取方法和装置可应用于关系型数据库服务(Relational Database Service,RDS),为用户快速搭建专业数据库服务,以提供专业的数据库备份、恢复及优化方案,使用户能专注于应用开发和业务发展。本申请实施例提供的数据读取方法和装置是RDS的基础支持方案,为了满足RDS的用户海量数据读取请求,提高用户数据的读取效率,利用本申请实施例提供的数据读取方法和装置将针对文件数据的读取请求中在物理上连续的I/O请求进行合并,从而减少对系统磁盘发起I/O请求的次数,并充分利用磁盘的吞吐量,通过每次I/O请求尽可能多的获取到连续的数据,提高RDS的数据读取效率。例如,从RDS系统中读取一个100Mb的文件,磁盘每个页存储的数据量为256Kb,如果按照现有的读取逻辑,读取每一页数据都发起一次I/O请求,则读取该数据需要发起400次I/O请求,如果磁盘IPOS为100,则读取该数据需要4秒。而采用本申请实施例提供的数据读取方法,将物理上连续的叶子节点的I/O请求合并,可以减少发起的I/O请求的次数,并减少读取该数据的时间。例如,磁盘吞吐量为20Mb/S,该数据中存在存储空间为20Mb且物理连续的80个叶子节点,则将这80个叶子节点的I/O请求合并为一个I/O请求,该数据中还存在其他存储空间小于20Mb的其他物理连续的叶子节点的I/O请求可以合并,全部合并之后读取该数据需要发起120次I/O请求,则读取该数据需要1.2秒,比现有的读取数据的方法降低了2.8秒。而RDS系统作为云数据服务器的存储系统,会承受海量的数据读取任务,因此采用本申请实施例提供的数据读取方法,能够显著提高整个RDS系统的数据读取效率。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
如在说明书及权利要求当中使用了某些词汇来指称特定组件。本领域技术人员应可理解,硬件制造商可能会用不同名词来称呼同一个组件。本说明书及权利要求并不以名称的差异来作为区分组件的方式,而是以组件在功能上的差异来作为区分的准则。如在通篇说明书及权利要求当中所提及的“包含”为一开放式用语,故应解释成“包含但不限定于”。“大致”是指在可接收的误差范围内,本领域技术人员能够在一定误差范围内解决所述技术问题,基本达到所述技术效果。此外,“耦接”一词在此包含任何直接及间接的电性耦接手段。因此,若文中描述一第一装置耦接于一第二装置,则代表所述第一装置可直接电性耦接于所述第二装置,或通过其他装置或耦接手段间接地电性耦接至所述第二装置。说明书后续描述为实施本发明的较佳实施方式,然所述描述乃以说明本发明的一般原则为目的,并非用以限定本发明的范围。本发明的保护范围当视所附权利要求所界定者为准。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的商品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种商品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的商品或者系统中还存在另外的相同要素。
上述说明示出并描述了本发明的若干优选实施例,但如前所述,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。
Claims (10)
1.一种数据读取方法,其特征在于,包括:
在扫描索引聚簇表的过程中,根据数据的索引键的键值定位到第一叶子节点;
依次扫描所述第一叶子节点所在分支节点的叶子节点,判断相邻的两个叶子节点之间的页码是否连续;
当相邻的两个叶子节点之间的页码连续时,记录叶子节点的页码并继续扫描;
当相邻的两个叶子节点之间的页码不连续时,将所记录的页码连续的叶子节点的I/O请求合并为一个I/O请求。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
预设所述叶子节点进行合并的最大数量;
所述将页码连续的叶子节点的I/O请求合并为一个I/O请求还包括:
当页码连续的叶子节点的数量大于或等于所述叶子节点进行合并的最大数量时,将所记录的页码连续的叶子节点的I/O请求合并为一个I/O请求。
3.如权利要求1所述的方法,其特征在于,所述记录叶子节点的页码,包括:
根据数据的索引键的键值定位到保存所述数据的全部叶子节点;
扫描所述全部叶子节点并记录每个叶子节点的页码;
所述将页码连续的叶子节点的I/O请求合并为一个I/O请求包括:
将所述全部叶子节点中页码连续的叶子节点的I/O请求分别进行合并。
4.如权利要求3所述的方法,其特征在于,所述方法还包括:
预设所述叶子节点进行合并的最大数量;
所述将所述全部叶子节点中页码连续的叶子节点的I/O请求分别进行合并包括:
当所述全部叶子节点中页码连续的叶子节点的数量大于或等于所述叶子节点进行合并的最大数量时,根据所述叶子节点进行合并的最大数量进行合并。
5.如权利要求2或4所述的方法,其特征在于,所述叶子节点进行合并的最大数量,小于或等于磁盘吞吐量除以所述叶子节点的数据存储量的商。
6.一种数据读取装置,其特征在于,包括:
扫描模块,用于在扫描索引聚簇表的过程中,根据数据的索引键的键值定位到第一叶子节点;
第一扫描子模块,用于依次扫描所述第一叶子节点所在分支节点的叶子节点,并判断相邻的两个叶子节点之间的页码是否连续;
记录子模块,用于当相邻的两个叶子节点之间的页码连续时,记录叶子节点的页码并继续扫描;
合并模块包括,用于当相邻的两个叶子节点之间的页码不连续时,将所记录的页码连续的叶子节点的I/O请求合并为一个I/O请求。
7.如权利要求6所述的装置,其特征在于,所述装置还包括:
第一设置模块,用于预设所述叶子节点进行合并的最大数量;
所述合并模块还包括:
第二合并子模块,用于当页码连续的叶子节点的数量大于或等于所述叶子节点进行合并的最大数量时,将所记录的页码连续的叶子节点的I/O请求合并为一个I/O请求。
8.如权利要求6所述的装置,其特征在于,所述扫描模块包括:
第二定位子模块,用于根据数据的索引键的键值定位到保存所述数据的全部叶子节点;
第二扫描子模块,用于扫描所述全部叶子节点并记录每个叶子节点的页码;
所述合并模块包括:
第三合并子模块,用于将所述全部叶子节点中页码连续的叶子节点的I/O请求分别进行合并。
9.如权利要求8所述的装置,其特征在于,所述装置还包括:
第一设置模块,预设所述叶子节点进行合并的最大数量;
所述合并模块包括:
第四合并子模块,用于当所述全部叶子节点中页码连续的叶子节点的数量大于或等于所述叶子节点进行合并的最大数量时,根据所述叶子节点进行合并的最大数量进行合并。
10.如权利要求7或9所述的装置,其特征在于,所述叶子节点进行合并的最大数量,小于或等于磁盘吞吐量除以所述叶子节点的数据存储量的商。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510512989.9A CN106469174B (zh) | 2015-08-19 | 2015-08-19 | 数据读取方法和装置 |
PCT/CN2016/094319 WO2017028718A1 (zh) | 2015-08-19 | 2016-08-10 | 数据读取方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510512989.9A CN106469174B (zh) | 2015-08-19 | 2015-08-19 | 数据读取方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106469174A CN106469174A (zh) | 2017-03-01 |
CN106469174B true CN106469174B (zh) | 2019-10-29 |
Family
ID=58050708
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510512989.9A Active CN106469174B (zh) | 2015-08-19 | 2015-08-19 | 数据读取方法和装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN106469174B (zh) |
WO (1) | WO2017028718A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108921774A (zh) * | 2018-06-08 | 2018-11-30 | 广州虎牙信息科技有限公司 | 模型的存储结构及相关编辑方法、装置、设备及存储介质 |
CN114374687B (zh) * | 2022-01-11 | 2024-04-16 | 同方有云(北京)科技有限公司 | 热磁存储与蓝光存储之间的文件传输方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103617136A (zh) * | 2013-12-04 | 2014-03-05 | 华为技术有限公司 | Scsi驱动侧及i/o请求的控制方法 |
CN103631624A (zh) * | 2013-11-29 | 2014-03-12 | 华为技术有限公司 | 读写请求的处理方法和装置 |
CN104503710A (zh) * | 2015-01-23 | 2015-04-08 | 福州瑞芯微电子有限公司 | 一种提高闪存写入速度的方法和装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101127045B (zh) * | 2007-09-25 | 2010-04-21 | 中兴通讯股份有限公司 | 数据库可重复读实现方法、装置及数据库管理系统 |
CN102651008B (zh) * | 2011-02-28 | 2015-06-17 | 国际商业机器公司 | 在关系数据库中组织数据记录的方法和设备 |
CN103150167B (zh) * | 2013-03-21 | 2015-07-08 | 腾讯科技(深圳)有限公司 | 一种软件运行加速的方法和装置 |
CN103336669B (zh) * | 2013-05-21 | 2015-12-02 | 华中科技大学 | 一种基于固态盘内部并行性的i/o调度方法及调度器 |
-
2015
- 2015-08-19 CN CN201510512989.9A patent/CN106469174B/zh active Active
-
2016
- 2016-08-10 WO PCT/CN2016/094319 patent/WO2017028718A1/zh active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103631624A (zh) * | 2013-11-29 | 2014-03-12 | 华为技术有限公司 | 读写请求的处理方法和装置 |
CN103617136A (zh) * | 2013-12-04 | 2014-03-05 | 华为技术有限公司 | Scsi驱动侧及i/o请求的控制方法 |
CN104503710A (zh) * | 2015-01-23 | 2015-04-08 | 福州瑞芯微电子有限公司 | 一种提高闪存写入速度的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2017028718A1 (zh) | 2017-02-23 |
CN106469174A (zh) | 2017-03-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3869316B1 (en) | Hybrid storage | |
EP2631821B1 (en) | File storage method and device thereof | |
CN104615594B (zh) | 一种数据更新方法及装置 | |
CN103064639A (zh) | 数据存储方法及装置 | |
CN108897492B (zh) | 一种数据写入方法和装置 | |
CN103500072A (zh) | 数据迁移方法及数据迁移装置 | |
CN110515549B (zh) | 一种数据迁移方法及装置 | |
CN106201652B (zh) | 一种数据处理方法及虚拟机 | |
US10116329B1 (en) | Method and system for compression based tiering | |
CN110737401B (zh) | 用于管理独立冗余磁盘阵列的方法、设备和计算机程序产品 | |
US20180196610A1 (en) | Database Memory Monitoring and Defragmentation of Database Indexes | |
US10394453B1 (en) | Method and system for choosing an optimal compression algorithm considering resources | |
CN106844491B (zh) | 一种临时数据的写入、读取方法及写入、读取装置 | |
CN106469174B (zh) | 数据读取方法和装置 | |
EP2811410A1 (en) | Monitoring record management method and device | |
CN106020717B (zh) | 数据处理方法及电子设备 | |
US9177274B2 (en) | Queue with segments for task management | |
CN115408149A (zh) | 一种时序存储引擎内存设计及分配方法及装置 | |
US11392510B2 (en) | Management method of cache files in storage space and recording device for storing cache files | |
CN207133828U (zh) | 非结构化数据归档装置 | |
EP3093772B1 (en) | Data processing method, data writing method, and related apparatus | |
US11809733B2 (en) | Systems and methods for object migration in storage devices | |
CN109508140B (zh) | 存储资源管理方法、装置、电子设备及电子设备、系统 | |
US9830104B2 (en) | Columnar data storage on tape partition | |
US9747056B1 (en) | Dynamic partitioning for tape medium |
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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20240105 Address after: Room 1-2-A06, Yungu Park, No. 1008 Dengcai Street, Sandun Town, Xihu District, Hangzhou City, Zhejiang Province Patentee after: Aliyun Computing Co.,Ltd. Address before: A four-storey 847 mailbox in Grand Cayman Capital Building, British Cayman Islands Patentee before: ALIBABA GROUP HOLDING Ltd. |
|
TR01 | Transfer of patent right |