WO2017050064A1 - 共享内存数据库的内存管理方法及装置 - Google Patents

共享内存数据库的内存管理方法及装置 Download PDF

Info

Publication number
WO2017050064A1
WO2017050064A1 PCT/CN2016/095355 CN2016095355W WO2017050064A1 WO 2017050064 A1 WO2017050064 A1 WO 2017050064A1 CN 2016095355 W CN2016095355 W CN 2016095355W WO 2017050064 A1 WO2017050064 A1 WO 2017050064A1
Authority
WO
WIPO (PCT)
Prior art keywords
database
memory
physical memory
space
physical
Prior art date
Application number
PCT/CN2016/095355
Other languages
English (en)
French (fr)
Inventor
耿常才
李响
葛聪
Original Assignee
中兴通讯股份有限公司
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by 中兴通讯股份有限公司 filed Critical 中兴通讯股份有限公司
Publication of WO2017050064A1 publication Critical patent/WO2017050064A1/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation

Definitions

  • This application relates to, but is not limited to, the field of in-memory database management technology.
  • the storage technology needs to meet the capacity expansion function with high reliability.
  • the in-memory database can meet the above requirements for the high-reliability expansion function of the storage technology. Has been widely used.
  • a shared memory method can be used to establish an in-memory database.
  • the architecture of the database is as shown in FIG.
  • FIG. A schematic diagram of establishing a database using shared memory.
  • shared memory mode when accessing data in multiple processes, you can directly access memory without having to copy data between processes and copy data multiple times.
  • Figure 2 multiple processes accessing shared memory in the database in the related art.
  • Schematic diagram In addition, in order to manage the simplicity and the stability and performance needs, when the shared memory is opened, the fixed size is generally fixed.
  • FIG. 3 A schematic diagram of the memory in the database.
  • the management method is to divide the memory into multiple segments of the same size. When expanding, apply for the shared memory of the specified segment size to join the memory management module to improve the memory database capacity. This method does not restart.
  • the database instance can expand the memory requirements, but when accessing the record data, it is necessary to first determine which segment the data is in, that is, it may access the data across the memory segment and access the data between multiple segments, although it seems that the operation is relatively simple. But for an in-memory database with high performance requirements When searching for data across segments, the performance is greatly reduced, which has a great impact on the memory database with extremely high performance requirements; Storage also requires a certain mechanism to notify each process to map, and the management method is more complicated.
  • the present invention provides a memory management method and device for a shared memory database, which solves the problem that the memory database access performance is degraded due to the discontinuous multi-segment shared memory database address and the need to access data across segments; and the multi-segment is simplified.
  • the shared memory database is expanded, the shared memory needs to be remapped, which causes high management complexity, and the program stability and access efficiency are improved accordingly.
  • a memory management method for a shared memory database comprising:
  • the second physical memory of the preset expansion step size is added to the virtual memory space of the database, and the start address of the second physical memory is set to the previous physical The tail address of the memory;
  • the method further includes: determining whether the free memory of the database is less than a preset threshold, and after obtaining the first determination result, the method further includes:
  • the second physical memory of the preset expansion step size is added to the virtual memory space of the database, and the start address of the second physical memory is set.
  • the tail address of the last physical memory including:
  • the second physical memory of the preset expansion step size is added to the virtual memory space of the database, and the second The starting address of the physical memory is set to the tail address of the last physical memory.
  • the method further includes:
  • the method further includes: before the virtual memory space is allocated to the database according to a maximum value of the preset database capacity in the space for creating the database, the method further includes:
  • the size of the first physical memory is an initial value of the database capacity.
  • a memory management device for a shared memory database comprising:
  • Create a module set to: allocate a virtual memory space to the database according to a maximum value of a preset database capacity in a space for creating a database;
  • a first allocation module configured to: allocate a first physical memory to the database, set a start address of the first physical memory to a start address of the virtual memory space allocated by the creating module to the database, and Inserting data or modifying data in the first physical memory;
  • the first determining module is configured to: determine whether the free memory of the database is less than a preset threshold, and obtain a first determination result;
  • the second allocation module is configured to: when the first determination result obtained by the first determining module is YES, add a second physical memory of a preset expansion step size to the virtual memory space of the database, And setting a start address of the second physical memory as a tail address of the last physical memory;
  • the expansion module is configured to: expand the available memory space of the database, and trigger the first determining module to determine whether the free memory of the database is less than the preset threshold.
  • the device further includes:
  • the second judging module is configured to: determine whether a sum of a current physical memory space of the database and a size of the preset expansion step is smaller than a size of the virtual memory space, and obtain a second judgment fruit;
  • the second allocation module is further configured to: when the first determination result obtained by the first determining module and the second determination result obtained by the second determining module are both yes, the pre- The second physical memory of the expansion step size is added to the virtual memory space of the database, and the start address of the second physical memory is set as the tail address of the previous physical memory.
  • the device further includes:
  • the write data module is configured to insert data or modify data in the second physical memory.
  • the device further includes:
  • the setting module is configured to: set a maximum value of the database capacity, an initial value of the database capacity, and a size expansion step size of the database.
  • the size of the first physical memory is an initial value of the database capacity.
  • the memory management method and device for the shared memory database provided by the embodiment of the present invention are managed by using a shared memory mode and using virtual memory space and physical memory respectively, and each process starts to map the entire virtual memory space, thereby
  • the memory is expanded, the applied multiple pieces of physical memory are added to the virtual memory space, and the plurality of physical memory are connected into one continuous physical memory, and the database memory capacity is increased, and the database memory is a continuous whole.
  • the database accesses the data, it does not need to search across the segments. Before and after the expansion, the performance will not be reduced.
  • the shared shared memory space is the entire virtual memory space. After the database memory is expanded, no notification is required.
  • Each process remaps shared memory, improves database access efficiency during multi-process access during database expansion, and reduces the complexity of capacity expansion management. Compared with segmented shared memory management, performance can reach 20-40%. improve.
  • FIG. 1 is a schematic diagram of establishing a database by using a shared memory manner in the related art
  • FIG. 2 is a schematic diagram of a shared memory in a multi-process access database in the related art
  • FIG. 3 is a schematic diagram of a memory used in a segmented management database in the related art
  • FIG. 4 is a flowchart of a memory management method for a shared memory database according to an embodiment of the present invention.
  • FIG. 5 is a flowchart of another memory management method for a shared memory database according to an embodiment of the present invention.
  • FIG. 6 is a schematic structural diagram of a memory management apparatus for a shared memory database according to an embodiment of the present invention.
  • FIG. 7 is a schematic structural diagram of another memory management apparatus for sharing a memory database according to an embodiment of the present invention.
  • FIG. 8 is a flowchart of creating a shared memory when a database is started in a memory management method of a shared memory database according to an embodiment of the present disclosure
  • FIG. 9 is a flowchart of a method for expanding a shared memory database in a memory management method for a shared memory database according to an embodiment of the present invention.
  • FIG. 10 is a schematic diagram of a correspondence between a virtual memory space and a physical memory in a memory management method for a shared memory database according to an embodiment of the present invention
  • FIG. 11 is a schematic diagram of another virtual memory space and physical memory correspondence in a memory management method for a shared memory database according to an embodiment of the present invention.
  • FIG. 12 is a schematic diagram of another correspondence between a virtual memory space and a physical memory in a memory management method for a shared memory database according to an embodiment of the present disclosure
  • FIG. 13 is a schematic diagram of a correspondence between a virtual memory space and a physical memory in a memory management method of a shared memory database according to an embodiment of the present disclosure
  • FIG. 14 is a schematic diagram of a correspondence between a virtual memory space and a physical memory in a memory management method of a shared memory database according to an embodiment of the present invention.
  • the embodiment of the invention provides a memory management method and device for a shared memory database, which can solve the problem that the memory database access performance is degraded due to the discontinuous multi-segment shared memory database address and the need to access data across the segment in the related art;
  • the management complexity of the shared memory is required to be re-mapped, and the program stability and access efficiency are improved accordingly.
  • the memory management method of the shared memory database may include the following steps, that is, steps 110 to 150:
  • Step 110 Allocating a virtual memory space to the database according to a maximum value of a preset database capacity in a space for creating a database;
  • Step 120 Allocating a first physical memory to the database, setting a start address of the first physical memory as a start address of the virtual memory space, and inserting data or modifying data in the first physical memory;
  • Step 130 Determine whether the free memory of the database is less than a preset threshold, and obtain a first determination result
  • Step 140 When the first determination result is yes, add the second physical memory of the preset expansion step size to the virtual memory space of the database, and set the start address of the second physical memory to the previous physical The tail address of the memory;
  • Step 150 Expand the available memory space of the database; and determine again whether the free memory of the database is less than a preset threshold, that is, after performing step 150, the process proceeds to step 130.
  • the memory management method of the shared memory database is managed by using a shared memory mode and using virtual memory space and physical memory respectively, and each process starts to map the entire virtual memory space, so that in subsequent memory expansion.
  • the shared shared memory space is the entire virtual memory space. After the database memory is expanded, It is not necessary to notify each process to remap shared memory, which improves the efficiency of multi-process access database access during database expansion and reduces the complexity of capacity expansion management. Compared with segmented shared memory management, performance can reach 20-40%. The improvement of the left and right.
  • FIG. 5 is a flowchart of another memory management method for a shared memory database according to an embodiment of the present invention.
  • the method provided in this embodiment may further include:
  • Step 131 Determine whether the sum of the current physical memory space of the database and the size of the preset expansion step is smaller than the size of the virtual memory space, and obtain a second determination result;
  • the second physical memory of the preset expansion step size is added to the virtual memory space of the database, and the start address of the second physical memory is set to The tail address of a physical memory, that is, the implementation of the step 140 may be: when the first determination result and the second determination result are both, the second physical memory of the preset expansion step size is added to the virtual of the database. In the memory space, set the start address of the second physical memory to the tail address of the previous physical memory.
  • the method provided in this embodiment may further include:
  • step 160 data is inserted or modified in the second physical memory.
  • the method may further include:
  • step 100 the maximum value of the database capacity, the initial value of the database capacity, and the expansion step size of the database are set.
  • the size of the first physical memory is an initial value of the database capacity.
  • FIG. 6 is a schematic structural diagram of a memory management apparatus for a shared memory database according to an embodiment of the present invention.
  • the memory management apparatus of the shared memory database provided in this embodiment may include: Block 11, first distribution module 12, first determination module 13, second distribution module 14, and expansion module 15.
  • the module 11 is configured to: allocate a virtual memory space to the database according to a maximum value of a preset database capacity in a space for creating a database;
  • the first allocation module 12 is configured to: allocate a first physical memory to the database, set a start address of the first physical memory to a start address of a virtual memory space allocated by the creating module 11 for the database, and in the first physical memory Insert data or modify data;
  • the first determining module 13 is configured to: determine whether the free memory of the database is less than a preset threshold, and obtain a first determination result;
  • the second allocation module 14 is configured to: when the first determination result obtained by the first determining module 13 is YES, add the second physical memory of the preset expansion step size to the virtual memory space of the database, and The start address of the second physical memory is set to the tail address of the previous physical memory;
  • the expansion module 15 is configured to: expand the available memory space of the database, and trigger the first determining module 13 to determine again whether the free memory of the database is less than a preset threshold.
  • the expansion module 15 in the embodiment of the present invention may further trigger the first determining module 13 to determine whether the free memory of the database is less than a preset threshold after performing the expansion of the available memory space of the database.
  • the memory management device of the shared memory database uses a shared memory mode and is managed by using a virtual memory space and a physical memory respectively.
  • the entire virtual memory space is mapped, so that during subsequent memory expansion.
  • the shared shared memory space is the entire virtual memory space. After the database memory is expanded, the processes are not notified. Mapping shared memory improves the efficiency of multi-process access database access during database expansion and reduces the complexity of capacity expansion management. Compared with segmented shared memory management, performance can be improved by 20-40%.
  • FIG. 7 is a schematic structural diagram of another memory management apparatus for sharing an in-memory database according to an embodiment of the present invention.
  • the apparatus provided in this embodiment may further include:
  • the second determining module 16 is configured to: determine whether the sum of the current physical memory space of the database and the size of the preset expansion step is smaller than the size of the virtual memory space, and obtain a second determination result;
  • the second allocation module 14 is further configured to: when the first determination result obtained by the first determining module 13 and the second determination result obtained by the second determining module 16 are both yes, the second physics of the preset expansion step size is The memory is added to the virtual memory space of the database, and the start address of the second physical memory is set to the tail address of the previous physical memory.
  • the apparatus provided by the embodiment of the present invention may further include:
  • the write data module 17 is arranged to insert data or modify data in the second physical memory.
  • the apparatus provided by the embodiment of the present invention may further include:
  • the setting module 18 is configured to: set a maximum value of the database capacity, an initial value of the database capacity, and a size expansion step size of the database.
  • the size of the first physical memory is an initial value of the database capacity.
  • the embodiment of the present invention further provides a memory management method for a shared memory database, including the following steps, that is, steps A to H:
  • Step A set the initial value of the database capacity on the startup database node as needed, and the unit is M;
  • Step B set the maximum value of the database capacity on the startup database node as needed, and the unit is M;
  • Step C set the size of each expansion step of the database on the startup database node as needed, and the unit is M;
  • step D the shared memory database is started.
  • the virtual memory space is allocated to the database according to the maximum database capacity in the space for creating the database; in actual application, the physical memory of the maximum capacity of the database is not occupied at this time, but only in the process. Space occupies so much virtual memory space, excess physical memory can be used by other processes;
  • Step E allocate the physical memory of the initial value of the database capacity to the database, and at the same time The physical memory is aligned to the start address of the virtual memory space, that is, the start address of the physical memory is set as the start address of the virtual memory space;
  • Step F When other application processes connect to the database, the shared memory needs to be opened, and the shared memory is mapped to the entire virtual memory space, that is, the entire virtual memory space applied in step D;
  • Step G at this time, the shared memory database stores the business data according to the allocated physical memory size, that is, the database inserts the record (that is, the data) into the physical memory;
  • Step H as the record is continuously inserted, the originally allocated physical memory is not enough. At this time, the database expansion mechanism is enabled.
  • Database expansion includes the following steps, step I to step L:
  • Step I when inserting or modifying the record or periodically viewing the free space of the database, it is found that the free memory has no free space or the free space is less than the preset threshold;
  • step J the physical memory of the expansion step size of the database configured in step C is added to the virtual memory space.
  • the start address of the physical memory is the tail address of the virtual memory space corresponding to the last physical memory, so that the physics before the expansion.
  • the memory and the expanded physical memory are connected end to end, and there is no gap in the middle to form a continuous physical memory, just like re-applying a large continuous physical memory;
  • Step K expanding the available memory space of the database, and the entire database has undergone one expansion
  • Step L if there is a record insertion or modification at this time, insert the record into the physical memory of the new application.
  • the memory management of the database in the embodiment is managed by using a shared memory mode, and the virtual memory space and the physical memory are respectively managed, and each process starts to map the entire virtual memory space, thereby being in the subsequent memory.
  • the application of multiple pieces of physical memory is added to the virtual memory space, and the multiple physical memory is connected into a continuous physical memory, and the database memory capacity is increased, so the memory of the database is always a continuous whole.
  • the database accesses the data, it does not need to search across the segments. Before and after the expansion, the performance will not be reduced.
  • the shared shared memory space is the entire virtual memory space. After the memory expansion, the memory is not used.
  • FIG. 8 a flowchart of a shared memory creation during database startup in a memory management method for a shared memory database according to an embodiment of the present invention, where the shared memory database is started when the shared memory database is started.
  • the shared memory mapping method which may include the following steps, that is, steps 101 to 203:
  • Step 101 According to the service requirement, the database service process 100 sets an initial value of the database capacity, for example, 200 megabytes (M), and puts the value into the dbspace management area of the shared memory;
  • M the initial value of the database capacity
  • the functions of this embodiment are implemented by the database service process 100 and the application process 200 in cooperation.
  • the following capacity size is just an example, and other values can be used.
  • This embodiment uses the following set of values to describe, that is, the initial value of the database capacity is 200M, the maximum database capacity is 1000M, and the data capacity expansion step is 10M.
  • the embodiment supports a plurality of operating systems including a Linux (operating system) system, and the expansion step of the database is variable, for example, it can be set to 1M, 2M, or 3M, and the maximum capacity of the database can be set according to actual needs, for example, It depends on the maximum memory capacity of the board as needed.
  • Step 102 the database service process 100 sets a maximum database capacity, for example, 1000M, and puts the value into a dbspace management area of the shared memory;
  • Step 103 the database service process 100 sets the database capacity expansion step size, for example, each time the capacity is expanded to 10M, and the value is put into the dbspace management area of the shared memory;
  • Step 104 the database service process 100 starts the database, and requests the virtual memory space, the size is the maximum database capacity set in step 102, for example, the application virtual memory space is 1000M, and if the virtual memory space start address is ADDR1, the terminal is terminated. The address is ADDR1+1000M.
  • FIG. 10 it is a schematic diagram of a virtual memory space and physical memory correspondence in the memory management method of the shared memory database provided by the embodiment of the present invention. At this point, the database can not provide external services, because at this time has not applied for physical memory, just applied for virtual memory space.
  • Step 105 allocating physical memory, the size is the initial value of the database capacity, and is aligned into the virtual
  • the storage space start address that is, the physical memory of the initial value of the database capacity is requested by using ADDR1 as the start address in step 104.
  • the physical memory is mapped to the virtual memory start address.
  • FIG. 11 is another memory management method of the shared memory database provided by the embodiment of the present invention. Schematic diagram of the correspondence between virtual memory space and physical memory.
  • the [ADDR1, ADDR1+200M] virtual memory space can be used for business storage data, and the actual available database capacity is 200M.
  • the shared space database space management area the current database free space will be modified.
  • the size is 200M.
  • Step 106 the database startup is completed
  • Step 201 the application process 200 is initialized
  • Step 202 the application process 200 connects to the shared memory database, that is, opens the shared memory.
  • Step 203 When the shared memory is mapped, the application process 200 maps the entire virtual memory space to the application process. At this time, the application process 200 can access the database, and the record can be added, deleted, changed, and checked in the database. Of course, only the address to which the physical memory is allocated can be used at this time, in this embodiment, [ADDR1, ADDR1+200M] This 200M space.
  • FIG. 9 is a flowchart of a method for expanding a shared memory database in a memory management method of a shared memory database according to an embodiment of the present invention
  • the method provided in this embodiment may include the following steps, that is, step 301 ⁇ Step 306.
  • the capacity expansion function of the embodiment is performed by the database application process 300, for example, the database service process 100 in FIG. 8, or may be the application process 200 in FIG. In practical applications, the following numerical values are merely examples and may be other values.
  • Step 301 When the service inserts data, apply for memory from the free memory of the database.
  • the available memory address space is the upper part shown in Figure 11, that is, the address is applied from the range of [ADDR1, ADDR1+200M];
  • Step 302 Determine whether the free memory is insufficient, and whether the available free memory is less than a preset preset; that is, whether there is available memory in the memory of [ADDR1, ADDR1+200M], and the criterion is whether the remaining memory can accommodate the record. Or the remaining memory is less than a certain threshold; if it is determined that the free memory is insufficient, step 303 is performed; otherwise, step 306 is performed;
  • Step 303 starting database capacity expansion
  • Step 304 Apply ADDR1+200M as the starting address, apply for the physical capacity of the database capacity expansion step size, and align to the tail address of the previous physical memory, for example, the expansion step size is 10M; at this time, the virtual memory space corresponds to the physical memory.
  • FIG. 12 is a schematic diagram showing another correspondence between a virtual memory space and a physical memory in a memory management method for a shared memory database according to an embodiment of the present invention.
  • Step 305 Manage the capacity information of the database, and the capacity information is also stored in the shared memory.
  • the space of the database becomes [ADDR1, ADDR1+210M]
  • the free memory becomes [ADDR1+200M, ADDR1+210M], as shown in the figure. 12; because the database capacity information is also in the shared memory, after the expansion, each process can see the capacity change;
  • Step 306 After the application for the memory is completed, insert data or modify the data in the expanded physical memory.
  • the memory When the capacity is expanded, the memory is continuously applied to the virtual memory space, for example, the virtual memory space and the physical memory after the second expansion is completed.
  • FIG. 13 is a schematic diagram showing a correspondence between a virtual memory space and a physical memory in a memory management method for a shared memory database according to an embodiment of the present invention.
  • FIG. 14 is a shared memory database according to an embodiment of the present invention.
  • the memory management method also has a schematic diagram of the correspondence between the virtual memory space and the physical memory
  • FIG. 14 is a schematic diagram when the virtual memory space is completely used up, and the expansion is cut off at this time.
  • the shared memory mode is adopted, and the virtual memory space and the physical memory are separately managed, and each process starts to map the entire virtual memory space, so that when the subsequent memory expansion is performed, the application will be applied.
  • the multiple pieces of physical memory are added to the virtual memory space, and the multiple pieces of physical memory are connected into one continuous physical memory, and the database memory capacity is increased.
  • the memory of the database is a continuous whole, and the database is accessing the data at this time. When you do not use cross-segment search, performance will not be reduced before and after expansion.
  • the shared shared memory space is the entire virtual memory space.
  • the modules may be implemented in software for execution by various types of processors.
  • an identified executable code module can comprise one or more physical or logical blocks of computer instructions, which can be constructed, for example, as an object, procedure, or function. Nevertheless, the executable code of the identified modules need not be physically located together, but may include different instructions stored in different physicalities. When these instructions are logically combined, they constitute a module and achieve the specified purpose of the module. .
  • the executable code module can be a single instruction or a plurality of instructions, and can even be distributed across multiple different code segments, distributed among different programs, and distributed across multiple memory devices.
  • operational data may be identified within the modules and may be implemented in any suitable form and organized within any suitable type of data structure. The operational data may be collected as a single data set, or may be distributed at different locations (including on different storage devices), and may at least partially exist as an electronic signal on a system or network.
  • the module can be implemented by software, considering the level of the hardware process in the related art, the module can be implemented in software, and the technician can construct the corresponding hardware circuit to realize the corresponding function without considering the cost.
  • the hardware circuit includes a conventional Very Large Scale Integration (VLSI) circuit or gate array and a related art such as a logic chip, a transistor, or other discrete components.
  • VLSI Very Large Scale Integration
  • the modules can also be implemented with programmable hardware devices such as field programmable gate arrays, programmable array logic, programmable logic devices, and the like.
  • all or part of the steps of the above embodiments may also be implemented by using an integrated circuit. These steps may be separately fabricated into individual integrated circuit modules, or multiple modules or steps may be fabricated into a single integrated circuit module. achieve.
  • the device/function module/functional unit in the above embodiment can be implemented by using a general-purpose computing device. Now, they can be concentrated on a single computing device or distributed over a network of multiple computing devices.
  • the device/function module/functional unit in the above embodiment When the device/function module/functional unit in the above embodiment is implemented in the form of a software function module and sold or used as a stand-alone product, it can be stored in a computer readable storage medium.
  • the above mentioned computer readable storage medium may be a read only memory, a magnetic disk or an optical disk or the like.
  • the shared memory mode is adopted, and the virtual memory space and the physical memory are separately managed, and each process starts to map the entire virtual memory space, so that when the subsequent memory is expanded, the applied multiple physical memory is supplemented.
  • the database memory is a continuous whole, when the database access data, do not cross-segment search Before and after the expansion, the performance will not be reduced.
  • the shared shared memory space is the entire virtual memory space. After the database memory is expanded, the shared memory is not notified by each process, and the database is expanded.
  • the performance can be improved by 20 to 40%.

Abstract

一种共享内存数据库的内存管理方法及装置,其中,该方法包括:在创建数据库的空间中按照预设的数据库容量的最大值为数据库分配虚拟内存空间;为数据库分配第一物理内存,将第一物理内存的开始地址设为虚拟内存空间的开始地址,并在第一物理内存中插入数据或修改数据;判断数据库的空闲内存是否小于预设阈值,得到第一判断结果;在第一判断结果为是时,将预设扩容步长大小的第二物理内存加入到数据库的虚拟内存空间中,并将第二物理内存的开始地址设为上一物理内存的尾部地址;扩大数据库可用的内存空间。

Description

共享内存数据库的内存管理方法及装置 技术领域
本申请涉及但不限于内存数据库管理技术领域。
背景技术
在相关技术的电信领域中,业务对于数据访问一般具有很高的性能要求,特别面对大量用户使用的数据时,不仅要求对数据访问和存储要有很高的性能,还要求有可靠的扩容功能来应对电信领域不断增长的数据。
因此,在电信应用领域中,存储技术需要满足具有高可靠性的扩容功能,内存数据库作为一种高性能数据访问存储技术,可以满足上述对存储技术高可靠性的扩容功能的要求,在电信领域已经被广泛应用。
相关技术中为了适应多核、多进程,以及多线程访问内存数据库的需要,并且为了满足较高的效率,可以采用共享内存方式来建立内存数据库,该数据库的架构如图1所示,为相关技术中采用共享内存方式建立数据库的示意图。采用共享内存方式,在多进程访问数据时,就可以直接访问内存,而不需要在进程间传递数据而多次数据拷贝了,如图2所示,为相关技术中多进程访问数据库中共享内存的示意图。另外,为了管理简单以及稳定性和性能的需要,开辟共享内存时,一般都固定大小,当数据增多到当前数据库内存无法容纳时,需要重新修改申请数据库内存大小配置参数并重启数据库实例,然后再装载数据,这样,就中断了对外服务;有些共享内存数据库虽然能不重启就扩大数据库容量,但其内存采用分段式管理方式,如图3所示,,为相关技术中采用分段式管理数据库中内存的示意图,该管理方式为,将内存分成多个相同大小的段,扩容时,申请指定段大小的共享内存加入内存管理模块,以提高内存数据库容量,该种方式虽然满足了不重启数据库实例就能扩充内存的要求,但在存取记录数据时需要先判断数据在哪一个段中,即可能会跨内存段存取数据,在多段之间存取数据,虽然看起来操作比较简单,但对于本身性能要求很高的内存数据库来说,跨段查找数据时,性能会大幅地降低,这对性能要求极高的内存数据库影响很大;另外该段新申请的共享内 存也需要一定的机制来通知各个进程来映射,管理方式较为复杂。
发明内容
以下是对本文详细描述的主题的概述。本概述并非是为了限制权利要求的保护范围。
本文提供一种共享内存数据库的内存管理方法及装置,以解决相关技术中由于多段式共享内存数据库地址不连续、需要跨段存取数据而造成的内存数据库访问性能下降的问题;并且简化了多段式共享内存数据库扩容时需要重新映射共享内存而造成的管理复杂性较高的问题,相应地提高了程序稳定性和访问效率。
一种共享内存数据库的内存管理方法,包括:
在创建数据库的空间中按照预设的数据库容量的最大值为所述数据库分配虚拟内存空间;
为所述数据库分配第一物理内存,将所述第一物理内存的开始地址设为所述虚拟内存空间的开始地址,并在所述第一物理内存中插入数据或修改数据;
判断所述数据库的空闲内存是否小于预设阈值,得到第一判断结果;
在所述第一判断结果为是时,将预设扩容步长大小的第二物理内存加入到所述数据库的虚拟内存空间中,并将所述第二物理内存的开始地址设为上一物理内存的尾部地址;
扩大所述数据库可用的内存空间,并再次判断所述数据库的空闲内存是否小于所述预设阈值。
可选地,所述判断所述数据库的空闲内存是否小于预设阈值,得到第一判断结果之后,所述方法还包括:
判断所述数据库的当前物理内存空间与所述预设扩容步长的大小之和是否小于所述虚拟内存空间的大小,得到第二判断结果;
所述在所述第一判断结果为是时,将预设扩容步长大小的第二物理内存加入到所述数据库的虚拟内存空间中,并将所述第二物理内存的开始地址设 为上一物理内存的尾部地址,包括:
在所述第一判断结果和所述第二判断结果均为是时,将所述预设扩容步长大小的第二物理内存加入到所述数据库的虚拟内存空间中,并将所述第二物理内存的开始地址设为上一物理内存的尾部地址。
可选地,所述扩大所述数据库可用的内存空间之后,所述方法还包括:
在所述第二物理内存中插入数据或修改数据。
可选地,所述在创建数据库的空间中按照预设的数据库容量的最大值为所述数据库分配虚拟内存空间之前,所述方法还包括:
设置所述数据库容量的最大值、所述数据库容量的初始值和所述数据库的扩容步长大小。
可选地,所述第一物理内存的大小为所述数据库容量的初始值。
一种共享内存数据库的内存管理装置,包括:
创建模块,设置为:在创建数据库的空间中按照预设的数据库容量的最大值为所述数据库分配虚拟内存空间;
第一分配模块,设置为:为所述数据库分配第一物理内存,将所述第一物理内存的开始地址设为所述创建模块为所述数据库分配的所述虚拟内存空间的开始地址,并在所述第一物理内存中插入数据或修改数据;
第一判断模块,设置为:判断所述数据库的空闲内存是否小于预设阈值,得到第一判断结果;
第二分配模块,设置为:在所述第一判断模块得到的所述第一判断结果为是时,将预设扩容步长大小的第二物理内存加入到所述数据库的虚拟内存空间中,并将所述第二物理内存的开始地址设为上一物理内存的尾部地址;
扩容模块,设置为:扩大所述数据库可用的内存空间,并触发所述第一判断模块再次判断所述数据库的空闲内存是否小于所述预设阈值。
可选地,所述装置还包括:
第二判断模块,设置为:判断所述数据库的当前物理内存空间与所述预设扩容步长的大小之和是否小于所述虚拟内存空间的大小,得到第二判断结 果;
所述第二分配模块,还设置为:在所述第一判断模块得到的所述第一判断结果和所述第二判断模块得到的所述第二判断结果均为是时,将所述预设扩容步长大小的第二物理内存加入到所述数据库的虚拟内存空间中,并将所述第二物理内存的开始地址设为上一物理内存的尾部地址。
可选地,所述装置还包括:
写数据模块,设置为:在所述第二物理内存中插入数据或修改数据。
可选地,所述装置还包括:
设置模块,设置为:设置所述数据库容量的最大值、所述数据库容量的初始值和所述数据库的扩容步长大小。
可选地,所述第一物理内存的大小为所述数据库容量的初始值。
本发明实施例提供的共享内存数据库的内存管理方法及装置,通过采用共享内存方式,并且采用虚拟内存空间和物理内存分别管理,各进程在启动时,会映射整块虚拟内存空间,从而在后续内存扩容时,将申请的多块物理内存补充到该虚拟内存空间中,并且使多块物理内存连成一个连续的物理内存,同时增大数据库内存容量,数据库的内存是连续的一个整体,此时数据库在存取数据时,不用跨段查找,扩容前后,性能不会降低;另外,在多进程连接到数据库时,打开的共享内存空间是整个虚拟内存空间,在数据库内存扩容后,不用通知各个进程重新映射共享内存,提高了数据库在扩容期间多进程访问数据库访问效率以及减小扩容管理复杂性的,与分段式共享内存管理相比,在性能上,能够达到20~40%左右的提高。
在阅读并理解了附图和详细描述后,可以明白其他方面。
附图概述
图1为相关技术中采用共享内存方式建立数据库的示意图;
图2为相关技术中多进程访问数据库中共享内存的示意图;
图3为相关技术中采用分段式管理数据库中内存的示意图;
图4为本发明实施例提供的一种共享内存数据库的内存管理方法的流程图;
图5为本发明实施例提供的另一种共享内存数据库的内存管理方法的流程图;
图6为本发明实施例提供的一种共享内存数据库的内存管理装置的结构示意图;
图7为本发明实施例提供的另一种共享内存数据库的内存管理装置的结构示意图;
图8为本发明实施例提供的提供的共享内存数据库的内存管理方法中一种数据库启动时共享内存创建的流程图;
图9为本发明实施例提供的共享内存数据库的内存管理方法中一种共享内存数据库扩容方法的流程图;
图10为本发明实施例提供的共享内存数据库的内存管理方法中一种虚拟内存空间和物理内存对应关系的示意图;
图11为本发明实施例提供的共享内存数据库的内存管理方法中另一种虚拟内存空间和物理内存对应关系的示意图;
图12为本发明实施例提供的共享内存数据库的内存管理方法中又一种虚拟内存空间和物理内存对应关系的示意图;
图13为本发明实施例提供的共享内存数据库的内存管理方法中再一种虚拟内存空间和物理内存对应关系的示意图;
图14为本发明实施例提供的共享内存数据库的内存管理方法中还一种虚拟内存空间和物理内存对应关系的示意图。
本发明的实施方式
下文中将结合附图对本发明的实施方式进行详细说明。需要说明的是,在不冲突的情况下,本文中的实施例及实施例中的特征可以相互任意组合。
在附图的流程图示出的步骤可以在诸根据一组计算机可执行指令的计算 机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本发明实施例提供了共享内存数据库的内存管理方法及装置,能够解决相关技术中由于多段式共享内存数据库地址不连续、需要跨段存取数据而造成的内存数据库访问性能下降的问题;并且简化了多段式共享内存数据库扩容时需要重新映射共享内存而造成的管理复杂性较高的问题,相应地提高了程序稳定性和访问效率。
如图4所示,为本发明实施例提供的一种共享内存数据库的内存管理方法的流程图,本实施例提供的共享内存数据库的内存管理方法可以包括如下步骤,即步骤110~步骤150:
步骤110,在创建数据库的空间中按照预设的数据库容量的最大值为该数据库分配虚拟内存空间;
步骤120,为该数据库分配第一物理内存,将该第一物理内存的开始地址设为虚拟内存空间的开始地址,并在该第一物理内存中插入数据或修改数据;
步骤130,判断该数据库的空闲内存是否小于预设阈值,得到第一判断结果;
步骤140,在该第一判断结果为是时,将预设扩容步长大小的第二物理内存加入到该数据库的虚拟内存空间中,并将该第二物理内存的开始地址设为上一物理内存的尾部地址;
步骤150,扩大该数据库可用的内存空间;并再次判断所述数据库的空闲内存是否小于预设阈值,即执行步骤150后转向执行步骤130。
本实施例提供的共享内存数据库的内存管理方法,通过采用共享内存方式,并且采用虚拟内存空间和物理内存分别管理,各进程在启动时,会映射整块虚拟内存空间,从而在后续内存扩容时,将申请的多块物理内存补充到该虚拟内存空间中,并且使多块物理内存连成一个连续的物理内存,同时增大数据库内存容量,数据库的内存是连续的一个整体,此时数据库在存取数据时,不用跨段查找,扩容前后,性能不会降低;另外,在多进程连接到数据库时,打开的共享内存空间是整个虚拟内存空间,在数据库内存扩容后, 不用通知各个进程重新映射共享内存,提高了数据库在扩容期间多进程访问数据库访问效率以及减小扩容管理复杂性的,与分段式共享内存管理相比,在性能上,能够达到20~40%左右的提高。
可选地,图5为本发明实施例提供的另一种共享内存数据库的内存管理方法的流程图,在图4所示实施例的基础上,判断该数据库的空闲内存是否小于预设阈值,得到第一判断结果之后,即步骤130之后,本实施例提供的方法还可以包括:
步骤131,判断该数据库的当前物理内存空间与预设扩容步长的大小之和是否小于虚拟内存空间的大小,得到第二判断结果;
在本实施例中,在该第一判断结果为是时,将预设扩容步长大小的第二物理内存加入到该数据库的虚拟内存空间中,并将第二物理内存的开始地址设为上一物理内存的尾部地址,即步骤140的实现方式可以为:在第一判断结果和第二判断结果均为是时,将预设扩容步长大小的第二物理内存加入到所述数据库的虚拟内存空间中,并将第二物理内存的开始地址设为上一物理内存的尾部地址。
可选地,在本发明实施例中,扩大所述数据库可用的内存空间之后,即,步骤150之后,本实施例提供的方法还可以包括:
步骤160,在第二物理内存中插入数据或修改数据。
可选地,在本发明实施例中,在创建数据库的空间中按照预设的数据库容量的最大值为该数据库分配虚拟内存空间之前,即步骤110之前,还可以包括:
步骤100,设置数据库容量的最大值、数据库容量的初始值和数据库的扩容步长大小。
可选地,在本发明实施例中,上述第一物理内存的大小为该数据库容量的初始值。
图6为本发明实施例提供的一种共享内存数据库的内存管理装置的结构示意图,本实施例提供的共享内存数据库的内存管理装置可以包括:创建模 块11、第一分配模块12、第一判断模块13、第二分配模块14和扩容模块15。
创建模块11,设置为:在创建数据库的空间中按照预设的数据库容量的最大值为该数据库分配虚拟内存空间;
第一分配模块12,设置为:为该数据库分配第一物理内存,将第一物理内存的开始地址设为创建模块11为该数据库分配的虚拟内存空间的开始地址,并在该第一物理内存中插入数据或修改数据;
第一判断模块13,设置为:判断该数据库的空闲内存是否小于预设阈值,得到第一判断结果;
第二分配模块14,设置为:在第一判断模块13得到的第一判断结果为是时,将预设扩容步长大小的第二物理内存加入到该数据库的虚拟内存空间中,并将该第二物理内存的开始地址设为上一物理内存的尾部地址;
扩容模块15,设置为:扩大该数据库可用的内存空间,并触发第一判断模块13再次判断数据库的空闲内存是否小于预设阈值。
本发明实施例中的扩容模块15在执行扩大该数据库可用的内存空间后,还可以触发第一判断模块13再次判断数据库的空闲内存是否小于预设阈值。
本实施例提供的共享内存数据库的内存管理装置,通过采用共享内存方式,并且采用虚拟内存空间和物理内存分别管理,各进程在启动时,会映射整块虚拟内存空间,从而在后续内存扩容时,将申请的多块物理内存补充到该虚拟内存空间中,并且使多块物理内存连成一个连续的物理内存,同时增大数据库内存容量,数据库的内存是连续的一个整体,此时数据库在存取数据时,不用跨段查找,扩容前后,性能不会降低;另外,在多进程连接到数据库时,打开的共享内存空间是整个虚拟内存空间,在数据库内存扩容后,不用通知各个进程重新映射共享内存,提高了数据库在扩容期间多进程访问数据库访问效率以及减小扩容管理复杂性的,与分段式共享内存管理相比,在性能上,能够达到20~40%左右的提高。
可选地,图7为本发明实施例提供的另一种共享内存数据库的内存管理装置的结构示意图,在图6所示装置的结构基础上,本实施例提供的装置还可以包括:
第二判断模块16,设置为:判断该数据库的当前物理内存空间与预设扩容步长的大小之和是否小于虚拟内存空间的大小,得到第二判断结果;
第二分配模块14,还设置为:在第一判断模块13得到的第一判断结果和第二判断模块16得到的第二判断结果均为是时,将预设扩容步长大小的第二物理内存加入到该数据库的虚拟内存空间中,并将该第二物理内存的开始地址设为上一物理内存的尾部地址。
可选地,本发明实施例提供的装置还可以包括:
写数据模块17,设置为:在第二物理内存中插入数据或修改数据。
可选地,本发明实施例提供的装置还可以包括:
设置模块18,设置为:设置数据库容量的最大值、数据库容量的初始值和数据库的扩容步长大小。
可选地,在本发明实施例中,上述第一物理内存的大小为数据库容量的初始值。
本发明实施例还提供一种共享内存数据库的内存管理方法,包括以下步骤,即步骤A~步骤H:
步骤A,根据需要在启动数据库节点上设置数据库容量的初始值,单位为M;
步骤B,根据需要在启动数据库节点上设置数据库容量的最大值,单位为M;
步骤C,根据需要在启动数据库节点上设置数据库每次扩容步长的大小,单位为M;
步骤D,启动共享内存数据库,此时在创建数据库的空间中按照数据库容量的最大值为该数据库分配虚拟内存空间;在实际应用中,此时并没有占用数据库最大容量的物理内存,只是在进程空间中占用了这么多的虚拟内存空间,多余物理内存可以给别的进程使用;
步骤E,为数据库分配数据库容量的初始值大小的物理内存,同时将这块 物理内存对齐到虚拟内存空间的开始地址处,即将这块物理内存的开始地址设为虚拟内存空间的开始地址;
步骤F,其它应用进程来连接数据库时,需要打开这块共享内存,将共享内存映射到整个虚拟内存空间,即步骤D中申请的整个虚拟内存空间;
步骤G,此时共享内存数据库按照已经分配的物理内存大小来存放业务数据,即数据库将记录(即数据)插入这块物理内存中;
步骤H,随着记录的不断插入,当初分配的物理内存已经不够用,此时启用数据库扩容机制。
数据库扩容包括如下步骤,即步骤I~步骤L:
步骤I,当插入或修改记录或者定时查看数据库空闲空间时,发现空闲内存已经没有空闲空间或空闲空间少于预置阀值;
步骤J,申请步骤C中配置的数据库的扩容步长大小的物理内存补充到虚拟内存空间中,这块物理内存的开始地址是上一次物理内存对应虚拟内存空间的尾部地址,使扩容前的物理内存和扩容后的物理内存首尾相连,中间没有空隙,组成一块连续的物理内存,就像重新申请了一块大的连续物理内存一样;
步骤K,扩大数据库可用的内存空间大小,此时整个数据库经过了一次扩容;
步骤L,如果此时有记录插入或修改,将该记录插入新申请的物理内存中。
与相关技术相比较,本实施例对于数据库的内存管理,通过采用共享内存方式,并且采用虚拟内存空间和物理内存分别管理,各进程在启动时,会映射整块虚拟内存空间,从而在后续内存扩容时,将申请的多块物理内存补充到该虚拟内存空间中,并且使多块物理内存连成一个连续的物理内存,同时增大数据库内存容量,因此数据库的内存永远为连续的一个整体,此时数据库在存取数据时,不用跨段查找,扩容前后,性能不会降低;另外,在多进程连接到指定数据库时,打开的共享内存空间是整个虚拟内存空间,在内存扩容后,不用通知各个进程重新映射共享内存,提高了数据库在扩容期间多进程访问数据库访问效率以及减小扩容管理复杂性;这种连续共享内存管 理方式与分段式共享内存管理相比,在性能上,前者比后者能够达到20~40%左右的提高。
可选地,如图8所示,为本发明实施例提供的共享内存数据库的内存管理方法中一种数据库启动时共享内存创建的流程图,本实施例中包括共享内存数据库启动时共享内存创建以及共享内存映射方法,可以包括以下步骤,即步骤101~步骤203:
步骤101,根据业务需求,数据库服务进程100设置数据库容量初始值,例如为200兆(M),并将该值放入到共享内存的数据库空间管理区域;
如图8所示,本实施例的功能由数据库服务进程100、应用进程200协同实现。另外,下面的容量大小只是一个举例,可以用其它值。本实施例用如下一组数值来进行说明,即数据库容量初始值为200M,数据库容量最大值为1000M,数据容量扩容步长为10M。其中,本实施例支持包括Linux(操作系统)系统在内的多种操作系统,数据库的扩容步长可变,例如可以设置为1M、2M或3M等,数据库最大容量可根据实际需要设置,例如根据需要已经单板的内存最大容量等决定。
步骤102,数据库服务进程100设置数据库容量最大值,例如为1000M,并将该值放入到共享内存的数据库空间管理区域;
步骤103,数据库服务进程100设置数据库容量扩容步长,例如每次扩容为10M,并将该值放入到共享内存的数据库空间管理区域;
步骤104,数据库服务进程100启动数据库,并申请虚拟内存空间,大小为步骤102中设置的数据库容量最大值,例如申请虚拟内存空间为1000M,假如此时虚拟内存空间的开始地址为ADDR1,则终止地址为ADDR1+1000M;申请虚拟内存空间完成后,如图10所示,为本发明实施例提供的共享内存数据库的内存管理方法中一种虚拟内存空间和物理内存对应关系的示意图。此时数据库还不能对外提供服务,因为此时还没有申请物理内存,只是申请了虚拟内存空间。
步骤105,分配物理内存,大小为数据库容量的初始值,并对齐到虚拟内 存空间开始地址,即以步骤104中ADDR1为开始地址,申请数据库容量初始值大小的物理内存。申请完后,这块物理内存就映射到虚拟内存开始地址处,此时虚拟内存空间与物理内存对应关系如图11所示,为本发明实施例提供的共享内存数据库的内存管理方法中另一种虚拟内存空间和物理内存对应关系的示意图。此时[ADDR1,ADDR1+200M]这段虚拟内存空间是可以用于业务存储数据,并且,实际可用的数据库容量就为200M,同时,在共享内存的数据库空间管理区域,将修改当前数据库可用空间大小为200M。
步骤106,数据库启动完成;
步骤201,应用进程200初始化;
步骤202,应用进程200连接共享内存数据库,即打开共享内存
步骤203,映射共享内存时,应用进程200将整个虚拟内存空间全部映射到本应用进程内。此时该应用进程200就可以访问该数据库,即可在数据库中进行记录增、删、改、查,当然此时只能使用分配了物理内存的那块地址,本实施例中为[ADDR1,ADDR1+200M]这200M空间。
可选地,如图9所示,为本发明实施例提供的共享内存数据库的内存管理方法中一种共享内存数据库扩容方法的流程图,本实施例提供的方法可以包括以下步骤,即步骤301~步骤306。
其中,本实施例的扩容功能由数据库应用进程300执行,例如为图8中的数据库服务进程100,也可以是图8中的应用进程200。在实际应用中,以下数值只是举例,可以是其它数值。
步骤301,业务插入数据时,从数据库的空闲内存中申请内存,此时可用的内存地址空间为图11所示的上半部分,即地址从[ADDR1,ADDR1+200M]范围申请;
步骤302,判断空闲内存是否不足,即可用的空闲内存是否小于预设预置;即判断[ADDR1,ADDR1+200M]这段内存是否还有可用内存,判断标准为剩余内存是否能容纳下此记录或剩余内存小于一定的阀值;若判断出空闲内存不足,执行步骤303,否则,执行步骤306;
步骤303,启动数据库容量扩容;
步骤304,以ADDR1+200M为开始地址,申请数据库容量扩容步长大小的物理内存,并对齐到上一物理内存的尾部地址,扩容步长大小例如为10M;此时虚拟内存空间与物理内存对应关系如图12所示,为本发明实施例提供的共享内存数据库的内存管理方法中又一种虚拟内存空间和物理内存对应关系的示意图。
步骤305,管理数据库的容量信息,该容量信息也存储于共享内存中,此时数据库的空间变为[ADDR1,ADDR1+210M],空闲内存变为[ADDR1+200M,ADDR1+210M],如图12所示;因为数据库容量信息也在共享内存中,因此,扩容后,各个进程都能看得到容量变化;
步骤306,申请内存完成后,在扩容后的物理内存中插入数据或修改数据;后续扩容时,不断申请内存,对齐到虚拟内存空间中,比如第二次扩容完成后的虚拟内存空间与物理内存对应关系如图13所示,为本发明实施例提供的共享内存数据库的内存管理方法中再一种虚拟内存空间和物理内存对应关系的示意图,图14为本发明实施例提供的共享内存数据库的内存管理方法中还一种虚拟内存空间和物理内存对应关系的示意图,图14为虚拟内存空间完全用完时的示意,此时扩容截止。
本实施例对于内存数据库的内存管理,通过采用共享内存方式,并且采用虚拟内存空间和物理内存分别管理,各进程在启动时,会映射整块虚拟内存空间,从而在后续内存扩容时,将申请的多块物理内存补充到该虚拟内存空间中,并且使多块物理内存连成一个连续的物理内存,同时增大数据库内存容量,数据库的内存是连续的一个整体,此时数据库在存取数据时,不用跨段查找,扩容前后,性能不会降低;另外,在多进程连接到数据库时,打开的共享内存空间是整个虚拟内存空间,在数据库内存扩容后,不用通知各个进程重新映射共享内存,提高了数据库在扩容期间多进程访问数据库访问效率以及减小扩容管理复杂性的,与分段式共享内存管理相比,在性能上,能够达到20~40%左右的提高。
本申请说明书中所描述的许多功能部件都被称为模块,以便更加特别地强调其实现方式的独立性。
本发明实施例中,模块可以用软件实现,以便由各种类型的处理器执行。 举例来说,一个标识的可执行代码模块可以包括计算机指令的一个或多个物理或者逻辑块,举例来说,其可以被构建为对象、过程或函数。尽管如此,所标识模块的可执行代码无需物理地位于一起,而是可以包括存储在不同物理上的不同的指令,当这些指令逻辑上结合在一起时,其构成模块并且实现该模块的规定目的。
实际上,可执行代码模块可以是单条指令或者是许多条指令,并且甚至可以分布在多个不同的代码段上,分布在不同程序当中,以及跨越多个存储器设备分布。同样地,操作数据可以在模块内被识别,并且可以依照任何适当的形式实现并且被组织在任何适当类型的数据结构内。所述操作数据可以作为单个数据集被收集,或者可以分布在不同位置上(包括在不同存储设备上),并且至少部分地可以仅作为电子信号存在于系统或网络上。
在模块可以利用软件实现时,考虑到相关技术中硬件工艺的水平,所以可以以软件实现的模块,在不考虑成本的情况下,本领域技术人员都可以搭建对应的硬件电路来实现对应的功能,所述硬件电路包括常规的超大规模集成(Very Large Scale Integration,简称为:VLSI)电路或者门阵列以及诸如逻辑芯片、晶体管之类的相关技术中的半导体或者是其它分立的元件。模块还可以用可编程硬件设备,诸如现场可编程门阵列、可编程阵列逻辑、可编程逻辑设备等实现。
在本发明方法实施例中,上述步骤的序号并不能用于限定各步骤的先后顺序,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,对各步骤的先后变化也在本发明的保护范围之内。
本领域普通技术人员可以理解上述实施例的全部或部分步骤可以使用计算机程序流程来实现,所述计算机程序可以存储于一计算机可读存储介质中,所述计算机程序在相应的硬件平台上(根据系统、设备、装置、器件等)执行,在执行时,包括方法实施例的步骤之一或其组合。
可选地,上述实施例的全部或部分步骤也可以使用集成电路来实现,这些步骤可以被分别制作成一个个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。
上述实施例中的装置/功能模块/功能单元可以采用通用的计算装置来实 现,它们可以集中在单个的计算装置上,也可以分布在多个计算装置所组成的网络上。
上述实施例中的装置/功能模块/功能单元以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。上述提到的计算机可读取存储介质可以是只读存储器,磁盘或光盘等。
工业实用性
本发明实施例通过采用共享内存方式,并且采用虚拟内存空间和物理内存分别管理,各进程在启动时,会映射整块虚拟内存空间,从而在后续内存扩容时,将申请的多块物理内存补充到该虚拟内存空间中,并且使多块物理内存连成一个连续的物理内存,同时增大数据库内存容量,数据库的内存是连续的一个整体,此时数据库在存取数据时,不用跨段查找,扩容前后,性能不会降低;另外,在多进程连接到数据库时,打开的共享内存空间是整个虚拟内存空间,在数据库内存扩容后,不用通知各个进程重新映射共享内存,提高了数据库在扩容期间多进程访问数据库访问效率以及减小扩容管理复杂性的,与分段式共享内存管理相比,在性能上,能够达到20~40%左右的提高。

Claims (10)

  1. 一种共享内存数据库的内存管理方法,包括:
    在创建数据库的空间中按照预设的数据库容量的最大值为所述数据库分配虚拟内存空间;
    为所述数据库分配第一物理内存,将所述第一物理内存的开始地址设为所述虚拟内存空间的开始地址,并在所述第一物理内存中插入数据或修改数据;
    判断所述数据库的空闲内存是否小于预设阈值,得到第一判断结果;
    在所述第一判断结果为是时,将预设扩容步长大小的第二物理内存加入到所述数据库的虚拟内存空间中,并将所述第二物理内存的开始地址设为上一物理内存的尾部地址;
    扩大所述数据库可用的内存空间,并再次判断所述数据库的空闲内存是否小于所述预设阈值。
  2. 根据权利要求1所述的共享内存数据库的内存管理方法,其中,所述判断所述数据库的空闲内存是否小于预设阈值,得到第一判断结果之后,所述方法还包括:
    判断所述数据库的当前物理内存空间与所述预设扩容步长的大小之和是否小于所述虚拟内存空间的大小,得到第二判断结果;
    所述在所述第一判断结果为是时,将预设扩容步长大小的第二物理内存加入到所述数据库的虚拟内存空间中,并将所述第二物理内存的开始地址设为上一物理内存的尾部地址,包括:
    在所述第一判断结果和所述第二判断结果均为是时,将所述预设扩容步长大小的第二物理内存加入到所述数据库的虚拟内存空间中,并将所述第二物理内存的开始地址设为上一物理内存的尾部地址。
  3. 根据权利要求1所述的共享内存数据库的内存管理方法,其中,所述扩大所述数据库可用的内存空间之后,所述方法还包括:
    在所述第二物理内存中插入数据或修改数据。
  4. 根据权利要求1所述的共享内存数据库的内存管理方法,其中,所述在创建数据库的空间中按照预设的数据库容量的最大值为所述数据库分配虚拟内存空间之前,所述方法还包括:
    设置所述数据库容量的最大值、所述数据库容量的初始值和所述数据库的扩容步长大小。
  5. 根据权利要求4所述的共享内存数据库的内存管理方法,其中,所述第一物理内存的大小为所述数据库容量的初始值。
  6. 一种共享内存数据库的内存管理装置,包括:
    创建模块,设置为:在创建数据库的空间中按照预设的数据库容量的最大值为所述数据库分配虚拟内存空间;
    第一分配模块,设置为:为所述数据库分配第一物理内存,将所述第一物理内存的开始地址设为所述创建模块为所述数据库分配的所述虚拟内存空间的开始地址,并在所述第一物理内存中插入数据或修改数据;
    第一判断模块,设置为:判断所述数据库的空闲内存是否小于预设阈值,得到第一判断结果;
    第二分配模块,设置为:在所述第一判断模块得到的所述第一判断结果为是时,将预设扩容步长大小的第二物理内存加入到所述数据库的虚拟内存空间中,并将所述第二物理内存的开始地址设为上一物理内存的尾部地址;
    扩容模块,设置为:扩大所述数据库可用的内存空间,并触发所述第一判断模块再次判断所述数据库的空闲内存是否小于所述预设阈值。
  7. 根据权利要求6所述的共享内存数据库的内存管理装置,还包括:
    第二判断模块,设置为:判断所述数据库的当前物理内存空间与所述预设扩容步长的大小之和是否小于所述虚拟内存空间的大小,得到第二判断结果;
    所述第二分配模块,还设置为:在所述第一判断模块得到的所述第一判断结果和所述第二判断模块得到的所述第二判断结果均为是时,将所述预设扩容步长大小的第二物理内存加入到所述数据库的虚拟内存空间中,并将所述第二物理内存的开始地址设为上一物理内存的尾部地址。
  8. 根据权利要求6所述的共享内存数据库的内存管理装置,还包括:
    写数据模块,设置为:在所述第二物理内存中插入数据或修改数据。
  9. 根据权利要求6所述的共享内存数据库的内存管理装置,还包括:
    设置模块,设置为:设置所述数据库容量的最大值、所述数据库容量的初始值和所述数据库的扩容步长大小。
  10. 根据权利要求9所述的共享内存数据库的内存管理装置,其中,所述第一物理内存的大小为所述数据库容量的初始值。
PCT/CN2016/095355 2015-09-25 2016-08-15 共享内存数据库的内存管理方法及装置 WO2017050064A1 (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201510622060.1A CN106557427B (zh) 2015-09-25 2015-09-25 共享内存数据库的内存管理方法及装置
CN201510622060.1 2015-09-25

Publications (1)

Publication Number Publication Date
WO2017050064A1 true WO2017050064A1 (zh) 2017-03-30

Family

ID=58385844

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2016/095355 WO2017050064A1 (zh) 2015-09-25 2016-08-15 共享内存数据库的内存管理方法及装置

Country Status (2)

Country Link
CN (1) CN106557427B (zh)
WO (1) WO2017050064A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113032162A (zh) * 2021-03-23 2021-06-25 重庆智行者信息科技有限公司 一种基于共享内存备份机制的多进程通讯方法

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107608796B (zh) * 2017-09-29 2020-08-04 武汉斗鱼网络科技有限公司 存储资源管控方法、存储资源管控装置及处理器
CN110019125B (zh) * 2017-11-27 2021-12-14 北京京东尚科信息技术有限公司 数据库管理的方法和装置
CN108255624A (zh) * 2018-02-02 2018-07-06 中国银行股份有限公司 一种数据的处理方法及处理装置
CN109032817B (zh) * 2018-07-25 2022-03-18 天津凯发电气股份有限公司 一种电能质量管理系统共享内存实现方法
CN109062693A (zh) * 2018-07-26 2018-12-21 郑州云海信息技术有限公司 一种内存管理方法及相关设备
CN109522113B (zh) * 2018-09-28 2020-12-18 迈普通信技术股份有限公司 一种内存管理方法及装置
CN116708579B (zh) * 2023-08-04 2024-01-12 浪潮电子信息产业股份有限公司 数据访问方法、装置、电子设备及计算机可读存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1581108A (zh) * 2003-07-31 2005-02-16 深圳市中兴通讯股份有限公司南京分公司 一种具有内存保护功能的内存管理方法
US20100005222A1 (en) * 2008-07-01 2010-01-07 International Business Machines Corporation Optimizing virtual memory allocation in a virtual machine based upon a previous usage of the virtual memory blocks

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7206890B2 (en) * 2004-05-19 2007-04-17 Sun Microsystems, Inc. System and method for reducing accounting overhead during memory allocation
CN100527098C (zh) * 2007-11-27 2009-08-12 北京大学 一种虚拟机管理器的动态内存映射方法
US8271989B2 (en) * 2008-02-07 2012-09-18 International Business Machines Corporation Method and apparatus for virtual processor dispatching to a partition based on shared memory pages
US8627036B2 (en) * 2011-09-12 2014-01-07 Microsoft Corporation Memory management techniques
CN103077120B (zh) * 2012-12-31 2016-01-27 东软集团股份有限公司 程序共享内存的地址转换方法和装置
CN104123233A (zh) * 2013-04-26 2014-10-29 华茂云天科技(北京)有限公司 一种虚拟机大容量内存共享方法
CN104090804B (zh) * 2014-07-15 2018-02-16 四川航天系统工程研究所 一种实时dsp嵌入式系统虚拟内存扩容方法
CN104199740B (zh) * 2014-08-28 2019-03-01 浪潮(北京)电子信息产业有限公司 共享系统地址空间的非紧耦合多节点多处理器系统和方法
CN104881330B (zh) * 2015-05-22 2018-08-21 大唐移动通信设备有限公司 一种多进程共享数据的方法和装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1581108A (zh) * 2003-07-31 2005-02-16 深圳市中兴通讯股份有限公司南京分公司 一种具有内存保护功能的内存管理方法
US20100005222A1 (en) * 2008-07-01 2010-01-07 International Business Machines Corporation Optimizing virtual memory allocation in a virtual machine based upon a previous usage of the virtual memory blocks

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113032162A (zh) * 2021-03-23 2021-06-25 重庆智行者信息科技有限公司 一种基于共享内存备份机制的多进程通讯方法
CN113032162B (zh) * 2021-03-23 2023-10-24 重庆兰德适普信息科技有限公司 一种基于共享内存备份机制的多进程通讯方法

Also Published As

Publication number Publication date
CN106557427B (zh) 2021-11-12
CN106557427A (zh) 2017-04-05

Similar Documents

Publication Publication Date Title
WO2017050064A1 (zh) 共享内存数据库的内存管理方法及装置
US20060047926A1 (en) Managing multiple snapshot copies of data
CN110413685B (zh) 数据库服务切换方法、装置、可读存储介质和计算机设备
CN103995855A (zh) 存储数据的方法和装置
CN115599747B (zh) 一种分布式存储系统的元数据同步方法、系统及设备
CN110018878B (zh) 一种分布式系统数据加载方法以及装置
US20240061712A1 (en) Method, apparatus, and system for creating training task on ai training platform, and medium
CN110806911A (zh) 一种云桌面管控方法、装置及系统
US10642817B2 (en) Index table update method, and device
CN113434470B (zh) 数据分布方法、装置及电子设备
CN110888769B (zh) 数据处理方法及计算机设备
CN112711564B (zh) 合并处理方法以及相关设备
CN111708489B (zh) 一种提高硬盘服务质量的方法和设备
CN112948336B (zh) 数据加速方法及缓存单元、电子设备及存储介质
CN113391757B (zh) 一种节点扩展方法、装置及迁入节点
CN113986846A (zh) 数据处理方法、系统、设备及存储介质
CN111399753B (zh) 写入图片的方法和装置
CN112000289B (zh) 全闪存储服务器系统数据管理方法及相关组件
CN113778688A (zh) 内存管理系统、内存管理方法、内存管理装置
CN114443598A (zh) 写数据方法、装置、计算机设备及存储介质
CN110825660A (zh) 一种基于HBase的朱丽叶暂停优化方法、系统及设备
CN107102898B (zh) 一种基于numa架构的内存管理、构建数据结构的方法及装置
CN111367836B (zh) 一种针对数据库的处理方法及装置
CN117215499B (zh) 精简卷的数据访问方法、装置、产品及多控存储系统
CN117149447B (zh) 带宽调整方法、装置、设备及存储介质

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 16847946

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 16847946

Country of ref document: EP

Kind code of ref document: A1