CN103870483B - 一种动态调整内存空间批量存储数据的方法 - Google Patents

一种动态调整内存空间批量存储数据的方法 Download PDF

Info

Publication number
CN103870483B
CN103870483B CN201210538286.XA CN201210538286A CN103870483B CN 103870483 B CN103870483 B CN 103870483B CN 201210538286 A CN201210538286 A CN 201210538286A CN 103870483 B CN103870483 B CN 103870483B
Authority
CN
China
Prior art keywords
data
memory
memory table
num
time
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201210538286.XA
Other languages
English (en)
Other versions
CN103870483A (zh
Inventor
詹友陆
傅建记
余建成
张屿
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xiamen Yaxon Networks Co Ltd
Original Assignee
Xiamen Yaxon Networks Co Ltd
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 Xiamen Yaxon Networks Co Ltd filed Critical Xiamen Yaxon Networks Co Ltd
Priority to CN201210538286.XA priority Critical patent/CN103870483B/zh
Publication of CN103870483A publication Critical patent/CN103870483A/zh
Application granted granted Critical
Publication of CN103870483B publication Critical patent/CN103870483B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/258Data format conversion from or to a database

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明一种动态调整内存空间批量存储数据的方法,当向数据库批量***数据时,利用数据库内存表的读写速度比实体表的速度快的特点,把数据先存到内存表,保证数据能及时存入数据库,再把数据从内存表写入实体表内,以便把数据更及时快速地保存起来,其中内存表与实体表的对应关系设置成n:1,为了控制内存表所占用的内存空间,需要控制内存表的存储数据的行数跟内存表的个数,间接地调整了内存的空间。

Description

一种动态调整内存空间批量存储数据的方法
技术领域
本发明涉及一种动态调整内存空间批量存储数据的方法。
技术背景
当向数据库存储的数据量大且频繁时,数据库的性能会受到严重的考验,导致***数据的速度下降,甚至出现表死锁、内存耗尽、数据库崩溃的现象。为此,通常会根据数据库性能参数值,增加设置内存表的数量,以减少表死锁的概率,但内存表的数量已被固定,若数量设置少了,批量***大量的数据时将导致性能受限,若数量设置多了,当批量***数据的量小时,浪费了内存空间,延长了数据保存到实体表中。
发明内容
本发明的目的在于提供一种动态调整内存空间批量存储数据的方法,让数据能更及时、更快的存入到数据库中。
一种动态调整内存空间批量存储数据的方法,包括如下步骤:
步骤1、将内存表的状态设定分成“未把数据转出到实体表的状态”和“把数据转出到实体表的状态”两种状态;
步骤2、初始化内存表个数和内存表允许保存的最大行数;
步骤3、判断当前内存表的个数num与上一次初始化的内存表个数per_num的大小,如果小于上一次初始化的内存表个数per_num,先把未用到的第num+1到第per_num个内存表中的数据转存到实体表中,丢弃第num+1到per_num个内存表,释放内存空间,如果大于上一次初始化的内存表个数per_num,则创建per_num+1到num的内存表;
步骤4、生成一个(0~9)之间的随机整数N,判断第N个内存表是否处于“把数据转出到实体表的状态”,如果是,则再重新随机生成一个(0~9)之间的随机数N,直到第N个内存表处于“未把数据转出到实体表的状态”,把数据***该第N个内存表中,并把***数据行数insert_row记录到数据库的每次***行数的记录表Table_Batch_Rows中;
步骤5、记录每次***表的数据行数insert_row、***时间insert_time,并将所述数据保存到每次***行数的记录表Table_Batch_Rows中,间隔预置时间T从***行数的记录表Table_Batch_Rows计算出最近的时间T内每个时间段内平均***的数据,作为内存表允许保存的最大行数的值,当***数据的速度低于阈值时,可手动调整内存表个数;
步骤6、判断此时的第N个内存表的行数是否达到内存表允许保存最大行数,如果达到,设置该第N个内存表的状态处于“把数据转出到实体表的状态”,并把该第N个内存表的数据转存到实体表中,然后清空内存表,设置该第N个内存表的状态处于“未把数据转出到实体表的状态”;如果未达到内存表允许保存的最大行数,则进行下一次批量存储操作,返回步骤4。
本发明一种动态调整内存空间批量存储数据的方法,当向数据库批量***数据时,利用数据库内存表的读写速度比实体表的速度快的特点,把数据先存到内存表,保证数据能及时存入数据库,再把数据从内存表写入实体表内,以便把数据更及时快速地保存起来,其中内存表与实体表的对应关系设置成n:1,为了控制内存表所占用的内存空间,需要控制内存表的存储数据的行数跟内存表的个数,间接地调整了内存的空间。
具体实施方式
本发明一种动态调整内存空间批量存储数据的方法,具体包括如下步骤:
步骤1、将内存表的状态设定分成“未把数据转出到实体表的状态”和“把数据转出到实体表的状态”两种状态;
步骤2、初始化内存表个数和内存表允许保存的最大行数;
初始化内存表个数table_num为2,设定内存表编号为table_num_0到table_num_3;
初始化设定内存表允许保存的最大行数row_num 为50;
步骤3、判断当前内存表的个数num与上一次初始化的内存表个数per_num的大小,如果小于上一次初始化的内存表个数per_num,先把未用到的第num+1到第per_num个内存表中的数据转存到实体表中,丢弃第num+1到per_num个内存表,释放内存空间,如果大于上一次初始化的内存表个数per_num,则创建per_num+1到num的内存表;
步骤4、生成一个(0~9)之间的随机整数N,判断第N个内存表是否处于“把数据转出到实体表的状态”,如果是,则再重新随机生成一个(0~9)之间的随机数N,直到第N个内存表处于“未把数据转出到实体表的状态”,把数据***该第N个内存表中,这样做的目的是防止表在在删除操作时,同时进行***操作,导致死锁;并把***数据行数insert_row记录到数据库的每次***行数的记录表Table_Batch_Rows中;
步骤5、为了能让内存表允许保存的最大行数能自动调整,可通过步骤4记录每次***表的数据行数insert_row,***时间insert_time,并将所述数据保存到每次***行数的记录表Table_Batch_Rows中,设定定时器每一小时(时间可预置)从***行数的记录表Table_Batch_Rows计算出最近一小时每10分钟内平均***的数据,作为内存表允许保存的最大行数row_num的值,能自动调整内存表允许保存的最大行数row_num,从而间接自动地调整了内存表的大小。当***的数据变慢时,可手动调整内存表个数,内存表个数table_num范围为1到10,内存表个数太大会影响数据存到实体表的速度,也会占用太多已经分配给数据库的内存,这个值要根据具体环境测出最优值;
步骤6、判断此时的第N个内存表的行数是否达到内存表允许保存最大行数,如果达到,设置该第N个内存表的状态处于“把数据转出到实体表的状态”,并把该第N个内存表的数据转存到实体表中,然后清空内存表,设置该第N个内存表的状态处于“未把数据转出到实体表的状态”;如果未达到内存表允许保存的最大行数,则进行下一次批量存储操作,返回步骤4。
以上所述,仅是本发明较佳实施例而已,并非对本发明的技术范围作任何限制,故凡是依据本发明的技术实质对以上实施例所作的任何细微修改、等同变化与修饰,均仍属于本发明技术方案的范围内。

Claims (1)

1.一种动态调整内存空间批量存储数据的方法,其特征在于包括如下步骤:
步骤1、将内存表的状态设定分成“未把数据转出到实体表的状态”和“把数据转出到实体表的状态”两种状态;
步骤2、初始化内存表个数和内存表允许保存的最大行数;
步骤3、判断当前内存表的个数num与上一次初始化的内存表个数per_num的大小,如果小于上一次初始化的内存表个数per_num,先把未用到的第num+1到第per_num个内存表中的数据转存到实体表中,丢弃第num+1到per_num个内存表,释放内存空间,如果大于上一次初始化的内存表个数per_num,则创建per_num+1到num的内存表;
步骤4、生成一个(0~9)之间的随机整数N,判断第N个内存表是否处于“把数据转出到实体表的状态”,如果是,则再重新随机生成一个(0~9)之间的随机数N,直到第N个内存表处于“未把数据转出到实体表的状态”,把数据***该第N个内存表中,并把***数据行数insert_row记录到数据库的每次***行数的记录表Table_Batch_Rows中;
步骤5、记录每次***表的数据行数insert_row、***时间insert_time,并将所述数据保存到每次***行数的记录表Table_Batch_Rows中,间隔预置时间T从***行数的记录表Table_Batch_Rows计算出最近的时间T内每个时间段内平均***的数据,作为内存表允许保存的最大行数的值,当***数据的速度低于阈值时,可手动调整内存表个数,该内存表个数是根据具体环境测出的最优值,范围为1到10;
步骤6、判断此时的第N个内存表的行数是否达到内存表允许保存最大行数,如果达到,设置该第N个内存表的状态处于“把数据转出到实体表的状态”,并把该第N个内存表的数据转存到实体表中,然后清空内存表,设置该第N个内存表的状态处于“未把数据转出到实体表的状态”;如果未达到内存表允许保存的最大行数,则进行下一次批量存储操作,返回步骤4。
CN201210538286.XA 2012-12-13 2012-12-13 一种动态调整内存空间批量存储数据的方法 Active CN103870483B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210538286.XA CN103870483B (zh) 2012-12-13 2012-12-13 一种动态调整内存空间批量存储数据的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210538286.XA CN103870483B (zh) 2012-12-13 2012-12-13 一种动态调整内存空间批量存储数据的方法

Publications (2)

Publication Number Publication Date
CN103870483A CN103870483A (zh) 2014-06-18
CN103870483B true CN103870483B (zh) 2018-04-20

Family

ID=50909026

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210538286.XA Active CN103870483B (zh) 2012-12-13 2012-12-13 一种动态调整内存空间批量存储数据的方法

Country Status (1)

Country Link
CN (1) CN103870483B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109033271B (zh) * 2018-07-10 2021-03-02 上海达梦数据库有限公司 基于列存储的数据***方法、装置、服务器及存储介质
CN112487095B (zh) * 2020-12-09 2023-03-28 浪潮云信息技术股份公司 一种分布式数据库事务数据存储优化的方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101127041A (zh) * 2007-08-28 2008-02-20 激动集团股份有限公司 一种业务规则基础数据的缓冲方法
CN101241492A (zh) * 2007-02-06 2008-08-13 中兴通讯股份有限公司 具有容量动态控制功能的内存数据存储装置及其实现方法
CN102129458A (zh) * 2011-03-09 2011-07-20 胡劲松 关系型数据库的存储方法及装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ATE491174T1 (de) * 2002-08-20 2010-12-15 Tokyo Electron Ltd Verfahren zum verarbeiten von daten auf der basis des datenkontexts
US8108400B2 (en) * 2009-06-27 2012-01-31 Hewlett-Packard Development Company, L.P. Database segment searching

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101241492A (zh) * 2007-02-06 2008-08-13 中兴通讯股份有限公司 具有容量动态控制功能的内存数据存储装置及其实现方法
CN101127041A (zh) * 2007-08-28 2008-02-20 激动集团股份有限公司 一种业务规则基础数据的缓冲方法
CN102129458A (zh) * 2011-03-09 2011-07-20 胡劲松 关系型数据库的存储方法及装置

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
HUABASE:基于列存储的关系型数据库***;曾春等;《计算机研究与发展》;20101013;第524-528页 *
一种构建StreamCube的超大维表连接算法;甘亮等;《计算机研究与发展》;20110115;第48卷(第1期);第55-67页 *
多表多记录存储管理及其应用;郭玉钗等;《计算机辅助设计与图形学学报》;19970131;第9卷(第1期);第29-34页 *

Also Published As

Publication number Publication date
CN103870483A (zh) 2014-06-18

Similar Documents

Publication Publication Date Title
CN108231109B (zh) 动态随机存取存储器dram的刷新方法、设备以及***
CN109716281B (zh) 用于非易失性存储器的用户可配置的耗损均衡的***、方法和设备
CN103870483B (zh) 一种动态调整内存空间批量存储数据的方法
CN106302238A (zh) 一种队列管理方法及装置
CN106843762A (zh) 管理存储区域的方法及固态硬盘
KR101533957B1 (ko) Dram 셀프 리프레쉬로부터의 고속 엑시트
CN103778071A (zh) 缓存的空间分配方法及装置
CN103959388B (zh) 用于调度包括电力状态的存储器刷新操作的方法
US10817180B2 (en) Methods and apparatus to configure performance of a solid state drive based on host write bandwidth
CN107959635B (zh) 一种基于令牌桶算法的iops控制方法及装置
CN101930345B (zh) 一种基于块访问的闪存读写方法
CN105980992A (zh) 一种控制器、闪存装置、识别数据块稳定性的方法以及在闪存装置中存储数据的方法
CN110347335A (zh) 一种固态硬盘数据存储方法、装置
CN105489240A (zh) 一种用于DRAM或eDRAM刷新的装置及其方法
DE102020119400A1 (de) Techniken zum setzen eines 2-ebenen-auto-schliess-timers zum zugriff auf eine speichervorrichtung
CN105373350A (zh) 一种数据管理方法及装置
CN109086008A (zh) 固态硬盘的数据处理方法以及固态硬盘
CN107844436A (zh) 一种缓存中脏数据的组织管理方法、***及存储***
CN106844224B (zh) 一种基于nvram的内存分配链表及内存分配方法
CN104714898B (zh) 一种Cache的分配方法和装置
CORREIA et al. Sowing performance by a metering mechanism of continuous flow in different slope conditions
CN105052304B (zh) 一种促进甘蔗陈年杂交种子萌发的方法
CN101763310B (zh) 数据存储控制方法
KR20160111122A (ko) 반도체 메모리 장치 및 반도체 메모리 장치 제어 방법
Korkmaz et al. The effect of different priming treatments and storage conditions on germination performance of lettuce seeds

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant