CN103870483B - 一种动态调整内存空间批量存储数据的方法 - Google Patents
一种动态调整内存空间批量存储数据的方法 Download PDFInfo
- 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
Links
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/25—Integrating or interfacing systems involving database management systems
- G06F16/258—Data 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。
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)
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)
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)
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 |
-
2012
- 2012-12-13 CN CN201210538286.XA patent/CN103870483B/zh active Active
Patent Citations (3)
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)
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 |