CN106681939A - 磁盘页面的读取方法和装置 - Google Patents
磁盘页面的读取方法和装置 Download PDFInfo
- Publication number
- CN106681939A CN106681939A CN201710001924.7A CN201710001924A CN106681939A CN 106681939 A CN106681939 A CN 106681939A CN 201710001924 A CN201710001924 A CN 201710001924A CN 106681939 A CN106681939 A CN 106681939A
- Authority
- CN
- China
- Prior art keywords
- page
- read
- operational order
- needing
- scan
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0884—Parallel mode, e.g. in parallel with main memory or CPU
-
- 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/242—Query formulation
- G06F16/2433—Query languages
-
- 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/24552—Database cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/16—General purpose computing application
- G06F2212/163—Server or database system
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种磁盘页面的读取方法和装置。所述方法包括:接收数据库操作指令,并从页面缓冲池中查找所述数据库操作指令所需的页面;若未在页面缓冲池中查找到所述页面,则根据所述数据库操作指令类型判断是否属于预设数据库操作指令类型集合中的一种;若所述数据库操作指令类型属于预设数据库操作指令类型集合中的一种,则根据数据库操作指令类型确定需要预读取的页面数量;根据需要预读取的页面的数量,从磁盘中读取需要预读取的页面。利用本发明可使得预读取的页面数量适当,降低了页面缓冲池资源的非必要占用并提高了磁盘读取效率。
Description
技术领域
本发明涉及一种磁盘读取方法及装置,特别是涉及一种磁盘页面的读取方法和装置。
背景技术
当从磁盘页面读取数据时,传统方法通常先将数据读取到内存中,以减少磁盘输入输出操作。除此以外,为了提高数据使用效率,预读取技术也被引进到数据库内核中来优化数据库性能。这样,除了需要使用的数据所在的页面被读取以外,与其相邻的其他页面也被预先读取到缓冲池中。
这种方法虽然在某种程度上提高了磁盘页面读取的效率,但仅能按照经验设置预读取页面的数量,具有一定的盲目性。如果预读取的页面并非数据库内核接下来将要读取的页面,此时不需要读取的页面甚至已经将缓存中的有效页面替换出去,导致数据库性能降低。同时,如果预读取的页面数量过少,也将导致预读取的数据不足而在后续的读取中产生大量的磁盘读取请求。传统磁盘页面的预读取方法不仅没有提高磁盘读取效率,反而降低了磁盘读取的效率。
发明内容
基于此,有必要针对磁盘页面的预读取效率的问题,提供一种磁盘页面的读取方法及装置。
一种磁盘页面的读取方法,包括:
接收数据库操作指令;
从页面缓冲池中查找所述数据库操作指令所需的页面;
若未在页面缓冲池中查找到所述页面,则判断所述数据库操作指令类型是否属于预设数据库操作指令类型集合;
若所述数据库操作指令类型属于预设数据库操作指令类型集合,则根据数据库操作指令类型确定需要预读取的页面数量;以及
根据需要预读取的页面的数量,从磁盘中读取需要预读取的页面到页面缓冲池中。
一种磁盘页面的读取装置,所述装置包括:
指令接收模块,用于接收数据库操作指令;
页面查找模块,用于从页面缓冲池中查找所述数据库操作指令所需的页面;
指令类型判断模块,用于若未在页面缓冲池中查找到所述页面,则判断所述数据库操作指令类型是否属于预设数据库操作指令类型集合;
页面数量确定模块,用于若所述数据库操作指令类型属于预设数据库操作指令类型集合,则根据数据库操作指令类型确定需要预读取的页面数量;以及
页面读取模块,用于根据需要预读取的页面的数量,从磁盘中读取需要预读取的页面到页面缓冲池中。
上述磁盘页面的读取方法和装置,预先设置了数据库操作指令集合,在从页面缓冲池中未查找到数据库操作指令所需的页面时,判断数据库操作指令类型是否属于预设数据库操作指令类型集合。若数据库操作指令类型属于预设数据库操作指令类型集合,则进一步确定需要预读取的页面的数量,而不是单纯地不进行任何判断仅按照经验设置预读取既定数量的页面。利用本发明可使得预读取的页面数量适当,降低了页面缓冲池资源的非必要占用并提高了磁盘读取效率。
附图说明
图1为一个实施例中磁盘页面的读取方法的流程示意图;
图2为一个实施例中数据库预设操作指令类型获取需要预读取的页面的示意图;
图3为一个实施例中对需要预读取的页面排序分组的流程示意图;
图4为一个实施例中磁盘页面的读取装置的结构框图;
图5为一个实施例中页面数量确定模块的结构框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,在一个实施例中,提供了磁盘页面的读取方法的流程示意图,包括如下步骤:
步骤102:接收数据库操作指令。
所述接收的数据库操作指令用于对页面进行操作,比如修改页面上的数据或者读取页面上的数据等。
步骤104:从页面缓冲池中查找所述数据库操作指令所需的页面。
要对数据进行操作,则需要在页面缓冲池中查找步骤102中所述的所需的页面。
步骤106:若未在页面缓冲池中查找到所述页面,则判断所述数据库操作指令类型是否属于预设数据库操作指令类型集合。
在页面缓冲池中未查找到所需的页面时,则根据所述数据库操作指令类型,判断是否需要从磁盘中读取此页面到缓冲池中从而得到所需页面。通过将数据库操作指令类型与预设数据库操作指令类型集合中的数据库操作指令进行比较,判断是否属于预设数据库操作指令类型集合。在本实施例中,首先通过判断操作指令类型来确定是否需要读取包括所需读取的页面在内的一批页面,或者仅读取所需的页面。
步骤108:若所述数据库操作指令类型属于预设数据库操作指令类型集合中的一种,则根据数据库操作指令类型确定需要预读取的页面数量。
本实施例中,针对不同的数据库操作指令类型,可采取不同的计算方法进行精确的估算,从而得到需要预读取的页面的数量。
步骤110:根据需要预读取的页面的数量,从磁盘中读取需要预读取的页面到页面缓冲池中。
在确定了需要预读取的页面的数量之后,生成工作线程并行执行预读取页面到页面缓冲池中的操作。
上述磁盘页面的读取方法,先通过判断数据库操作指令类型是否属于预设数据库操作指令类型集合,来确定是否需要进行预读取,然后再针对需要进行预读取的数据库操作指令类型,分别计算需要预读取的页面的数量,使得预读取的页面数量适中,降低了页面缓冲池资源的非必要占用,并提高了磁盘读取效率。
在一个实施例中,步骤102所述的数据库操作指令类型主要包括数据库中的四大类语言DDL(数据定义语言),DML(数据操纵语言),DCL(数据控制语言),DQL(数据查询语言)和数据库执行计划中所包含的运算指令,比如全表扫描操作指令、全索引扫描操作指令、索引范围扫描操作指令、索引叶节点扫描操作指令、日志扫描操作指令及事务的回滚操作指令等。通过解析指令,得出数据库需要对某些数据执行相应操作,而这些数据存在于某一页面或者某些页面上,然后从页面缓冲池中查找这些页面。
在一个实施例中,在步骤108中,若未在页面缓冲池中查找到步骤106中操作所需的页面,则说明此页面不在页面缓冲池中,此时则需要从磁盘中读取所需的页面到页面缓冲池中,以便页面被使用。在从磁盘中读取页面时,不只读取所需的页面,还会读取包含所需页面在内的一批页面。在本发明的本实施例中,首先通过判断操作指令类型是否是预设数据库操作指令类型集合中的一种来确定是否需要读取一批页面,如果属于预设操作指令集合,则读取一批页面。否则,则不需要读取一批页面,仅读取所需的页面。
在本实施例中,所述的预设数据库操作指令集合至少包括下列六种:全表扫描操作指令、全索引扫描操作指令、索引范围扫描操作指令、索引叶节点的扫描、日志扫描操作指令及事务回滚操作指令。上述六种操作共有的特点是均会有大量针对页面的操作,所以需要对操作所需的页面数量进行计算,来保证读取合适数量的页面。
在本实施例中,所述判断数据库操作指令类型是否属于预设数据库操作指令类型集合中的一种可以通过在系统中设置操作指令监测程序来实现。比如,当监测程序监测到操作指令是预设数据库操作指令类型集合中的一种时,则开始准备获取需要预读取的页面的数量。具体地,操作指令监测程序可以通过字符串比较来实现监测。通常操作指令的关键字是一个字符串,比如ROLLBACK(回滚),TABLE SCAN(表扫描)等。通过字符串比较函数、其他函数或其他方法,可以判断出操作指令中是否含有相应的关键字。若含有相应的关键字,则所述操作指令类型属于预设操作指令集合中的一个。应当理解,本实施例仅列举了一种判断的方法,其他方法均可以用于判断数据库操作指令类型是否属于预设数据库操作指令类型集合中的一种。
在步骤108中,若所述数据库操作指令类型属于预设数据库操作指令类型集合中的一种,则根据数据库操作指令类型确定需要预读取的页面数量。
步骤108对需要预读取的页面的数量进行精确估算,所述六种操作指令类型所对应的页面的数量采取的估算方法不同。
如图2所示,提供了数据库预设操作指令类型获取需要预读取的页面的示意图,所述数据库操作指令类型包括:全表扫描操作指令、全索引扫描操作指令、索引范围扫描操作指令、索引叶节点扫描操作指令、日志扫描操作指令及事务回滚操作指令。数据库根据数据库操作指令类型,针对需要操作的数据及其结构来进行相应的操作(例如:全表扫描、全索引扫描、索引范围扫描、索引叶节点扫描、日志扫描及事务的回滚),从而获取需要预读取的页面。其中,需要预读取的页面可以是连续的也可以是非连续的页面。
在一个实施例中,具体方法如下:
若数据库操作指令类型为全表扫描操作指令或全索引扫描操作指令,步骤108中根据数据库操作指令类型确定需要预读取的页面的数量的步骤具体包括:获取全表扫描或全索引扫描所需扫描的表的总数据量;将表的总数据量中预设比例的数据量确定为所需读取的数据量;根据所需读取的数据量获取需要预读取的页面的数量。
具体地,首先获取全表扫描或全索引扫描所需扫描的表的总数据量。在一个实施例中,在获取表的总数据量之前,可先根据表所占extent的个数判断表的大小。全表扫描通常是对堆表的扫描,全索引扫描通常是对索引组织表的扫描,其本质上都是对表的扫描,而表在数据库中存储时对应的空间为多个extent,所以可以根据操作所需扫描的表所占的extent个数来判断其大小。
其中,extent是指分配给对象的任何连续块或者区间。extent包含多个连续的页面,一个extent通常可以容纳8个连续的页。其中,extent的个数和地址通常都记录在表或索引的元数据中,所以可以通过获取表或索引的元数据来获取表和索引所占的extent个数。在本发明的一个实施例中,可以通过表所占的extent的个数来区分表的大小。若extent的个数大于等于预设默认值,则判定表为大表;若extent的个数小于预设默认值时,则判定表为小表,例如预设默认值可以设置为10000,即:若extent的个数大于等于10000个extent,则判定表为大表;若extent的个数小于10000个extent,则判定表为小表。
在判定表的大小后,则根据表的数据量来确定需要预读取的页面的数量。表中含有大量的数据,而这些数据是被写在页上的。数据量越大则需占用的页越多。通常,每一页所能容纳的数据为8060字节。表的数据量通常记录在数据库的目录(catalog)中,可以通过读取catalog来获取表的总数据量。
然后,将表的总数据量中预设比例的数据量确定所需读取的数据量,例如依据表的大小来确定读取表的数据量的一定预设比例的数据量,这些数据量所占的页数即为需要预读取的页面的数量。表的大小决定了需要预读取的数据量,从而确定了需要预读取的页面的数量。具体地,当表为大表时,则确定预读取表的总数据量的预设比例x的数据量,通过所述总数据量的预设比例x的数据量可以计算出需要预读取的数据量所占的页的个数,即需要预读取的页面的数量,例如x取值范围可为5%-10%,默认值可为5%。同理,当表为小表时,则确定预读取表的总数据量的预设比例y的数据量,通过总数据量的预设比例y的数据量可以计算出其所占的页数,即需要预读取的页面的数量,例如y的取值范围可为20%-100%,默认值可为20%。从上述数据也可以看出:当表较大时,只预读取较少的页面,而表较小时,则预读取较多的页面,甚至是表所占的全部页面(即y取值为100%时的情况)。
若数据库操作指令类型为索引范围扫描操作指令或索引叶节点扫描操作指令,步骤108中根据数据库操作指令类型确定需要预读取的页面的数量的步骤具体包括:获取索引范围扫描或索引叶节点扫描的请求次数;根据所述请求次数获取需要预读取的页面的数量。
具体地,首先计算索引扫描的请求的次数。索引范围扫描从索引的根节点出发,找到第一个匹配的条目所在的索引叶节点之后开始遍历索引结构,而索引叶节点扫描则是直接对索引叶节点进行索引结构遍历,其本质上都是对索引叶节点进行索引结构遍历,所以都可以基于索引结构遍历的特点,计算出需要预读取的页面数量。具体说明如下:
在遍历索引叶节点的索引结构时,每次首先从索引结构中的索引条目中获取行地址,然后通过行地址访问行获取对应的表数据,表数据所在的页(可为一个或多个)即为需要预读取的页面。接下来,索引叶节点被再次访问来获取下一个索引条目的行地址,然后通过相同的过程确定需要预读取的页面。每次扫描请求都重复同样的过程,直到整个索引叶节点中的索引条目全部被读出。基于这样的机制,通过每次请求,可以得到每次请求所需要的页面的数量,所有的扫描请求次数所需的页面的数量加起来即得到需要预读取的页面的数量。
若数据库操作指令类型为日志扫描操作指令或事务回滚操作指令,步骤108中根据所述数据库操作指令类型确定需要预读取的页面的数量的步骤具体包括:根据日志中所记录的被修改的数据所在的页面的数量,得到需要预读取页面的数量的初始值;当所述初始值大于等于预设第一阈值时,将需要预读取的页面的数量确定为占初始值预设比例的页面的数量;当所述初始值小于所述预设第一阈值且大于预设第二阈值时,将需要预读取的页面的数量确定为所述初始值;当所述初始值小于等于所述预设第二阈值时,将需要预读取的页面的数量确定为所述预设第二阈值。
具体地,通过日志中所记录的中被修改的数据在的页面的数量获取需要预读取的页面的数量,其中,所述日志类型至少包括逻辑日志和物理日志。日志扫描和事务的回滚都需要读取日志并根据日志中所涉及的需要读取的页面进行恢复的,所以都可以通过日志中记录的相关页面获得需要预读取的页面的数量。
在事务回滚时,首先要根据这个事务所涉及的数据对象获取REDO(重做)和UNDO(撤销)日志,这些日志中包含了需要REDO和UNDO的数据和数据所在的页面的地址,通过读取这些页面就得到了需要REDO和UNDO的页面,而这些数据所在的页面的数量就是需要预读取的页面的数量的初始值。
如果存在多个需要回滚的事务,则将每个事务所需要预读取的页面的数量求和即得到需要预读取的页面的数量的初始值。
每个事务中需要REDO和UNDO的页面通常都要跨越多个连续页面。若需要预读取的页面的数量的初始值大于或等于预设第一阈值,则取所述初始值的预设比例的页面数量作为需要预读取的页面的数量;若所述初始值小于预设第一阈值且大于预设第二阈值时,则取所述初始值作为需要预读取的页面数量;若所述初始值小于等于预设第二阈值,则需要预读取的页面的数量确定为预设第二阈值。
在本发明的一个实施例中,可以设置预设第一阈值为80,设置预设第二阈值为8,设置预设比例为20%。其中,预设第一阈值的默认值一般为80个页面,预设第一阈值取值范围通常不超过100个页面。具体地,需要预读取的页面的数量的初始值大于等于预设第一阈值(例如80),可以取初始值的预设比例(例如20%)作为需要预读取的页面的数量;需要预读取的页面的数量的初始值大于预设第二阈值(例如8)且小于预设第一阈值(例如80)时,则取初始值作为需要预读取的页面数量;需要预读取的页面的数量的初始值小于预设第二阈值(例如8)时,则需要预读取的页面数量为8。
在日志扫描操作指令中,计算需要预读取的页面的数量的方法也如上所述。
进一步地,在获取了需要预读取的页面的数量之后,即可以进行预读取。为了进一步提高效率,在预读取准备阶段还引入了对需要预读取的页面的进行排序。如图3所示,提供了对需要预读取的页面排序分组的流程示意图。具体步骤如下:
步骤202:对所述需要预读取的页面的物理地址排序。
需要预读取的页面的物理地址是无序的,此时如果直接进行读取则会使磁头在磁盘上的方向不确定,即某一时刻逆时针转动而下一时刻又顺时针转动,这样会降低读取的效率。所以对需要预读取的页面的物理地址进行排序,得到按照物理地址大小排列的顺序物理地址序列。此时再进行读取,则可以保证磁盘头在读取时朝统一方向转动,顺序读取。其中,排序方法可以是任意排序方法,包括但不限于快速排序、冒泡排序、插入排序、选择排序等。
步骤204:根据排序结果和需要预读取的页面的数量,分组读取需要预读取的页面到页面缓冲池中。
在进行预读取时,每个输入输出操作都读取一组页面,所以需要对预读取后的页面按照物理地址进行分组。比如,排序后的物理地址序列中含有30个地址,则可以将其分组为每10个一组的三组页面,然后在执行输入输出操作时每次读取一组。应当理解,本实施例中的分组方法仅为一种,其他分组方法均可用于对页面按照物理地址进行分组。
另外,在步骤202之前,为了进一步提高读取效率,还可包括步骤:从已经获取的物理地址中剔除已经在页面缓冲池中的页面的物理地址。
通常物理地址存储在物理地址序列当中。将已经获取的需要预读取的页面的物理地址序列中的物理地址与已经在页面缓冲池中的页面的物理地址序列中的物理地址进行比较,若有相等的地址,则将此地址从已经获取的需要预读取的页面的物理地址序列中删除。将所有地址都比较完之后,即得到了经过剔除后的需要预读取的页面的物理地址。
在对需要于读取的页面分组之后,根据之前确定的需要预读取的页面的数量,生成工作线程并行执行预读取页面的操作。
请一并参阅图4,图4为一个实施例中磁盘页面的读取装置。所述装置包括:指令接收模块1010,页面查找模块1020,指令类型判断模块1030,页面数量确定模块1040和页面读取模块1050。
其中,指令接收模块1010,用于接收数据库操作指令,对页面进行操作,比如修改页面上的数据或者仅是读取页面上的数据。
页面查找模块1020,用于从页面缓冲池中查找所述数据库操作指令所需的页面,对数据进行操作,则需要在页面缓冲池中查找指令接收模块1010中所述指令所需的页面。
指令类型判断模块1030,用于若未在页面缓冲池中查找到所述页面,则判断所述数据库操作指令类型是否属于预设数据库操作指令类型集合。
在页面缓冲池中未查找到所需的页面时,指令类型判断模块1030则根据所述数据库操作指令类型,判断是否需要从磁盘中读取此页面到页面缓冲池中从而得到所需页面。通过将数据库操作指令类型与预设数据库操作指令类型集合中的数据库操作指令进行比较,判断是否属于预设数据库操作指令类型集合。
页面数量确定模块1040,用于若所述数据库操作指令类型属于预设数据库操作指令类型集合,则根据数据库操作指令类型确定需要预读取的页面数量。
若所述数据库操作指令类型属于预设数据库操作指令类型集合,则根据数据库操作指令类型确定需要预读取的页面数量。针对不同的数据库操作指令类型,可采取不同的计算方法进行精确的估算,得到需要预读取的页面的数量。
页面读取模块1050,用于根据需要预读取的页面的数量,从磁盘中读取需要预读取的页面到页面缓冲池中。
在确定了需要预读取的页面的数量之后,页面读取模块1050生成工作线程并行执行预读取页面的操作。
在一个实施例中,所述预设数据库操作指令集合包括:全表扫描操作指令、全索引扫描操作指令、索引范围扫描操作指令、索引叶节点扫描操作指令、日志扫描操作指令及事务回滚操作指令。
在一个实施例中,所述页面读取模块1050还包括:
排序单元1050a,用于对所述需要预读取的页面的物理地址排序。排序单元1050a对需要预读取的页面的物理地址进行排序,得到按照物理地址大小排列的顺序物理地址序列。
读取单元1050b,用于根据排序结果和需要预读取的页面的数量,分组读取需要预读取的页面到页面缓冲池中。在进行预读取时,读取单元1050b根据排序结果分组读取需要预读取的页面,需要预读取的页面的个数为步骤108中确定的需要预读取的页面的数量。
图5为一个实施例中页面数量确定模块1040的结构框图。图5将结合图4进行描述。
在一个实施例中,页面数量确定模块1040可包括:全扫描页面数量确定单元1040a,用于若数据库操作指令类型为全表扫描操作指令或全索引扫描操作指令,获取全表扫描或全索引扫描所需扫描的表的总数据量;将表的总数据量中预设比例的数据量确定为所需读取的数据量;根据所需读取的数据量获取需要预读取的页面的数量。
在一个实施例中,页面数量确定模块1040还可包括:索引扫描页面数量确定单元1040b,用于若数据库操作指令类型为索引范围扫描操作指令或索引叶节点扫描操作指令,获取索引范围扫描或索引叶节点扫描的请求次数;根据所述请求次数获取需要预读取的页面的数量。在一个实施例中,页面数量确定模块1040还可包括:回滚页面数量确定单元1040c,用于若数据库操作指令类型为日志扫描操作指令或事务回滚操作指令,根据日志中所记录的被修改的数据所在的页面的数量,得到需要预读取页面的数量的初始值;当所述初始值大于等于预设第一阈值时,所述回滚页面数量确定单元将需要预读取的页面的数量确定为占初始值预设比例的页面的数量;当所述初始值小于预设第一阈值且大于预设第二阈值时,所述回滚页面数量确定单元将需要预读取的页面的数量确定为所述初始值;当所述初始值小于等于预设第二阈值时,所述回滚页面数量确定单元将需要预读取的页面的数量确定为预设第二阈值。
本发明实施例提供的磁盘页面的读取装置适用于上述任意实施例提供的磁盘页面的读取方法,具备相应的功能和有益效果,在此不再赘述。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (13)
1.一种磁盘页面的读取方法,其特征在于,所述方法包括:
接收数据库操作指令;
从页面缓冲池中查找所述数据库操作指令所需的页面;
若未在页面缓冲池中查找到所述页面,则判断所述数据库操作指令类型是否属于预设数据库操作指令类型集合;
若所述数据库操作指令类型属于预设数据库操作指令类型集合,则根据数据库操作指令类型确定需要预读取的页面数量;以及
根据需要预读取的页面的数量,从磁盘中读取需要预读取的页面到页面缓冲池中。
2.根据权利要求1所述的磁盘页面的读取方法,其特征在于,所述预设数据库操作指令类型集合包括:全表扫描操作指令、全索引扫描操作指令、索引范围扫描操作指令、索引叶节点扫描操作指令、日志扫描操作指令及事务的回滚操作指令。
3.根据权利要求2所述的磁盘页面的读取方法,其特征在于,若所述数据库操作指令类型为全表扫描操作指令或全索引扫描操作指令,根据所述数据库操作指令类型确定需要预读取的页面的数量的步骤还包括:
获取全表扫描或全索引扫描所需扫描的表的总数据量;
将表的总数据量中预设比例的数据量确定为所需读取的数据量;以及
根据所需读取的数据量获取需要预读取的页面的数量。
4.根据权利要求2所述的磁盘页面的读取方法,其特征在于,若所述数据库操作指令类型为索引范围扫描操作指令或索引叶节点扫描操作指令,根据所述数据库操作指令类型确定需要预读取的页面的数量的步骤还包括:
获取索引范围扫描或索引叶节点扫描的请求次数;以及
根据所述请求次数获取需要预读取的页面的数量。
5.根据权利要求2所述的磁盘页面的读取方法,其特征在于,若所述数据库操作指令类型为日志扫描操作指令或事务回滚操作指令,根据所述数据库操作指令类型确定需要预读取的页面的数量的步骤还包括:
根据日志中所记录的被修改的数据所在的页面的数量,得到需要预读取的页面的数量的初始值;
当所述初始值大于等于预设第一阈值时,将需要预读取的页面的数量确定为占初始值预设比例的页面的数量;
当所述初始值小于所述预设第一阈值且大于预设第二阈值时,将需要预读取的页面的数量确定为所述初始值;以及
当所述初始值小于等于所述预设第二阈值时,将需要预读取的页面的数量确定为所述预设第二阈值。
6.根据权利要求1所述的磁盘页面的读取方法,其特征在于,所述根据需要预读取的页面的数量,从磁盘中读取需要预读取的页面的步骤包括:
对所述需要预读取的页面的物理地址排序;以及
根据排序结果和需要预读取的页面的数量,分组读取需要预读取的页面到页面缓冲池中。
7.根据权利要求6所述的磁盘页面的读取方法,其特征在于,在对所述需要预读取的页面的物理地址排序的步骤之前还包括:
从所述需要预读取的页面的物理地址中剔除已经在页面缓冲池中的页面的物理地址。
8.一种磁盘页面的读取装置,所述装置包括:
指令接收模块,用于接收数据库操作指令;
页面查找模块,用于从页面缓冲池中查找所述数据库操作指令所需的页面;
指令类型判断模块,用于若未在页面缓冲池中查找到所述页面,则判断所述数据库操作指令类型是否属于预设数据库操作指令类型集合;
页面数量确定模块,用于若所述数据库操作指令类型属于预设数据库操作指令类型集合,则根据数据库操作指令类型确定需要预读取的页面数量;以及页面读取模块,用于根据需要预读取的页面的数量,从磁盘中读取需要预读取的页面到页面缓冲池中。
9.根据权利要求8所述的磁盘页面的读取装置,其特征在于,所述预设数据库操作指令类型集合包括:全表扫描操作指令、全索引扫描操作指令、索引范围扫描操作指令、索引叶节点扫描操作指令、日志扫描操作指令及事务回滚操作指令。
10.根据权利要求8所述的磁盘页面的读取装置,其特征在于,所述页面数量确定模块包括:
全扫描页面数量确定单元,用于若所述数据库操作指令类型为全表扫描操作指令或全索引扫描操作指令,获取全表扫描或全索引扫描所需扫描的表的总数据量;将表的总数据量中预设比例的数据量确定为所需读取的数据量;根据所需读取的数据量获取需要预读取的页面的数量。
11.根据权利要求8所述的磁盘页面的读取装置,其特征在于,所述页面数量确定模块还包括:
索引扫描页面数量确定单元,用于若所述数据库操作指令类型为索引范围扫描操作指令或索引叶节点扫描操作指令,获取索引范围扫描或索引叶节点扫描的请求次数;根据所述请求次数获取需要预读取的页面的数量。
12.根据权利要求8所述的磁盘页面的读取装置,其特征在于,所述页面数量确定模块还包括:
回滚页面数量确定单元,用于若所述数据库操作指令类型为日志扫描操作指令或事务回滚操作指令,根据日志中所记录的被修改的数据所在的页面的数量,得到需要预读取的页面的数量的初始值;
当所述初始值大于等于预设第一阈值时,所述回滚页面数量确定单元将需要预读取的页面的数量确定为占初始值预设比例的页面的数量;
当所述初始值小于预设第一阈值且大于预设第二阈值时,所述回滚页面数量确定单元将需要预读取的页面的数量确定为所述初始值;
当所述初始值小于等于预设第二阈值时,所述回滚页面数量确定单元将需要预读取的页面的数量确定为预设第二阈值。
13.根据权利要求8所述的磁盘页面的读取装置,其特征在于,所述页面读取模块还包括:
排序单元,用于对所述需要预读取的页面的物理地址排序;以及
读取单元,用于根据排序结果和需要预读取的页面的数量,分组读取需要预读取的页面到页面缓冲池中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710001924.7A CN106681939B (zh) | 2017-01-03 | 2017-01-03 | 磁盘页面的读取方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710001924.7A CN106681939B (zh) | 2017-01-03 | 2017-01-03 | 磁盘页面的读取方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106681939A true CN106681939A (zh) | 2017-05-17 |
CN106681939B CN106681939B (zh) | 2019-08-23 |
Family
ID=58850165
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710001924.7A Active CN106681939B (zh) | 2017-01-03 | 2017-01-03 | 磁盘页面的读取方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106681939B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117130952A (zh) * | 2023-01-10 | 2023-11-28 | 荣耀终端有限公司 | 预读方法和预读装置 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1737745A (zh) * | 2004-08-18 | 2006-02-22 | 华为技术有限公司 | 一种磁盘阵列数据的读写方法及并行读写方法 |
CN1924834A (zh) * | 2006-09-08 | 2007-03-07 | 华为技术有限公司 | 一种高速存储器预读方法及装置 |
US20080005467A1 (en) * | 2005-03-30 | 2008-01-03 | Emc Corporation | Sector-edge cache |
CN101231637A (zh) * | 2007-01-22 | 2008-07-30 | 中兴通讯股份有限公司 | 一种基于文件系统缓存的自适应预读取方法 |
CN101354641A (zh) * | 2008-08-20 | 2009-01-28 | 炬力集成电路设计有限公司 | 一种外部存储器的访问控制方法及访问控制装置 |
US20090144287A1 (en) * | 2007-11-30 | 2009-06-04 | International Business Machines Corporation | Service node, network, and method for pre-fetching for remote program installation |
CN101788887A (zh) * | 2010-02-05 | 2010-07-28 | 浪潮(北京)电子信息产业有限公司 | 磁盘阵列中一种基于数据库的i/o缓存流的系统及方法 |
-
2017
- 2017-01-03 CN CN201710001924.7A patent/CN106681939B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1737745A (zh) * | 2004-08-18 | 2006-02-22 | 华为技术有限公司 | 一种磁盘阵列数据的读写方法及并行读写方法 |
US20080005467A1 (en) * | 2005-03-30 | 2008-01-03 | Emc Corporation | Sector-edge cache |
CN1924834A (zh) * | 2006-09-08 | 2007-03-07 | 华为技术有限公司 | 一种高速存储器预读方法及装置 |
CN101231637A (zh) * | 2007-01-22 | 2008-07-30 | 中兴通讯股份有限公司 | 一种基于文件系统缓存的自适应预读取方法 |
US20090144287A1 (en) * | 2007-11-30 | 2009-06-04 | International Business Machines Corporation | Service node, network, and method for pre-fetching for remote program installation |
CN101354641A (zh) * | 2008-08-20 | 2009-01-28 | 炬力集成电路设计有限公司 | 一种外部存储器的访问控制方法及访问控制装置 |
CN101788887A (zh) * | 2010-02-05 | 2010-07-28 | 浪潮(北京)电子信息产业有限公司 | 磁盘阵列中一种基于数据库的i/o缓存流的系统及方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117130952A (zh) * | 2023-01-10 | 2023-11-28 | 荣耀终端有限公司 | 预读方法和预读装置 |
Also Published As
Publication number | Publication date |
---|---|
CN106681939B (zh) | 2019-08-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5649181A (en) | Method and apparatus for indexing database columns with bit vectors | |
CN110019218B (zh) | 数据存储与查询方法及设备 | |
CN107526550B (zh) | 一种基于日志结构合并树的两阶段合并方法 | |
US20040205044A1 (en) | Method for storing inverted index, method for on-line updating the same and inverted index mechanism | |
CN105320775A (zh) | 数据的存取方法和装置 | |
CN109815234A (zh) | 一种流式计算模型下的多重布谷鸟过滤器 | |
CN106407224A (zh) | 一种键值存储系统中文件压实的方法和装置 | |
CN114546295B (zh) | 一种基于zns固态硬盘的智能写分配方法和装置 | |
US9104726B2 (en) | Columnar databases | |
CN108460102A (zh) | 社交网络数据查询方法、装置、计算机设备和存储介质 | |
CN111475507A (zh) | 一种工作负载自适应单层lsmt的键值数据索引方法 | |
CN109165096B (zh) | web集群的缓存利用系统及方法 | |
CN112262379A (zh) | 存储数据项并且标识存储的数据项 | |
CN116301656A (zh) | 基于日志结构合并树的数据存储方法、系统及设备 | |
US10558636B2 (en) | Index page with latch-free access | |
US7509461B1 (en) | Method and apparatus for intelligent buffer cache pre-emption | |
CN110008030A (zh) | 一种元数据访问的方法、系统及设备 | |
US7440936B2 (en) | Method for determining an access mode to a dataset | |
CN112711564B (zh) | 合并处理方法以及相关设备 | |
CN117370414A (zh) | 时序数据库的应用方法和装置 | |
CN106681939A (zh) | 磁盘页面的读取方法和装置 | |
CN116821139A (zh) | 基于分布式数据库的分区表设计的混合负载方法及系统 | |
CN116881243A (zh) | 基于时间序列数据特征的学习型索引方法及系统 | |
EP4030312A1 (en) | Method and apparatus for querying data, computing device, and storage medium | |
CN114841806A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220505 Address after: Room 403, 4th floor, building 23, East District, yard 10, Xibeiwang East Road, Haidian District, Beijing 100089 Patentee after: BEIJING VSETTAN DATA TECHNOLOGY CO.,LTD. Address before: 100192 South Zone 1, floor 11, block a, No. 8 Xueqing Road (Science and technology wealth center), Haidian District, Beijing Patentee before: BEIJING VSETTAN DATA TECHNOLOGY CO.,LTD. Patentee before: Huasheng Xintai Information Industry Development Co., Ltd |
|
TR01 | Transfer of patent right |