CN113868292A - 一种读数据的方法、写数据的方法、设备和系统 - Google Patents
一种读数据的方法、写数据的方法、设备和系统 Download PDFInfo
- Publication number
- CN113868292A CN113868292A CN202010617784.8A CN202010617784A CN113868292A CN 113868292 A CN113868292 A CN 113868292A CN 202010617784 A CN202010617784 A CN 202010617784A CN 113868292 A CN113868292 A CN 113868292A
- Authority
- CN
- China
- Prior art keywords
- target
- page
- buffer
- data
- nodes
- 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
- 238000000034 method Methods 0.000 title claims abstract description 106
- 239000000872 buffer Substances 0.000 claims abstract description 375
- 230000004044 response Effects 0.000 claims abstract description 20
- 230000008569 process Effects 0.000 description 15
- 238000010586 diagram Methods 0.000 description 14
- 238000004891 communication Methods 0.000 description 7
- 238000004590 computer program Methods 0.000 description 7
- 230000009471 action Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
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/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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/3476—Data logging
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0674—Disk device
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)
- Human Computer Interaction (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例公开了一种读数据的方法、写数据的方法、设备和系统,用于减少不同线程对日志缓冲区的锁资源的竞争,以可以提高数据库的性能。在本申请实施例中,计算机设备中包括存储设备和非统一内存访问架构NUMA系统的多个节点,每个节点具有缓冲区和控制缓冲区的控制器,方法包括:获取目标数据的写请求;响应于写请求,确定存储设备中用于存储目标数据的目标页;从多个节点对应的多个缓冲区中确定目标页对应的目标缓冲区;通过控制目标缓冲区的目标控制器将目标数据写入目标缓冲区的页;将目标缓冲区的页的数据写入存储设备中的目标页。
Description
技术领域
本申请涉及数据库技术领域,尤其涉及一种读数据的方法、写数据的方法、设备和系统。
背景技术
在数据库中,经常会涉及从数据库的磁盘中读取数据或向数据库的磁盘中写入数据。然而,某些场景下,会对磁盘中的数据进行多次读取,或者会向磁盘中的同一页多次写入数据,所以若每次都与磁盘进行交互以读取数据或写入数据,势必会增加大量的输入/输出I/O操作,从而会增加I/O开销,降低数据库的性能。
为此,通常会使用缓冲区进行数据的读取和写入操作。即,先从磁盘中将数据读取到缓冲区中,此后只需从缓冲区中读取该数据,而不需从磁盘中读取该数据。或者,先向缓冲区中写入数据,待缓冲区中的数据达到一定量后,将缓冲区中的数据以页为单位写入磁盘。
该缓冲区一般由控制器进行管理,当业务线程需要读取该缓冲区中的数据或向该缓冲区写入数据时,控制器会对该缓冲区加锁,此时其他业务线程则不能访问该缓冲区,只有在控制器释放锁后,其他业务线程才能访问该缓冲区。
由此可见,业务线程之间会竞争缓冲区的锁资源,从而影响数据库的性能。
发明内容
本申请实施例提供了一种读数据的方法、写数据的方法、设备和系统。该方法能够减少不同线程对日志缓冲区的锁资源的竞争,从而可以提高数据库的性能。
本申请第一方面提供了一种写数据的方法,应用于计算机设备,计算机设备中包括存储设备和非统一内存访问架构NUMA系统的多个节点,每个节点具有缓冲区和控制缓冲区的控制器,方法包括:获取目标数据的写请求;响应于写请求,确定存储设备中用于存储目标数据的目标页;从多个节点对应的多个缓冲区中确定目标页对应的目标缓冲区;通过控制目标缓冲区的目标控制器将目标数据写入目标缓冲区的页;将目标缓冲区的页的数据写入存储设备中的目标页。
由于多个节点上均具有缓冲区和缓冲区的控制器,所以即使一个节点上的缓冲区被锁定,也不会影响通过其他节点上的缓冲区写入目标数据。因此可以减少不同线程对缓冲区的锁资源的竞争,从而可以提高数据库的性能。
在一些实现方式中,存储设备用于存储预设类型数据,且每条预设类型数据所需的存储空间是固定的;目标数据属于预设类型数据,且写请求中包含目标数据的标识。
响应于写请求,确定存储设备中用于存储目标数据的目标页包括:至少基于目标数据的标识和每条预设类型数据所需的存储空间,确定存储设备中用于存储目标数据的目标页。
该实现方式提供了在存储设备用于存储预设类型数据,且每条预设类型数据所需的存储空间是固定的这一场景下,确定目标页的一种可行方案。
在一些实现方式中,预设类型数据指示数据库事务的状态。
在一些实现方式中,目标数据的标识为目标数据的编号。
在一些实现方式中,从多个节点对应的多个缓冲区中确定目标页对应的目标缓冲区包括:根据目标页的页码,从多个节点对应的多个缓冲区中确定目标页对应的目标缓冲区。
在该实现方式中,通过目标页的页码确定目标缓冲区,从而提供了一种确定目标缓冲区的可行方案。
在一些实现方式中,根据目标页的页码,从多个节点对应的多个缓冲区中确定目标页对应的目标缓冲区包括:采用哈希算法获取目标页的页码对应的哈希值;根据哈希值确定目标页对应的目标缓冲区,多个节点对应的多个缓冲区中,编码与哈希值对应的缓冲区为目标缓冲区。
通过哈希算法使得确定目标缓冲区的过程可以更准确、高效。
在一些实现方式中,通过控制目标缓冲区的目标控制器将目标数据写入目标缓冲区的页包括:基于目标页的页码大于第一页码,通过控制目标缓冲区的目标控制器确定目标缓冲区对应的未被初始化的至少两个磁盘页,至少两个磁盘页包括目标磁盘页;通过控制目标缓冲区的目标控制器,在目标缓冲区内对至少两个磁盘页进行初始化;其中,第一页码为存储设备中经过初始化的页的页码最大值。
将未被初始化的至少两个磁盘页进行初始化,可以归并初始化的动作,减少初始化的操作次数,从而降低锁的争抢和频繁的内存操作。
本申请第二方面提供了一种读数据的方法,应用于计算机设备,计算机设备中包括存储设备和非统一内存访问架构NUMA系统的多个节点,每个节点具有缓冲区和控制缓冲区的控制器,方法包括:获取目标数据的读请求;响应于读请求,确定存储设备中用于存储目标数据的目标页;从多个节点对应的多个缓冲区中确定目标页对应的目标缓冲区;将存储设备中目标页中的目标数据读取到目标缓冲区的页;通过控制目标缓冲区的目标控制器读取目标缓冲区的页中的目标数据。
由于多个节点上均具有缓冲区和缓冲区的控制器,所以即使一个节点上的缓冲区被锁定,也不会影响通过其他节点上的缓冲区读取目标数据。因此可以减少不同线程对缓冲区的锁资源的竞争,从而可以提高数据库的性能。
在一些实现方式中,存储设备用于存储预设类型数据,且每条预设类型数据所需的存储空间是固定的;目标数据属于预设类型数据,且写请求中包含目标数据的标识;响应于读请求,确定存储设备中用于存储目标数据的目标页包括:至少基于目标数据的标识和每条预设类型数据所需的存储空间,确定存储设备中用于存储目标数据的目标页。
该实现方式提供了在存储设备用于存储预设类型数据,且每条预设类型数据所需的存储空间是固定的这一场景下,确定目标页的一种可行方案。
在一些实现方式中,预设类型数据指示数据库事务的状态。
在一些实现方式中,目标数据的标识为目标数据的编号。
在一些实现方式中,从多个节点对应的多个缓冲区中确定目标页对应的目标缓冲区包括:根据目标页的页码,从多个节点对应的多个缓冲区中确定目标页对应的目标缓冲区。
在该实现方式中,通过目标页的页码确定目标缓冲区,从而提供了一种确定目标缓冲区的可行方案。
在一些实现方式中,根据目标页的页码,从多个节点对应的多个缓冲区中确定目标页对应的目标缓冲区包括:采用哈希算法获取目标页的页码对应的哈希值;根据哈希值确定目标页对应的目标缓冲区,多个节点对应的多个缓冲区中,编码与哈希值对应的缓冲区为目标缓冲区。
通过哈希算法使得确定目标缓冲区的过程可以更准确、高效。
本申请第三方面提供了一种写数据的装置,应用于计算机设备,计算机设备中包括非统一内存访问架构NUMA系统的多个节点,每个节点具有缓冲区和控制缓冲区的控制器,每个节点中的缓冲区用于对磁盘中多个磁盘页进行数据读或写;装置包括:
获取单元,用于获取目标数据的写请求;
确定单元,用于响应于写请求,确定存储设备中用于存储目标数据的目标页;
确定单元还用于从多个节点对应的多个缓冲区中确定目标页对应的目标缓冲区;
第一写单元,用于通过控制目标缓冲区的目标控制器将目标数据写入目标缓冲区的页;
第二写单元,还用于将目标缓冲区的页的数据写入存储设备中的目标页。
在一些实现方式中,存储设备用于存储预设类型数据,且每条预设类型数据所需的存储空间是固定的;目标数据属于预设类型数据,且写请求中包含目标数据的标识。
确定单元,用于至少基于目标数据的标识和每条预设类型数据所需的存储空间,确定存储设备中用于存储目标数据的目标页。
该实现方式提供了在存储设备用于存储预设类型数据,且每条预设类型数据所需的存储空间是固定的这一场景下,确定目标页的一种可行方案。
在一些实现方式中,预设类型数据指示数据库事务的状态。
在一些实现方式中,目标数据的标识为目标数据的编号。
在一些实现方式中,确定单元,用于根据目标页的页码,从多个节点对应的多个缓冲区中确定目标页对应的目标缓冲区。
在该实现方式中,通过目标页的页码确定目标缓冲区,从而提供了一种确定目标缓冲区的可行方案。
在一些实现方式中,确定单元,用于采用哈希算法获取目标页的页码对应的哈希值;根据哈希值确定目标页对应的目标缓冲区,多个节点对应的多个缓冲区中,编码与哈希值对应的缓冲区为目标缓冲区。
通过哈希算法使得确定目标缓冲区的过程可以更准确、高效。
在一些实现方式中,第一写单元,用于基于目标页的页码大于第一页码,通过控制目标缓冲区的目标控制器确定目标缓冲区对应的未被初始化的至少两个磁盘页,至少两个磁盘页包括目标磁盘页;通过控制目标缓冲区的目标控制器,在目标缓冲区内对至少两个磁盘页进行初始化;其中,第一页码为存储设备中经过初始化的页的页码最大值。
将未被初始化的至少两个磁盘页进行初始化,可以归并初始化的动作,减少初始化的操作次数,从而降低锁的争抢和频繁的内存操作。
本申请第四方面提供了一种读数据的装置,应用于计算机设备,计算机设备中包括存储设备和非统一内存访问架构NUMA系统的多个节点,每个节点具有缓冲区和控制缓冲区的控制器,装置包括:
获取单元,用于获取目标数据的读请求;
确定单元,用于响应于读请求,确定存储设备中用于存储目标数据的目标页;
确定单元,还用于从多个节点对应的多个缓冲区中确定目标页对应的目标缓冲区;
第一读取单元,用于将存储设备中目标页中的目标数据读取到目标缓冲区的页;
第二读取单元,用于通过控制目标缓冲区的目标控制器读取目标缓冲区的页中的目标数据。
在一些实现方式中,存储设备用于存储预设类型数据,且每条预设类型数据所需的存储空间是固定的;目标数据属于预设类型数据,且写请求中包含目标数据的标识;确定单元,用于至少基于目标数据的标识和每条预设类型数据所需的存储空间,确定存储设备中用于存储目标数据的目标页。
该实现方式提供了在存储设备用于存储预设类型数据,且每条预设类型数据所需的存储空间是固定的这一场景下,确定目标页的一种可行方案。
在一些实现方式中,预设类型数据指示数据库事务的状态。
在一些实现方式中,目标数据的标识为目标数据的编号。
在一些实现方式中,确定单元,用于根据目标页的页码,从多个节点对应的多个缓冲区中确定目标页对应的目标缓冲区。
在该实现方式中,通过目标页的页码确定目标缓冲区,从而提供了一种确定目标缓冲区的可行方案。
在一些实现方式中,确定单元,用于采用哈希算法获取目标页的页码对应的哈希值;根据哈希值确定目标页对应的目标缓冲区,多个节点对应的多个缓冲区中,编码与哈希值对应的缓冲区为目标缓冲区。
通过哈希算法使得确定目标缓冲区的过程可以更准确、高效。
本申请第五方面提供了一种NUMA系统,包括:多个节点,每个节点具有缓冲区和控制缓冲区的控制器,多个节点中的至少一个节点用于执行如上述第一方面中任意一项所述的方法。
本申请第六方面提供了一种计算机设备,计算机设备中包括非统一内存访问架构NUMA系统的多个节点,每个节点具有缓冲区和控制缓冲区的控制器,多个节点中的至少一个节点用于执行如上述第一方面中任意一项所述的方法。
本申请第七方面提供一种芯片或者芯片系统,该芯片或者芯片系统包括至少一个处理器和通信接口,通信接口和至少一个处理器通过线路互联,至少一个处理器用于运行计算机程序或指令,以执行如上述第一方面中任意一项所述的方法。
在一些实现方式中,至少一个处理器为包含多个节点的非统一内存访问架构NUMA系统,多个节点中的一个或多个节点共同执行上述第一方面中任意一项所述的方法。
本申请第八方面提供了一种计算机存储介质,该计算机存储介质用于储存为上述终端设备所用的计算机软件指令,其包括用于执行为计算机设备所设计的程序;
该计算机设备可以如前述第六方面所描述的计算机设备。
本申请第九方面提供了一种计算机程序产品,该计算机程序产品包括计算机软件指令,该计算机软件指令可通过处理器进行加载来实现如上述第一方面中任意一项所述的方法。
从以上技术方案可以看出,本申请实施例具有以下优点:
本申请实施例应用于计算机设备,计算机设备中包括存储设备和非统一内存访问架构NUMA系统的多个节点,每个节点具有缓冲区和控制缓冲区的控制器,方法包括:获取目标数据的写请求;响应于写请求,确定存储设备中用于存储目标数据的目标页;从多个节点对应的多个缓冲区中确定目标页对应的目标缓冲区;通过控制目标缓冲区的目标控制器将目标数据写入目标缓冲区的页;将目标缓冲区的页的数据写入存储设备中的目标页;这样,即使一个节点上的缓冲区被锁定,也不会影响其他节点上的缓冲区的读写。因此,本申请实施例可以减少不同线程对缓冲区的锁资源的竞争,从而可以提高数据库的性能。
附图说明
图1为本申请实施例中NUMA系统的架构示意图;
图2为本申请实施例中NUMA系统中节点访问内存的实施例示意图;
图3为本申请实施例中缓冲区的第一工作示意图;
图4为本申请实施例中LRU算法的应用示意图;
图5为现有技术中缓冲区的工作示意图;
图6为本申请实施例中写数据的方法的一个实施例示意图;
图7为本申请实施例中写数据的方法的一个应用例示意图;
图8为本申请实施例中写数据的方法的另一个应用例示意图;
图9为本申请实施例中写数据的方法的另一个实施例示意图;
图10为第一页码和目标磁盘页的页码的关系示意图;
图11为本申请实施例中读数据的方法的一个实施例示意图;
图12为本申请实施例中写数据的装置的一个实施例示意图;
图13为本申请实施例中读数据的装置的一个实施例示意图。
具体实施方式
本申请实施例提供了一种读数据的方法、写数据的方法、设备和系统。该方法用于减少不同线程对日志缓冲区的锁资源的竞争,从而可以提高数据库的性能。
本申请实施例可以应用于NUMA系统,下面对NUMA系统进行介绍。
如图1所示,NUMA系统100可以包括一个或多个插槽,每个插槽中可以安装一个或多个节点(node)。每个节点中可以包括多个中央处理器(central processing unit,CPU)和内存。在每个节点中,CPU通过内存控制器(Memory controller,MC)管理内存。
在图1中,NUMA系统100包括插槽(socket)101a和插槽101b,插槽(socket)101a包括两个节点,插槽101b也包括两个节点。每个节点包括4个CPU。需要说明的是,图1所描绘插槽的数量、节点的数量以及每个节点中CPU的数量仅为一种示例,不对NUMA系统100构成具体限定。NUMA系统100还可以包括其他数量的插槽和节点,每个几点中也可以包括其他数量的CPU。
在NUMA系统中,任意两个节点之间可以通过互联(interconnect)104彼此通信地耦合。如图2所示,以两个节点为例,一个节点可以访问该节点内的内存(也可以叫做近端内存),一个节点还可以访问另一个节点内的内存(也可以叫做远端内存)。
应理解,日志对数据库系统的性能有着重要影响。例如,当数据库系统出现故障后,数据库系统可以通过日志回放来回复数据库,以保证数据库的一致性和完整性。日志通过被存储在磁盘中。但若每个日志的读取和写入都直接与磁盘进行交互,难免会增加大量输入/输出I/O操作,从而会降低数据库系统的性能。又由于磁盘中的日志文件是以页为单位的,而每条日志所需的存储空间比页小得多,所以为了降低读取和写入日志带来的I/O开销,会在内存中分配单独的一个区域,该区域被称为日志缓冲区,日志缓冲区是物理意义上的一块内存。这样,便可以通过该日志缓冲区与磁盘交互,以实现日志的读取和写入。
具体地,如图3所示,日志缓冲区中包括多个内存页,其中,内存页与磁盘中的磁盘页大小相同。当读/写线程需要向磁盘中写入日志时,可以先将日志写入日志缓冲区中的内存页,当日志缓冲区中的日志达到一定数量后,再以页为单位将日志批量写入磁盘的磁盘页中。当读/写线程需要从磁盘中读取日志时,可以先将日志从磁盘页中读取到日志缓冲区的内存页中,然后再从日志缓冲区的内存页中读取日志。
应理解,内存资源是有限的,所以日志缓冲区的大小是有限的,所以为了实现对日志缓冲区中的内存页的复用,通常会采用最近最少使用(Least recently used,LRU)算法对日志缓冲区进行管理。
日志缓冲区的管理一般由控制器负责。控制器采用LRU算法对日志缓冲区内的内存页进行管理,具体地,控制器会记录每个内存页中的数据的生命周期。如图4所示,假设日志缓冲器中存在四个内存页,且依次在这四个内存页冲写入元素A、B、C和D,由于元素D是最近被存入的,元素A是最早被写入的,所以元素A、B、C和D各自的生命周期分别0、1、2和3。在图4中,以元素B为例,B(1)表示元素B的生命周期为1,其他元素类似,此处不做赘述。若此时要在该日志缓冲区内写入元素E,由于元素A的生命周期最短,所以会将元素E写入元素A所在的内存页,即元素A将被元素E替换。同样地,若要继续写入元素F,则元素B将被元素F替换。
控制器除了用于控制日志缓冲区中的日志的读取和写入外,还用于管理日志缓冲区的状态。其中,日志缓冲区的状态可以包括日志缓冲区的大小、日志缓冲区中内存页的数量、日志缓冲区中内存页的状态、最大写入页、日志缓冲区的指针以及日志缓冲区的锁。可以理解的是,通过缓冲区可以向磁盘中的磁盘页写入数据,最大写入页是指已通过日志缓冲区写入数据的磁盘页的号码最大值。日志缓冲区的锁是全局唯一的,用于锁定日志缓冲区。例如,如图5所示,当读/写线程1需要在日志缓冲区的某一内存页上写入日志时,缓冲器控制器会对日志缓冲区上锁,上锁后的日志缓冲区仅能由当前的读/写线程操作,读/写线程2和读/写线程3则不能对该日志缓冲区进行读取或写入操作。
由此可见,不同线程之间需要竞争日志缓冲区的锁资源,该竞争关系限制了数据库系统性能的提高。为此,本申请实施例对日志缓冲区进行分区,然后将分区后的缓冲区分别分配在NUMA系统中的各个节点上。这样,若一个节点上的日志缓冲区被锁定,也不会影响其他节点上的日志缓冲区的读写。因此,本申请实施例可以减少不同线程对日志缓冲区的锁资源的竞争,从而可以提高数据库的性能。
由于NUMA系统中的各个节点通常是相同,所以可以将日志缓冲区平均分配至NUMA系统中的各个节点上。例如,若用户期望的日志缓冲区的大小为4MB,NUMA系统包括4个节点,则可以在每个节点上分配1MB的日志缓冲区。相应地,各个节点上也配置用于控制日志缓冲区的缓冲控制器。对于任意一个节点,该节点的CPU可以访问近端内存中的日志缓冲区,也可以访问远端内存中的日志缓冲区。
需要说明的是,前文以日志缓冲区对本申请实施例提供的读/写数据方法进行了说明,除此之外,本申请实施例提供的读/写数据的方法也可以应用于其他类似的缓冲区。例如,可以分配一块内存作为缓冲区,用于对读/写快递单号、商品编号等数据。下文将分别对写数据的方法和读数据的方法进行介绍。
首先,对本申请实施例提供的写数据的方法进行介绍。具体地,请参阅图6,本申请实施例中写数据的方法的实施例示意图。如图6所示,本申请实施例提供了一种写数据的方法,应用于计算机设备,计算机设备中包括非统一内存访问架构NUMA系统的多个节点,每个节点具有缓冲区和控制缓冲区的控制器。
其中,计算机设备可以是终端设备,也可以是服务器。本申请实施例提供的写数据的方法更多的是应用于服务器中。
基于前文已对缓冲区和控制缓冲区的控制器进行了说明,因此,请参阅前述的相关说明进行理解。
本申请实施例提供的写数据的方法包括:
步骤101,获取目标数据的写请求。
需要说明的是,该写请求中可以不包含目标数据,而仅包括与目标数据相关的信息。例如,写请求可以包括目标数据的标识,可以包括目标数据所需的存储空间。
目标数据可以有多种,本申请实施例对此不做限定,例如,在本申请实施例中,目标数据可以指示数据库事务的状态,也可以指示快递单号或商品编号。
步骤102,响应于写请求,确定存储设备中用于存储目标数据的目标页。
其中,该存储设备可以为包括磁盘、硬盘、存储阵列等各种类型的非瞬时性存储介质。
当存储设备为磁盘时,磁盘中的数据由多个磁盘文件构成,每个磁盘文件由8KB的磁盘页组成。
在获取到写请求后,需要先确定目标页,该目标页用于存储目标数据。
目标页的情况有多种,下面以磁盘为例进行说明,其中,用目标磁盘页标识目标页。第一种情况是,若写请求指示需要写入目标数据,磁盘中存在一磁盘页,该磁盘页中存储有与目标数据对应的历史数据,则在写入目标数据的过程中,会将该磁盘页中的历史数据替换为目标数据。这种场景下,目标页为磁盘中存储有与目标数据对应的历史数据的磁盘页。若读/写请求指示需要读取目标数据,则意味着目标磁盘页也为磁盘中存储有与目标数据对应的历史数据的磁盘页。第二种情况是,若读/写请求指示需要写入目标数据,但磁盘中不存在存储有目标数据对应的历史数据的磁盘页,此时,则需要将一个空白的磁盘页作为目标磁盘页。
需要说明的是,确定目标页的方法有多种,本申请实施例对此不做限定。
示例性地,存储设备用于存储预设类型数据,且每条预设类型数据所需的存储空间是固定的。
其中,预设类型数据可以指示数据库事务的状态。数据库事务的状态包括处理中、提交、中止和子事务提交。指示数据库事务的状态的数据又称事务提交日志,每条事务提交的日志所需的存储空间为2bit。
应理解,数据在存储设备中通常是连续存储的,以磁盘为例具体地,在事务提交日志的写入过程中,会向当前的磁盘页内依次写入事务提交日志,若当前的磁盘页写满,则向下一个磁盘页继续写入事务提交日志。所以若磁盘页仅用于存储预设类型数据,而每条预设类型数据所需的存储空间是固定的,所以每条预设类型数据所属的磁盘页是确定的。由此可见,每条预设类型数据所属的存储设备中的页也是确定的。
基于此,若目标数据属于预设类型数据,且写请求中包含目标数据的标识,则响应于写请求,确定存储设备中用于存储目标数据的目标页包括:
至少基于目标数据的标识和每条预设类型数据所需的存储空间,确定存储设备中用于存储目标数据的目标页。
其中,目标数据的标识可以为目标数据的编号;当目标数据指示数据库事务的状态时,则目标数据的编号可以为数据库事务的编号。
例如,若存储设备为磁盘,预设类型数据指示数据库事务的状态,目标数据的编号为数据库事务的编号,则可以先获取数据事务的编号与每条预设类型的数据所需的存储空间(这里为2bit)的乘积,然后将该乘积除以磁盘页的大小(即为8k),则可以得到目标磁盘页的编号,从而确定目标磁盘页。
步骤103,从多个节点对应的多个缓冲区中确定目标页对应的目标缓冲区。
在确定目标页后,会由页面分配器将该目标页分配给多个节点中的缓冲区中的一个节点的缓冲区。具体地,页面分配器需要从多个节点中的缓冲区中选择一个节点的缓冲区作为目标缓冲区,通过目标控制器控制该目标缓冲区与存储设备交互,以对目标页进行目标数据的读或写。
需要说明的是,确定目标缓冲区的方法有多种,示例性地,可以随机选择一个节点的缓冲区作为目标缓冲区。
除此之外,也可以预置相应的规则,使得根据该规则进行目标缓冲区的选取。
示例性地,确定目标缓冲区的方法包括:根据目标页的页码,从多个节点对应的多个缓冲区中确定目标页对应的目标缓冲区。
作为一种可实现的方式,根据目标页的页码,从多个节点对应的多个缓冲区中确定目标页对应的目标缓冲区包括:
采用哈希算法获取目标页的页码对应的哈希值。其中,哈希值可以根据实际需要进行设定。
根据哈希值确定目标页对应的目标缓冲区,多个节点对应的多个缓冲区中,编码与哈希值对应的缓冲区为目标缓冲区。其中,作为一种可实现的方式,编码与哈希值相同的缓冲区为目标缓冲区。
例如,可以采用哈希算法获取目标磁盘页的页码除以缓冲区数量的余数,然后基于余数从多个节点对应的多个缓冲区中确定目标页对应的目标缓冲区。
例如,以图1所示的NUMA系统为例,该NUMA系统中包括4个节点,可以预先将这4个节点编号为0、1、2和3,当余数为0时,则将编号为0的节点中的缓冲区作为目标缓冲区;当余数为2时,则将编号为2的节点中的缓冲区作为目标缓冲区。
通过该方法可以使得磁盘页随着页码的递增被平均分配给各个节点中的缓冲区。
示例性地,根据目标磁盘页的页码确定目标缓冲区也可以包括:根据页码将磁盘中的磁盘页分布多个组,每组磁盘页属于一个节点中的缓冲器;在获取到目标磁盘页后,可以先确定目标磁盘页所属的组,然后根据目标磁盘页所属的组确定目标缓冲区。
例如,假设磁盘中所有磁盘页的编号为1至400,仍以图1所示的NUMA系统为例,在图1中,102a、102b、103a和103b这4个节点各自对应的一组磁盘页的页码分别为1至100、101至200、201至300以及301至400。若目标磁盘页的页码为150,则可以确定102b这一节点中的缓冲区为目标缓冲区。若目标磁盘页的页码为301,则确定103b这一节点中的缓冲区为目标缓冲区。
步骤104,通过控制目标缓冲区的目标控制器将目标数据写入目标缓冲区的页。
需要说明的是,将目标数据写入目标缓冲区的页属于较成熟的技术,故在此不做赘述。
步骤105,将目标缓冲区的页的数据写入存储设备中的目标页。
同样地,将目标缓冲区的页的数据写入存储设备中的目标页页属于较成熟的技术,故在此不做赘述。
在本申请实施例中,多个节点上均具有缓冲区和控制缓冲区的控制器,所以即使一个节点上的缓冲区被锁定,也不会影响其他节点上的缓冲区的读写。因此,本申请实施例可以减少不同线程对缓冲区的锁资源的竞争,从而可以提高数据库的性能。
为了便于理解,下面结合图7和图8对本申请实施例的方法进行进一步说明。
如图7所示,缓冲区的数量为三个。读写线程发送目标数据的写请求至页面分配器,页面分配器确定根据写请求确定用于存储目标数据的目标页。然后将三个缓冲区中选择一个缓冲区作为目标缓冲区,然后通过目标缓冲区的控制器将目标数据写入目标缓冲区。
如图8所示,存储设备为磁盘,读写线程、缓冲区以及磁盘中的磁盘文件的数量均为三个,采用本申请实施例提供的方法,同一读写线程可以通过不同的缓冲区进行目标数据的写入,相比于图5,三个读写线程只能通过一个缓冲区进行目标数据的写入,本申请实施例能够降低不同线程对缓冲区的锁资源的竞争,从而可以提高数据库的性能。
基于前述各个实施例,如图9所示,在本申请实施例提供的写数据的方法的另一个实施例中,通过控制目标缓冲区的目标控制器将目标数据写入目标缓冲区的页包括:
步骤201,基于目标页的页码大于第一页码,通过控制目标缓冲区的目标控制器确定目标缓冲区对应的存储设备中未被初始化的至少两个页,至少两个页包括目标页。
其中,第一页码为存储设备中经过初始化的页的页码最大值。若目标页的页码大于第一页码,则说明目标页未被初始化。
对目标页进行初始化是指,将目标缓冲区内的空白的内存页与目标页关联,使得可以通过该空白的内存页向目标页中写入目标数据。
需要说明的是,在某些场景下,目标缓冲区可能还对应的其他未被初始化的页,因此可以确定目标缓冲区对应的未被初始化的至少两个页,然后将目标缓冲区对应的未被初始化的至少两个页初始化。
例如,如图10所示,以磁盘页为例,即目标页为目标磁盘页,图10中的磁盘页均为目标缓冲区对应的磁盘页。从图10中可以看出,第一页码和目标磁盘页的页码之间包括三个未被初始化的磁盘页。
步骤202,通过控制目标缓冲区的目标控制器,在目标缓冲区内对至少两个页进行初始化。
需要说明的是,在对至少两个页进行初始化的过程中,首先需要保证目标缓冲区中包含至少两个空白的内存页。需要说明的是,在一特定场景下,目标缓冲区存在至少两个空白的内存页;在另一特定场景下,目标缓冲区不存在空白的内存页,此时,则可以基于前述提及的LRU算法清除部分内存页中的数据,以得到至少两个空白的内存页。
在本申请实施例中,将未被初始化的至少两个页进行初始化,可以归并初始化的动作,减少初始化的操作次数,从而降低锁的争抢和频繁的内存操作。
上面对写数据的方法进行了介绍,下面介绍本申请实施例提供的读数据的方法。
如图11所示,本申请实施例提供了一种读数据的方法,应用于计算机设备,计算机设备中包括存储设备和非统一内存访问架构NUMA系统的多个节点,每个节点具有缓冲区和控制缓冲区的控制器,方法包括:
步骤301,获取目标数据的读请求。
步骤302,响应于读请求,确定存储设备中用于存储目标数据的目标页。
步骤303,从多个节点对应的多个缓冲区中确定目标页对应的目标缓冲区。
步骤304,将存储设备中目标页中的目标数据读取到目标缓冲区的页。
步骤305,通过控制目标缓冲区的目标控制器读取目标缓冲区的页中的目标数据。
需要说明的是,读数据的方法与写数据的方法类似,唯一不同的是,在读数据的过程中,需要先将存储设备中目标页中的目标数据读取到目标缓冲区的页,然后过控制目标缓冲区的目标控制器读取目标缓冲区的页中的目标数据。其他可参阅前述实施例对写数据的方法的相关说明进行理解。
在本申请实施例提供的读数据的方法的另一个实施例中,存储设备用于存储预设类型数据,且每条预设类型数据所需的存储空间是固定的;目标数据属于预设类型数据,且写请求中包含目标数据的标识。
响应于读请求,确定存储设备中用于存储目标数据的目标页包括:
至少基于目标数据的标识和每条预设类型数据所需的存储空间,确定存储设备中用于存储目标数据的目标页。
需要说明的是,确定目标页的过程页可参阅前述实施例对写数据的方法的相关说明进行理解。
在本申请实施例提供的读数据的方法的另一个实施例中,预设类型数据指示数据库事务的状态。
在本申请实施例提供的读数据的方法的另一个实施例中,目标数据的标识为目标数据的编号。
在本申请实施例提供的读数据的方法的另一个实施例中,从多个节点对应的多个缓冲区中确定目标页对应的目标缓冲区包括:
根据目标页的页码,从多个节点对应的多个缓冲区中确定目标页对应的目标缓冲区。
需要说明的是,确定目标缓冲区的过程页可参阅前述实施例对写数据的方法的相关说明进行理解。
在本申请实施例提供的读数据的方法的另一个实施例中,根据目标页的页码,从多个节点对应的多个缓冲区中确定目标页对应的目标缓冲区包括:
采用哈希算法获取目标页的页码对应的哈希值;
根据哈希值确定目标页对应的目标缓冲区,多个节点对应的多个缓冲区中,编码与哈希值对应的缓冲区为目标缓冲区。
需要说明的是,确定目标缓冲区的过程页可参阅前述实施例对写数据的方法的相关说明进行理解。
请参阅图12,本申请实施例提供了一种写数据的装置,应用于计算机设备,计算机设备中包括非统一内存访问架构NUMA系统的多个节点,每个节点具有缓冲区和控制缓冲区的控制器,每个节点中的缓冲区用于对磁盘中多个磁盘页进行数据读或写;装置包括:
获取单元401,用于获取目标数据的写请求;
确定单元402,用于响应于写请求,确定存储设备中用于存储目标数据的目标页;
确定单元402还用于从多个节点对应的多个缓冲区中确定目标页对应的目标缓冲区;
第一写单元403,用于通过控制目标缓冲区的目标控制器将目标数据写入目标缓冲区的页;
第二写单元404,还用于将目标缓冲区的页的数据写入存储设备中的目标页。
在一些实现方式中,存储设备用于存储预设类型数据,且每条预设类型数据所需的存储空间是固定的;目标数据属于预设类型数据,且写请求中包含目标数据的标识。
确定单元402,用于至少基于目标数据的标识和每条预设类型数据所需的存储空间,确定存储设备中用于存储目标数据的目标页。
该实现方式提供了在存储设备用于存储预设类型数据,且每条预设类型数据所需的存储空间是固定的这一场景下,确定目标页的一种可行方案。
在一些实现方式中,预设类型数据指示数据库事务的状态。
在一些实现方式中,目标数据的标识为目标数据的编号。
在一些实现方式中,确定单元402,用于根据目标页的页码,从多个节点对应的多个缓冲区中确定目标页对应的目标缓冲区。
在该实现方式中,通过目标页的页码确定目标缓冲区,从而提供了一种确定目标缓冲区的可行方案。
在一些实现方式中,确定单元402,用于采用哈希算法获取目标页的页码对应的哈希值;根据哈希值确定目标页对应的目标缓冲区,多个节点对应的多个缓冲区中,编码与哈希值对应的缓冲区为目标缓冲区。
通过哈希算法使得确定目标缓冲区的过程可以更准确、高效。
在一些实现方式中,第一写单元403,用于基于目标页的页码大于第一页码,通过控制目标缓冲区的目标控制器确定目标缓冲区对应的未被初始化的至少两个磁盘页,至少两个磁盘页包括目标磁盘页;通过控制目标缓冲区的目标控制器,在目标缓冲区内对至少两个磁盘页进行初始化;其中,第一页码为存储设备中经过初始化的页的页码最大值。
将未被初始化的至少两个磁盘页进行初始化,可以归并初始化的动作,减少初始化的操作次数,从而降低锁的争抢和频繁的内存操作。
请参阅图13,本申请实施例提供了一种读数据的装置,应用于计算机设备,计算机设备中包括存储设备和非统一内存访问架构NUMA系统的多个节点,每个节点具有缓冲区和控制缓冲区的控制器,装置包括:
获取单元501,用于获取目标数据的读请求;
确定单元502,用于响应于读请求,确定存储设备中用于存储目标数据的目标页;
确定单元502,还用于从多个节点对应的多个缓冲区中确定目标页对应的目标缓冲区;
第一读取单元503,用于将存储设备中目标页中的目标数据读取到目标缓冲区的页;
第二读取单元504,用于通过控制目标缓冲区的目标控制器读取目标缓冲区的页中的目标数据。
在一些实现方式中,存储设备用于存储预设类型数据,且每条预设类型数据所需的存储空间是固定的;目标数据属于预设类型数据,且写请求中包含目标数据的标识;确定单元502,用于至少基于目标数据的标识和每条预设类型数据所需的存储空间,确定存储设备中用于存储目标数据的目标页。
该实现方式提供了在存储设备用于存储预设类型数据,且每条预设类型数据所需的存储空间是固定的这一场景下,确定目标页的一种可行方案。
在一些实现方式中,预设类型数据指示数据库事务的状态。
在一些实现方式中,目标数据的标识为目标数据的编号。
在一些实现方式中,确定单元502,用于根据目标页的页码,从多个节点对应的多个缓冲区中确定目标页对应的目标缓冲区。
在该实现方式中,通过目标页的页码确定目标缓冲区,从而提供了一种确定目标缓冲区的可行方案。
在一些实现方式中,确定单元502,用于采用哈希算法获取目标页的页码对应的哈希值;根据哈希值确定目标页对应的目标缓冲区,多个节点对应的多个缓冲区中,编码与哈希值对应的缓冲区为目标缓冲区。
通过哈希算法使得确定目标缓冲区的过程可以更准确、高效。
需要说明的是,在一个实施例中,读写数据的装置和写数据的装置为运行在计算机设备上的计算机程序,该计算机程序可以被计算机设备的处理器执行,以实现其功能。
本申请实施例还提供了一种NUMA系统,包括:多个节点,每个节点具有缓冲区和控制缓冲区的控制器,多个节点中的至少一个节点用于执行如前述实施例中任意一项所述的读数据的方法或写数据的方法。
本申请实施例还提供了一种计算机设备,计算机设备中包括非统一内存访问架构NUMA系统的多个节点,每个节点具有缓冲区和控制缓冲区的控制器,多个节点中的至少一个节点用于执行如前述实施例中任意一项所述的读数据的方法或写数据的方法。
本申请实施例还提供一种芯片或者芯片系统,该芯片或者芯片系统包括至少一个处理器和通信接口,通信接口和至少一个处理器通过线路互联,至少一个处理器用于运行计算机程序或指令,以执行前述图12所示实施例中写数据的装置所执行的操作,或执行前述图13所示实施例中读数据的装置所执行的操作,具体此处不再赘述。
其中,芯片中的通信接口可以为输入/输出接口、管脚或电路等。
在一些实现方式中,至少一个处理器为包含多个节点的非统一内存访问架构NUMA系统,多个节点中的一个或多个节点共同执行如前述实施例中任意一项所述的读数据的方法或写数据的方法。
本申请实施例还提供了一种计算机存储介质,该计算机存储介质用于储存为上述控制设备所用的计算机软件指令,其包括用于执行为计算机设备所设计的程序。
该计算机设备可以如前述图12所描述的写数据的装置或前述图13所描述的读数据的装置。
本申请实施例还提供了一种计算机程序产品,该计算机程序产品包括计算机软件指令,该计算机软件指令可通过处理器进行加载来实现前述实施例中任意一项所述的读数据的方法或写数据的方法的流程。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
Claims (18)
1.一种写数据的方法,其特征在于,应用于计算机设备,所述计算机设备中包括存储设备和非统一内存访问架构NUMA系统的多个节点,每个节点具有缓冲区和控制所述缓冲区的控制器,所述方法包括:
获取目标数据的写请求;
响应于所述写请求,确定所述存储设备中用于存储所述目标数据的目标页;
从所述多个节点对应的多个缓冲区中确定所述目标页对应的目标缓冲区;
通过控制所述目标缓冲区的目标控制器将所述目标数据写入所述目标缓冲区的页;
将所述目标缓冲区的页的数据写入所述存储设备中的所述目标页。
2.根据权利要求1所述的方法,其特征在于,所述存储设备用于存储预设类型数据,且每条所述预设类型数据所需的存储空间是固定的;
所述目标数据属于所述预设类型数据,且所述写请求中包含所述目标数据的标识;
所述响应于所述写请求,确定所述存储设备中用于存储所述目标数据的目标页包括:
至少基于所述目标数据的标识和每条所述预设类型数据所需的存储空间,确定所述存储设备中用于存储所述目标数据的目标页。
3.根据权利要求2所述的方法,其特征在于,所述预设类型数据指示数据库事务的状态。
4.根据权利要求2或3所述的方法,其特征在于,所述目标数据的标识为所述目标数据的编号。
5.根据权利要求1至4中任意一项所述的方法,其特征在于,所述从所述多个节点对应的多个缓冲区中确定所述目标页对应的目标缓冲区包括:
根据所述目标页的页码,从所述多个节点对应的多个缓冲区中确定所述目标页对应的目标缓冲区。
6.根据权利要求5所述的方法,其特征在于,所述根据所述目标页的页码,从所述多个节点对应的多个缓冲区中确定所述目标页对应的目标缓冲区包括:
采用哈希算法获取所述目标页的页码对应的哈希值;
根据所述哈希值确定所述目标页对应的目标缓冲区,所述多个节点对应的多个缓冲区中,编码与所述哈希值对应的缓冲区为所述目标缓冲区。
7.根据权利要求1至6中任意一项所述的方法,其特征在于,所述通过控制所述目标缓冲区的目标控制器将所述目标数据写入所述目标缓冲区的页包括:
基于所述目标页的页码大于第一页码,通过控制所述目标缓冲区的目标控制器确定所述目标缓冲区对应的所述存储设备中未被初始化的至少两个页,所述至少两个页包括所述目标页;
通过控制所述目标缓冲区的目标控制器,在所述目标缓冲区内对所述至少两个页进行初始化;
其中,所述第一页码为所述存储设备中经过初始化的页的页码最大值。
8.一种读数据的方法,其特征在于,应用于计算机设备,所述计算机设备中包括存储设备和非统一内存访问架构NUMA系统的多个节点,每个节点具有缓冲区和控制所述缓冲区的控制器,所述方法包括:
获取目标数据的读请求;
响应于所述读请求,确定所述存储设备中用于存储所述目标数据的目标页;
从所述多个节点对应的多个缓冲区中确定所述目标页对应的目标缓冲区;
将所述存储设备中所述目标页中的目标数据读取到所述目标缓冲区的页;
通过控制所述目标缓冲区的目标控制器读取所述目标缓冲区的页中的所述目标数据。
9.根据权利要求8所述的方法,其特征在于,所述存储设备用于存储预设类型数据,且每条所述预设类型数据所需的存储空间是固定的;
所述目标数据属于所述预设类型数据,且所述写请求中包含所述目标数据的标识;
所述响应于所述读请求,确定所述存储设备中用于存储所述目标数据的目标页包括:
至少基于所述目标数据的标识和每条所述预设类型数据所需的存储空间,确定所述存储设备中用于存储所述目标数据的目标页。
10.根据权利要求9所述的方法,其特征在于,所述预设类型数据指示数据库事务的状态。
11.根据权利要求9或10所述的方法,其特征在于,所述目标数据的标识为所述目标数据的编号。
12.根据权利要求8至11中任意一项所述的方法,其特征在于,所述从所述多个节点对应的多个缓冲区中确定所述目标页对应的目标缓冲区包括:
根据所述目标页的页码,从所述多个节点对应的多个缓冲区中确定所述目标页对应的目标缓冲区。
13.根据权利要求12所述的方法,其特征在于,所述根据所述目标页的页码,从所述多个节点对应的多个缓冲区中确定所述目标页对应的目标缓冲区包括:
采用哈希算法获取所述目标页的页码对应的哈希值;
根据所述哈希值确定所述目标页对应的目标缓冲区,所述多个节点对应的多个缓冲区中,编码与所述哈希值对应的缓冲区为所述目标缓冲区。
14.一种写数据的装置,其特征在于,应用于计算机设备,所述计算机设备中包括非统一内存访问架构NUMA系统的多个节点,每个节点具有缓冲区和控制所述缓冲区的控制器,每个节点中的缓冲区用于对磁盘中多个磁盘页进行数据读或写;所述装置包括:
获取单元,用于获取目标数据的写请求;
确定单元,用于响应于所述写请求,确定所述存储设备中用于存储所述目标数据的目标页;
确定单元还用于从所述多个节点对应的多个缓冲区中确定所述目标页对应的目标缓冲区;
第一写单元,用于通过控制所述目标缓冲区的目标控制器将所述目标数据写入所述目标缓冲区的页;
第二写单元,还用于将所述目标缓冲区的页的数据写入所述存储设备中的所述目标页。
15.一种读数据的装置,其特征在于,应用于计算机设备,所述计算机设备中包括存储设备和非统一内存访问架构NUMA系统的多个节点,每个节点具有缓冲区和控制所述缓冲区的控制器,所述装置包括:
获取单元,用于获取目标数据的读请求;
确定单元,用于响应于所述读请求,确定所述存储设备中用于存储所述目标数据的目标页;
所述确定单元,还用于从所述多个节点对应的多个缓冲区中确定所述目标页对应的目标缓冲区;
第一读取单元,用于将所述存储设备中所述目标页中的目标数据读取到所述目标缓冲区的页;
第二读取单元,用于通过控制所述目标缓冲区的目标控制器读取所述目标缓冲区的页中的所述目标数据。
16.一种NUMA系统,其特征在于,包括:多个节点,每个节点具有缓冲区和控制所述缓冲区的控制器;
所述多个节点中的至少一个节点用于执行权利要求1至13任一项所述的方法。
17.一种计算机设备,其特征在于,所述计算机设备中包括非统一内存访问架构NUMA系统的多个节点,每个节点具有缓冲区和控制所述缓冲区的控制器;
所述多个节点中的至少一个节点用于执行权利要求1至13任一项所述的方法。
18.一种存储一个或多个计算机执行指令的计算机可读存储介质,其特征在于,当所述计算机执行指令被处理器执行时,所述处理器执行如上述权利要求1-13任意一项所述的方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010617784.8A CN113868292A (zh) | 2020-06-30 | 2020-06-30 | 一种读数据的方法、写数据的方法、设备和系统 |
PCT/CN2021/103528 WO2022002128A1 (zh) | 2020-06-30 | 2021-06-30 | 一种读数据的方法、写数据的方法、设备和系统 |
EP21834672.4A EP4170503A4 (en) | 2020-06-30 | 2021-06-30 | DATA READING METHOD, DATA WRITING METHOD, DEVICE AND SYSTEM |
US18/147,950 US12045464B2 (en) | 2020-06-30 | 2022-12-29 | Data read method, data write method, device, and system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010617784.8A CN113868292A (zh) | 2020-06-30 | 2020-06-30 | 一种读数据的方法、写数据的方法、设备和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113868292A true CN113868292A (zh) | 2021-12-31 |
Family
ID=78981750
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010617784.8A Pending CN113868292A (zh) | 2020-06-30 | 2020-06-30 | 一种读数据的方法、写数据的方法、设备和系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US12045464B2 (zh) |
EP (1) | EP4170503A4 (zh) |
CN (1) | CN113868292A (zh) |
WO (1) | WO2022002128A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115269732B (zh) * | 2022-08-11 | 2024-02-20 | 张家口市公路工程管理处 | 一种交通数据的管理方法及其系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107346267A (zh) * | 2017-07-13 | 2017-11-14 | 郑州云海信息技术有限公司 | 一种基于numa架构的cpu性能优化方法和装置 |
US20180011892A1 (en) * | 2015-01-29 | 2018-01-11 | Hewlett Packard Enterprise Development Lp | Foster twin data structure |
US10101931B1 (en) * | 2017-06-04 | 2018-10-16 | International Business Machines Corporation | Mitigating read errors following programming in a multi-level non-volatile memory |
US20190095343A1 (en) * | 2017-09-26 | 2019-03-28 | Vinodh Gopal | Low-latency accelerator |
CN110419030A (zh) * | 2016-09-28 | 2019-11-05 | 英特尔公司 | 测量非均匀存储器访问(numa)系统内按节点的带宽 |
CN111309805A (zh) * | 2019-12-13 | 2020-06-19 | 华为技术有限公司 | 数据库的数据读写方法及装置 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6785783B2 (en) * | 2000-11-30 | 2004-08-31 | International Business Machines Corporation | NUMA system with redundant main memory architecture |
CN100505676C (zh) * | 2006-12-28 | 2009-06-24 | 复旦大学 | 智能多缓冲区管理的集中调度控制器和动态调度方法 |
US11010054B1 (en) * | 2015-06-10 | 2021-05-18 | EMC IP Holding Company LLC | Exabyte-scale data processing system |
US11138120B2 (en) * | 2015-10-16 | 2021-10-05 | SK Hynix Inc. | Memory system |
WO2018001495A1 (en) * | 2016-06-30 | 2018-01-04 | Huawei Technologies Co., Ltd. | Systems and methods for managing databases |
US10936578B2 (en) * | 2017-06-01 | 2021-03-02 | Sap Se | Client-driven commit of distributed write transactions in a database environment |
CN109144410A (zh) * | 2018-07-20 | 2019-01-04 | 江苏华存电子科技有限公司 | 一种多通道提升raid保护下的闪存效能方法 |
CN112540941B (zh) * | 2019-09-21 | 2024-09-20 | 华为技术有限公司 | 一种数据转发芯片及服务器 |
US11263236B2 (en) * | 2019-11-18 | 2022-03-01 | Sap Se | Real-time cross-system database replication for hybrid-cloud elastic scaling and high-performance data virtualization |
KR20210152750A (ko) * | 2020-06-09 | 2021-12-16 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
-
2020
- 2020-06-30 CN CN202010617784.8A patent/CN113868292A/zh active Pending
-
2021
- 2021-06-30 EP EP21834672.4A patent/EP4170503A4/en active Pending
- 2021-06-30 WO PCT/CN2021/103528 patent/WO2022002128A1/zh unknown
-
2022
- 2022-12-29 US US18/147,950 patent/US12045464B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180011892A1 (en) * | 2015-01-29 | 2018-01-11 | Hewlett Packard Enterprise Development Lp | Foster twin data structure |
CN110419030A (zh) * | 2016-09-28 | 2019-11-05 | 英特尔公司 | 测量非均匀存储器访问(numa)系统内按节点的带宽 |
US10101931B1 (en) * | 2017-06-04 | 2018-10-16 | International Business Machines Corporation | Mitigating read errors following programming in a multi-level non-volatile memory |
CN107346267A (zh) * | 2017-07-13 | 2017-11-14 | 郑州云海信息技术有限公司 | 一种基于numa架构的cpu性能优化方法和装置 |
US20190095343A1 (en) * | 2017-09-26 | 2019-03-28 | Vinodh Gopal | Low-latency accelerator |
CN111309805A (zh) * | 2019-12-13 | 2020-06-19 | 华为技术有限公司 | 数据库的数据读写方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
EP4170503A1 (en) | 2023-04-26 |
US12045464B2 (en) | 2024-07-23 |
US20230161476A1 (en) | 2023-05-25 |
EP4170503A4 (en) | 2023-11-29 |
WO2022002128A1 (zh) | 2022-01-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108804112B (zh) | 一种区块链落账处理方法及系统 | |
EP1091294B1 (en) | Method and apparatus for assigning resources to logical partition clusters | |
US8627181B1 (en) | Storage apparatus, storage controller, and method for managing locations of error correcting code blocks in array | |
CN101467134B (zh) | 用于对闪存类型存储器设备中的事务进行处理的方法和装置 | |
US10055150B1 (en) | Writing volatile scattered memory metadata to flash device | |
US10891150B2 (en) | Storage control method and storage controller for user individual service environment | |
US20190332540A1 (en) | Storage management method, electronic device and computer readable medium | |
CN114780025B (zh) | 软件raid请求处理方法、控制器及raid存储系统 | |
CN114047712A (zh) | 一种基于反射内存网的半实物仿真系统的数据通信方法 | |
CN107526533B (zh) | 存储管理方法及设备 | |
US12045464B2 (en) | Data read method, data write method, device, and system | |
CN117472287B (zh) | 一种冗余磁盘阵列巡检方法、装置、设备、介质 | |
US11474938B2 (en) | Data storage system with multiple-size object allocator for disk cache | |
CN110413217B (zh) | 管理存储系统的方法、设备和计算机程序产品 | |
CN107430546B (zh) | 一种文件更新方法及存储设备 | |
US10402315B1 (en) | Data storage system configured to write volatile scattered memory metadata to a non-volatile memory | |
CN117687569A (zh) | 磁盘性能优化方法、系统、电子设备及存储介质 | |
CN104657216A (zh) | 一种资源池的资源分配方法及装置 | |
CN108509154B (zh) | 一种根据坏块分布动态重组raid的方法和装置 | |
CN112463621B (zh) | 回归测试管理方法、存储介质管理方法、装置、设备及介质 | |
CN112068948B (zh) | 数据散列方法、可读存储介质和电子设备 | |
CN113836238A (zh) | 数据命令的批量处理方法及装置 | |
EP4033346B1 (en) | Affinity-based cache operation for a persistent storage device | |
CN111158605B (zh) | 用于优化操作系统磁盘存储策略的方法、装置和智能设备 | |
US11803443B2 (en) | Storage system, data copy control method, and recording 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 |