CN110019130A - 一种数据库更新的方法及装置 - Google Patents
一种数据库更新的方法及装置 Download PDFInfo
- Publication number
- CN110019130A CN110019130A CN201711275922.3A CN201711275922A CN110019130A CN 110019130 A CN110019130 A CN 110019130A CN 201711275922 A CN201711275922 A CN 201711275922A CN 110019130 A CN110019130 A CN 110019130A
- Authority
- CN
- China
- Prior art keywords
- data
- space
- database
- update
- data space
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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/21—Design, administration or maintenance of databases
- G06F16/219—Managing data history or versioning
-
- 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/23—Updating
- G06F16/2308—Concurrency control
- G06F16/2315—Optimistic concurrency control
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (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)
- Stored Programmes (AREA)
Abstract
本申请公开了一种数据库更新的方法和装置,所述方法包括:基于对数据库的更新操作,在更新操作所对应的原始数据空间的末尾创建新增数据空间;将所述原始数据空间中的数据复制到新增数据空间;在所述原始数据空间中记录更新数据。本申请的方法可改善数据库表膨胀的问题。
Description
技术领域
本申请涉及数据库技术领域,具体涉及一种数据库更新的方法。本申请同时涉及一种数据库更新的装置。
背景技术
大多数的MySQL事务型存储引擎,如InnoDB,Falcon以及PBXT都不会使用一种简单的行锁机制。他们都和另外一种用来增加并发性的被称为“MVCC(Multi-VersionConcurrency Control,多版本并发控制)”的机制来一起使用。MVCC不只使用在MySQL中,Oracle、PostgreSQL以及其它一些数据库***也同样使用它,通过使用MVCC算法自动提供并发控制。MVCC可维持一个数据的多个版本,使读写操作没有冲突。MVCC优化了数据库并发***,使***在有大量并发用户时得到较高的性能,并且可以无需关闭服务器就可直接进行热备份。
采用多版本并发控制的数据库***,集中执行大量更新操作时,容易产生表膨胀。例如,一次性更新一张表中的所有数据时,数据库会保留所有的旧版本(因为这些数据可能会被并发的事务读取),而从表的末尾分配新的表空间。采用前述方法,当更新事务提交后,并且其他活跃事务也提交后,可以把旧页面的数据清理,但这样会留下空白页面;另一方面,表这些数据页面是存放在文件中的,虽然旧页面的数据被清理了,但表文件的长度仍然是包含旧页面空间,表的空间就出现的膨胀,久而久之,这种膨胀可能会越来越严重。
要想将膨胀的空间收回,必须把整个表重建;而重建表需要对表加排他锁,从而会影响业务***的运行。
发明内容
本申请提供一种数据库更新的方法,以改善现有数据库多版本并发控制的表膨胀问题。本申请另外提供一种数据库更新的装置。
本申请提供的一种数据库更新的方法,包括:
基于对数据库的更新操作,在更新操作所对应的原始数据空间的末尾创建新增数据空间;
将所述原始数据空间中的数据复制到新增数据空间;
在所述原始数据空间中记录更新数据。
此外,本申请还提供一种数据库更新的方法,其包括:
基于对数据库的更新操作,将所述更新操作所对应的原始数据空间中的数据复制到数据库其它数据空间;
在所述原始数据空间中记录更新数据。
此外,本申请还提供一种用于数据库更新的装置,其包括:
创建单元,用于基于对数据库的更新操作,在更新操作所对应的原始数据空间的末尾创建新增数据空间;
复制单元,用于将所述原始数据空间中的数据复制到新增数据空间;
更新执行单元,用于在所述原始数据空间中记录更新数据。
此外,本申请还提供一种用于数据块更新的装置,其包括:
复制单元,用于基于对数据库的更新操作,将所述更新操作所对应的原始数据空间中的数据复制到数据库其它数据空间;
更新执行单元,在所述原始数据空间中记录更新数据。
此外,本申请还提供一种服务器,其包括存储器和处理器,其中,所述存储器存储处理器可执行指令,所述处理器用于执行所述储处理器可执行指令:
基于对数据库的更新操作,在更新操作所对应的原始数据空间的末尾创建新增数据空间;
将所述原始数据空间中的数据复制到新增数据空间;
在所述原始数据空间中记录更新数据。
此外,本申请还提供一种计算机可读介质,其上存储有指令,所述指令被执行以用于:
基于对数据库的更新操作,在更新操作所对应的原始数据空间的末尾创建新增数据空间;
将所述原始数据空间中的数据复制到新增数据空间;
在所述原始数据空间中记录更新数据。
此外,本申请还提供一种服务器,包括存储器和处理器,其中,所述存储器存储处理器可执行指令,所述处理器用于执行所述储处理器可执行指令:
基于对数据库的更新操作,将所述更新操作所对应的原始数据空间中的数据复制到数据库其它数据空间;
在所述原始数据空间中记录更新数据。
此外,本申请还提供一种计算机可读介质,其上存储有指令,所述指令被执行以用于:
基于对数据库的更新操作,将所述更新操作所对应的原始数据空间中的数据复制到数据库其它数据空间;
在所述原始数据空间中记录更新数据。
与现有技术相比,本申请的其中一个方面具有以下优点:
本申请的技术方案中,基于对数据库的更新操作,将原始数据空间中数据迁移至新增数据空间,以备原始数据空间存储更新操作后的数据;该操作使得针对更新操作而言的原始数据存储在数据库文件的末端,一方面保留该数据可以用于并发事务读取,另一方面在更新数据操作完成之后还可以根据需要舍弃该数据,而将数据库文件末端空间释放,由于对数据库文件末端空间释放操作简单易行,无需重建,不但避免空间浪费,而且使得对数据库操作简化。
附图说明
图1是本申请提供的一种数据库更新方法的实施例的流程图;
图2是本申请本申请提供的一种用于数据库更新装置的实施例的示意图;
图3、图4和图5为说明本申请实施例数据库更新方法的表空间变化及数据操作的示意图;
图6为本申请实施例数据库更新方法中释放表空间之后的示意图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。
如前所述,采用MVCC的数据库***,集中执行大量更新操作时,比较容易产生表膨胀,本申请的实施例提供一种数据库更新的方法,可以改善空间膨胀的发生。
请参考图1,其为本申请实施例提供的一种数据库更新的方法流程图。以下是对该方法实施的详细描述,描述中使用的示例用来辅助说明本方法原理。
步骤S101:基于对数据库的更新操作,在更新操作所对应的原始数据空间的末尾创建新增数据空间。
数据库***在处理并发事务时,需要保存原始版本数据,以防并发事务冲突或错误导致数据被破坏。接收到更新操作后,数据库保存所述更新操作对应原始数据空间的数据,这些数据可能会被并发事务读取。
本实施例的一个具体实例中,以表空间存储数据对象的数据库为例来进行说明。其中,表空间是数据库的逻辑划分,一个表空间(也称为表页面空间)只能从属于一个数据库,并且对应于存储空间的某个区域。通过表空间一方面可以控制数据库用户所占用空间配额,另一方面可以控制数据库所占用的存储空间。一个数据库可以设置有多个表空间存放数据对象。本实施例中原始数据空间、新增数据空间是指数据库中的一个或数个表空间。当然,在其他实施例中,本申请方法也适用于数据库以其它非表空间形式划分逻辑空间的情形,在该其它情形中,将存储及操作对象划分为其它形式的较小粒度单元,以实现对数据对象灵活控制,本申请实施例的原始数据空间、新增数据空间是指该其它形式中的一个或数个较小粒度单元。本实施例对此不再展开说明,本领域技术人员可以根据本申请实施例的教导在其它情形中的作出相应的改变,这些改变均应包含在本申请所要求保护的范围之内。
如前所述,数据库表可以通过操作***处理以文件的形式存放在内存或磁盘中,每张数据表可以有多个数据表页面,每一表页面占用一定的内存或磁盘空间。
本步骤中,首先接收更新操作,在更新线程中执行原始数据空间数据的更新操作,将执行结果(更新数据)存放在缓存中。
其中,所述更新操作,是数据操作语言(DML:Data Manipulation Language)的一种,数据库***能够识别的字符;例如通过更新操作更改数据库数据的属性或数值等。例如:update TableAset ColumnN=0,数据库通过对关键字update对应的二进制串的识别,得到该操作命令是更新表TableA中的列ColumnN,使列ColumnN的所有值变成0;再如:update T set c2=300,c3=’ab’where c1=100,数据库通过对关键字update对应的二进制串的识别,得到该操作命令是更新表T中c1列值是100的一行数据,使此行数据中c2列的值更新为300,c3列的值更新为‘ab’。如图3中所示,更新c1列值100的数据位于表页面1中。
本实施例方法主要用于表数据更新操作,实际使用中,除了update语句,一些修改表结构的语句或其他更新数据,并保留原始数据及新增数据(新旧版本数据)的操作,也适用本实施例的方法。
本实施例方法中,接收更新操作后,基于对数据库的更新操作,在更新操作所对应的原始数据空间末尾创建新增数据空间。例如,更新操作需要更新如图4中表页面1和表页面2的内容,其中,表页面2逻辑上位于表页面1之后,在接收更新操作后,在表页面2的尾端(如图4中所示的文件尾端)增加表页面3和表页面4。其中,表页面3和表页面4所对应的表空间大小可以根据更新操作后产生的数据大小而定。对于如图3中所示的仅更新位于表页面1中数据的情形,仅在表页面2后增加表页面3即可。依次类推,对于存在多个表页面情形,若更新操作仅涉及部分表页面,则仅需在文件末端或待更新数据所在表页面末尾增加相应需要的表页面即可,在此不再一一展开论述。
步骤S102,将所述原始数据空间中的数据复制到新增数据空间中。
如前所述,在接收更新操作后,创建新增数据空间。本步骤中,将原始数据空间中数据迁移至该新增数据空间,以备原始数据空间存储更新操作后的数据。该操作使得针对更新操作而言的原始数据存储在数据库文件的末端,一方面保留该数据可以用于并发事务读取,另一方面在更新数据操作完成之后还可以根据需要舍弃该数据,而将数据库文件末端空间释放,由于对数据库文件末端空间释放操作简单易行,无需重建,不但避免空间浪费,而且使得对数据库操作简化。
本步骤中,所述将所述原始数据空间中的数据复制到新增数据空间具体包括:确定所述新增数据空间大小不小于原始数据空间中的数据大小;将所述原始数据空间中的数据复制到新增数据空间。
所述将所述原始数据空间中的数据复制到新增数据空间之前还包括:确定更新操作所对应的原始数据空间大小不小于更新操作后的数据大小。所述判断更新操作所对应的原始数据空间大小是否不小于更新操作后的数据中,其中,所述原始数据空间大小是所述原始数据所占表页面空间与所述原始表页面剩余有效空间之和的大小。
所述将所述原始数据空间中的数据复制到新增数据空间之前还包括:
确定更新操作对应的数据结构不包含索引键。
以下还以表空间存储为例,例如:对于更新表tUser中某个人兴趣的操作,操作语句如下:
update tUser set cInterest=‘basketball’where cName=‘Tom’
其含义是,将姓名为Tom的这一行数据的兴趣值更新成basketball;这条原始数据的兴趣值是movie,即cInterest=‘movie’。
接收到该更新语句后,数据库通过操作***获得原始数据的大小等属性和更新数据的大小属性;为更新后新增数据分配表空间,同时,操作***提供原始数据和更新数据在内存中存放的空间及位置;判断并确定如下条件:
所述更新操作对应的原始数据在旧页面所占的空间(例如以0X0045表示旧空间地址)大小能存放更新后的数据;
所述新增数据表页面空间(例如以0X0089表示新空间地址)提供给所述原始数据的空间大小能存放所述原始数据;
其中,所述更新操作对应的原始数据在旧页面所占的空间大小能存放更新后的数据,包括确定所述旧数据在旧页面所占的空间的大小不小于所述更新后的数据大小。具体而言,所述更新操作对应的原始数据在旧页面所占的空间大小不小于所述更新后的数据大小可以如下方式判断:例如,对于更新表达式
update tUser set cInterest=‘basketball’where cName=‘Tom’
首先确定这条更新语句对应原始数据所在旧页面所占的空间被释放,即未被占用,且未被锁定;若前述更新语句对应的数据更新之后的数据大小是12k;则原始数据所在表页面的可用空间不小于12k即满足判断条件。
其中,需要说明的是,所述原始数据在旧页面所占的空间的大小不小于所述更新后的数据大小中;所述原始数据在旧页面所占的空间的大小为所述原始数据所占表空间和所述原始表页面剩余有效空间之和的大小。例如,原始数据更新之前的数据大小是10k;更新之后的数据大小是12k;则原始数据表页面的原始数据所占空间大小是10k,如果原始数据表页面的剩余有效空间和的大小是5k,那么所述更新操作对应的原始数据在旧页面所占的空间大小是15k,大于数据更新之后的数据大小12k。则满足了前述原始数据在旧页面所占的空间的大小不小于所述更新后的数据大小的判断,原始数据所在表空间可以用于存放更新后的数据。
执行所述原始数据空间中的数据复制到新增数据空间的步骤,将所述原始数据移动到新空间,释放旧数据所占空间。
例如,对于表达式update tUser set cInterest=‘basketball’where cName=‘Tom’;分别查找更新操作对应原始数据的旧空间(0X0045)地址及新空间(0X0089)地址;将原始数据(cInterest=‘movie’的数据)移动到地址是0X0089的内存空间。
再如,一次性更新一张表中的所有数据(update TableA set ColumnN=0,更新表TableA中的列ColumnN,使列ColumnN的所有值变成0),逐条将表页面1和表页面2中的旧数据复制到表页面3和表页面4,如图4中所示;每条旧数据都有唯一指向它的新空间地址;当接收读操作时,通过所述新空间地址查找当前数据。
再如,执行语句update T set c2=300,c3=’ab’where c1=100,更新c1=100的一条数据记录。如图5中所示,该记录存储在表页面1,由于表页面1和表页面2都已经没有空余空间,新分配表页面3,文件指针从表页面2尾端移动到表页面3尾端;新分配的表页面3是在表页面1之后。
表页面1中的空间是否能存储新版本的数据(即“100|300|ab”),新版本比旧版本长度还小,所以是可以存放的;
新分配的页面3有足够空间,故页面3可以存放旧版本记录(即“100|200|abc”),将“100|200|abc”复制到表页面3中。
所述将所述原始数据空间中的数据复制到新增数据空间之前还包括:确定更新操作对应的数据结构不包含索引键。在实际使用中,数据更新操作对应的数据结构不包含索引键;对于包含索引键的数据要做其他处理,这里不做具体描述。
步骤S103:在所述原始数据空间中记录更新数据。
将所述原始数据复制到新增数据空间,所述旧空间即可以被释放,将前述缓存中更新后的数据移动到所述原始数据空间,完成更新数据库表。
例如,更新语句update tUser set cInterest=‘basketball’where cName=‘Tom’;更新操作对应原始数据空间地址为0X0045;将新数据(cInterest=‘basketball’的数据)移动到地址是0X0045的空间。
再如,一次性更新一张表中的所有数据(update TableAset ColumnN=0,更新表TableA中的列ColumnN,使列ColumnN的所有值变成0),逐条将更新后的数据移动到表页面1和表页面2。
通过上述过程,即完成了针对数据库的更新。数据库表末端页面(即新增数据空间中存储的原始数据)大概率是可以清理的旧数据。因而可以进行清理,以释放页面空间,缓解或改善数据表膨胀。
数据库运行一段时间,数据库表中的旧版本数据会增多,定期的处理这些旧数据,回收浪费的空间;回收空间之前,可以先整理表页面中的数据。
一方面,可以通过对数据的操作代码或设定的自动清理逻辑,清除不使用的旧数据;数据库***维护人员对数据库数据的活跃性进行监控,通过程序接口定期或不定期对数据库表中的数据进行整理;或通过预设的逻辑自动的监控清理数据库数据。所述整理所述表页面数据,包括将旧数据直接删除,或将旧数据状态转成过期状态;
例如,更新语句update tUser set cInterest=‘basketball’where cName=‘Tom’;其将姓名是Tom的这一行数据的兴趣更新成basketball;旧数据的兴趣值是movie,即cInterest=‘movie’;若旧数据(cInterest=‘movie’不会再被读写访问,可直接删除前述旧数据或将其状态设置为dirty(过期)。
当表页面无有效数据或表页面的数据是过期状态时,可回收表页面。当数据库表的表页面中的数据大小为0或表页面的数据状态都是dirty时,可回收表页面,将表页面膨胀占用的空间归还给操作***。
此外,接收清理数据操作,整理所述数据空间表页面数据,还可以将数据库文件大小改小,截掉原始数据所在新增数据空间。如图6中所示,直接改小文件,将文件尾端指针强制移动到表页面1后面,即可直接删除表页面3。表页面3对应的空间即可被释放。
本申请的前述实施例的技术方案中,基于对数据库的更新操作,将原始数据空间中数据迁移至新增数据空间,以备原始数据空间存储更新操作后的数据。该操作使得针对更新操作而言的原始数据存储在数据库文件的末端,一方面保留该数据可以用于并发事务读取,另一方面在更新数据操作完成之后还可以根据需要舍弃该数据,而将数据库文件末端空间释放,由于对数据库文件末端空间释放操作简单易行,无需重建,不但避免空间浪费,而且使得对数据库操作简化。
在本申请另外的实施例中,还提供一种数据的更新方法,该方法包括如下步骤:基于对数据库的更新操作,将所述更新操作所对应的原始数据空间中的数据复制到数据库其它数据空间;在所述原始数据空间中记录更新数据。
实际应用场景中,分布式数据库表会被大量的读写访问,数据库表的各个表页面一般都会有剩余的有效空间(空洞),因而,在将更新操作对应的原始数据空间的数据复制之前,可以先寻找前述剩余的有效空间,而无需在文件末端直接创建新增数据空间。以合理地利用资源,节约空间。
具体而言,可先遍历数据库中各表页面可用空间,判断是否存在不小于原始数据大小的空间;若存在,则将该可用空间视为所述数据库其它数据空间;若不存在,则在原始数据空间的末尾创建新增数据空间,将该新增数据空间视为所述数据库其它数据空间。
所述将所述更新操作所对应的原始数据空间中的数据复制到数据库其它数据空间之前,还包括:确定所述数据库其它数据空间于数据库中的逻辑位置位于原始数据空间之后。
例如:对于执行语句update T set c2=300,c3=’ab’where c1=100,更新c1=100的一条数据记录。如图3中所示,这条记录存储在表页面1,遍历表页面1和表页面2,若表页面1和表页面2都已经没有空余空间,则新分配一个表页面3;
再如:遍历表tUser各表页面(例如,现存表页面是:表页面1和表页面2)可用空间,遍历方式是从表首端开始查找,如果有空间的大小不小于10k,即找到新空间(0X0089,表示新空间地址),返回新空间地址0X0089,准备存放旧数据;该新空间其实为原始数据库中的未被占用空间,并非前述实施例中的新增数据空间。本实施例中的其它数据空间包括此处的新空间(未被占用空间)以及新增数据空间。
若查找表页面1和表页面2均没有空间大小不小于10k的空间,此时在新建表页面3,此时数据库表自动在表页面2后创建表页面3,文件指针从表页面2尾端移动到表页面3尾端;在表页面3创建10k的空间作为新空间,返回新空间地址0X0089,准备存放旧数据。
再如:一次性更新一张表中的所有数据(update TableA set ColumnN=0,更新表TableA中的列ColumnN,使列ColumnN的所有值变成0)时,当前表TableA的数据占满表页面1和表页面2这两个表页面;数据库表会在表页面2后分配两个新页面,表页面3和表页面4,准备存放表页面1和表页面2的旧数据;其中,新表页面和旧表页面的数据都有唯一指示它的旧地址和新地址。
本实施例的其它方面可以与前述的实施例相同,在此不再赘述。
本实施例的方案中,所述存放所述原始数据的新空间在存放更新后新数据的原始数据空间之后,可以保证原始数据在新增数据之后,数据库表在回收表页面时,一般是从最后一个表页面开始回收,因而可解决数据库表前置位页面为空不能及时回收造成表膨胀的问题。
与前述方法实施例相对应,本申请同时提供了一种用于数据库更新的装置;请参考图2,是本申请提供的一种用于数据库更新的装置的实施例的示意图。以下对装置实施例进行描述,装置实施例与方法实施例类似,描述较为简单,具体请参考方法实施例。
本实施例的装置包括创建单元201,用于基于对数据库的更新操作,在更新操作所对应的原始数据空间的末尾创建新增数据空间;
复制单元202,用于将所述原始数据空间中的数据复制到新增数据空间;
更新执行单元203,用于在所述原始数据空间中记录更新数据。
此外,本申请还提供一种用于数据块更新的装置,其包括:
复制单元,用于基于对数据库的更新操作,将所述更新操作所对应的原始数据空间中的数据复制到数据库其它数据空间;
更新执行单元,在所述原始数据空间中记录更新数据。
此外,本申请还提供一种服务器,其包括存储器和处理器,其中,所述存储器存储处理器可执行指令,所述处理器用于执行所述储处理器可执行指令:
基于对数据库的更新操作,在更新操作所对应的原始数据空间的末尾创建新增数据空间;
将所述原始数据空间中的数据复制到新增数据空间;
在所述原始数据空间中记录更新数据。
此外,本申请还提供一种计算机可读介质,其上存储有指令,所述指令被执行以用于:
基于对数据库的更新操作,在更新操作所对应的原始数据空间的末尾创建新增数据空间;
将所述原始数据空间中的数据复制到新增数据空间;
在所述原始数据空间中记录更新数据。
此外,本申请还提供一种服务器,其包括存储器和处理器,其中,所述存储器存储处理器可执行指令,所述处理器用于执行所述储处理器可执行指令:
基于对数据库的更新操作,将所述更新操作所对应的原始数据空间中的数据复制到数据库其它数据空间;
在所述原始数据空间中记录更新数据。
此外,本申请还提供一种计算机可读介质,其上存储有指令,所述指令被执行以用于:
基于对数据库的更新操作,将所述更新操作所对应的原始数据空间中的数据复制到数据库其它数据空间;
在所述原始数据空间中记录更新数据。
本申请虽然以较佳实施例公开如上,但其并不是用来限定本申请,任何本领域技术人员在不脱离本申请的精神和范围内,都可以做出可能的变动和修改,因此本申请的保护范围应当以本申请权利要求所界定的范围为准。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
1、计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
2、本领域技术人员应明白,本申请的实施例可提供为方法、***或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
Claims (23)
1.一种数据库更新的方法,其特征在于,包括:
基于对数据库的更新操作,在更新操作所对应的原始数据空间的末尾创建新增数据空间;
将所述原始数据空间中的数据复制到新增数据空间;
在所述原始数据空间中记录更新数据。
2.根据权利要求1所述的一种数据库更新的方法,其特征在于,所述将所述原始数据空间中的数据复制到新增数据空间包括:
确定所述新增数据空间大小不小于原始数据空间中的数据大小;
将所述原始数据空间中的数据复制到新增数据空间。
3.根据权利要求1或2所述的一种数据库更新的方法,其特征在于,所述将所述原始数据空间中的数据复制到新增数据空间之前还包括:
确定更新操作所对应的原始数据空间大小不小于更新操作后的数据大小。
4.根据权利要求3所述的一种数据库更新的方法,其特征在于,所述判断更新操作所对应的原始数据空间大小是否不小于更新操作后的数据中,
其中,所述原始数据空间大小为所述原始数据所占表页面空间与所述原始表页面剩余有效空间之和的大小。
5.根据权利要求1或2所述的一种数据库更新的方法,其特征在于,所述将所述原始数据空间中的数据复制到新增数据空间之前还包括:
确定更新操作对应的数据结构不包含索引键。
6.根据权利要求1至5任一所述的一种数据库更新的方法,其特征在于,在所述原始数据空间中记录更新数据之后,还包括,
接收清理数据操作,整理所述数据空间表页面数据。
7.根据权利要求6所述的一种数据库更新的方法,其特征在于,接收清理数据操作,整理所述数据空间表页面数据,包括:
将所述数据库文件大小改小,截掉原始数据所在新增数据空间。
8.根据权利要求6所述的一种数据库更新方法,其特征在于,接收清理数据操作,整理所述数据空间表页面数据,包括:
清除新增数据空间中的原始数据;
删除已清除原始数据的新增数据空间。
9.一种数据库更新的方法,其特征在于,包括:
基于对数据库的更新操作,将所述更新操作所对应的原始数据空间中的数据复制到数据库其它数据空间;
在所述原始数据空间中记录更新数据。
10.根据权利要求9所述的一种数据库更新的方法,其特征在于,所述将所述原始数据空间中的数据复制到数据库其它数据空间包括:
判断所述数据库其它数据空间大小是否不小于原始数据空间中的数据大小;
若是,则将所述原始数据空间中的数据复制到数据库其它数据空间。
11.根据权利要求9或10所述的一种数据库更新的方法,其特征在于,所述将所述原始数据空间中的数据复制到数据库其它数据空间之前还包括:
确定更新操作所对应的原始数据空间大小是否不小于更新操作后的数据大小。
12.根据权利要求11所述的一种数据库更新的方法,其特征在于,所述判断更新操作所对应的原始数据空间大小是否不小于更新操作后的数据中,
其中,所述原始数据空间大小是所述原始数据所占表页面空间与所述原始表页面剩余有效空间之和的大小。
13.根据权利要求9所述的一种数据库更新的方法,其特征在于,所述将所述原始数据空间中的数据复制到数据库其它数据空间之前还包括:
确定所述更新操作对应的数据结构是否不包含索引键。
14.根据权利要求9所述的一种数据库更新的方法,其特征在于,所述判断所述数据库其它数据空间大小是否不小于原始数据空间中的数据大小包括:
遍历数据库中各表页面可用空间,判断是否存在不小于原始数据大小的空间;
若存在,则将该可用空间视为所述数据库其它数据空间;
若不存在,则在原始数据空间的末尾创建新增数据空间,将该新增数据空间视为所述数据库其它数据空间。
15.根据权利要9所述的一种数据库更新的方法,其特征在于,所述将所述更新操作所对应的原始数据空间中的数据复制到数据库其它数据空间之前,还包括:确定所述数据库其它数据空间于数据库中的逻辑位置位于原始数据空间之后。
16.根据权利要15所述的一种数据库更新的方法,其特征在于,确定所述数据库其它数据空间于数据库中的逻辑位置位于原始数据空间之后,包括:
遍历表中各表页面可用空间,判断是否存在不小于原始数据大小的可用空间;
若存在,判断所述可用空间于数据库中的逻辑位置是否位于原始数据空间之后;
若是,则将该可用空间视为所述数据库其它数据空间;
若否,则在原始数据空间的末尾创建新增数据空间,将该新增数据空间视为所述数据库其它数据空间。
17.根据权利要求9至16任一所述的一种数据库更新的方法,其特征在于,在所述原始数据空间中记录更新数据之后,还包括,
将所述数据库文件大小改小,截掉原始数据所在的数据库其它数据空间。
18.一种用于数据库更新的装置,其特征在于,包括:
创建单元,用于基于对数据库的更新操作,在更新操作所对应的原始数据空间的末尾创建新增数据空间;
复制单元,用于将所述原始数据空间中的数据复制到新增数据空间;
更新执行单元,用于在所述原始数据空间中记录更新数据。
19.一种用于数据块更新的装置,其特征在于,包括:
复制单元,用于基于对数据库的更新操作,将所述更新操作所对应的原始数据空间中的数据复制到数据库其它数据空间;
更新执行单元,在所述原始数据空间中记录更新数据。
20.一种服务器,其特征在于,包括存储器和处理器,其中,所述存储器存储处理器可执行指令,所述处理器用于执行所述储处理器可执行指令:
基于对数据库的更新操作,在更新操作所对应的原始数据空间的末尾创建新增数据空间;
将所述原始数据空间中的数据复制到新增数据空间;
在所述原始数据空间中记录更新数据。
21.一种计算机可读介质,其特征在于,其上存储有指令,所述指令被执行以用于:
基于对数据库的更新操作,在更新操作所对应的原始数据空间的末尾创建新增数据空间;
将所述原始数据空间中的数据复制到新增数据空间;
在所述原始数据空间中记录更新数据。
22.一种服务器,其特征在于,包括存储器和处理器,其中,所述存储器存储处理器可执行指令,所述处理器用于执行所述储处理器可执行指令:
基于对数据库的更新操作,将所述更新操作所对应的原始数据空间中的数据复制到数据库其它数据空间;
在所述原始数据空间中记录更新数据。
23.一种计算机可读介质,其特征在于,其上存储有指令,所述指令被执行以用于:
基于对数据库的更新操作,将所述更新操作所对应的原始数据空间中的数据复制到数据库其它数据空间;
在所述原始数据空间中记录更新数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711275922.3A CN110019130B (zh) | 2017-12-06 | 2017-12-06 | 一种数据库更新的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711275922.3A CN110019130B (zh) | 2017-12-06 | 2017-12-06 | 一种数据库更新的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110019130A true CN110019130A (zh) | 2019-07-16 |
CN110019130B CN110019130B (zh) | 2022-09-06 |
Family
ID=67186864
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711275922.3A Active CN110019130B (zh) | 2017-12-06 | 2017-12-06 | 一种数据库更新的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110019130B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112597160A (zh) * | 2020-12-23 | 2021-04-02 | 网宿科技股份有限公司 | 数据库表维护方法、装置、服务器及存储介质 |
CN112732702A (zh) * | 2021-03-31 | 2021-04-30 | 腾讯科技(深圳)有限公司 | 数据库引擎文件处理方法及装置 |
CN114024885A (zh) * | 2021-10-13 | 2022-02-08 | 苏州裕太微电子有限公司 | 一种基于子网掩码划分的ip路由表管理***及方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104216792A (zh) * | 2013-05-29 | 2014-12-17 | 华为软件技术有限公司 | 数据备份的方法及内存数据库存储引擎 |
US20150161012A1 (en) * | 2013-12-11 | 2015-06-11 | Andreas Meier | Backup of in-memory databases |
-
2017
- 2017-12-06 CN CN201711275922.3A patent/CN110019130B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104216792A (zh) * | 2013-05-29 | 2014-12-17 | 华为软件技术有限公司 | 数据备份的方法及内存数据库存储引擎 |
US20150161012A1 (en) * | 2013-12-11 | 2015-06-11 | Andreas Meier | Backup of in-memory databases |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112597160A (zh) * | 2020-12-23 | 2021-04-02 | 网宿科技股份有限公司 | 数据库表维护方法、装置、服务器及存储介质 |
CN112732702A (zh) * | 2021-03-31 | 2021-04-30 | 腾讯科技(深圳)有限公司 | 数据库引擎文件处理方法及装置 |
CN114024885A (zh) * | 2021-10-13 | 2022-02-08 | 苏州裕太微电子有限公司 | 一种基于子网掩码划分的ip路由表管理***及方法 |
CN114024885B (zh) * | 2021-10-13 | 2023-07-14 | 裕太微电子股份有限公司 | 一种基于子网掩码划分的ip路由表管理***及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110019130B (zh) | 2022-09-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10754875B2 (en) | Copying data changes to a target database | |
US8626717B2 (en) | Database backup and restore with integrated index reorganization | |
CN101183322B (zh) | 延迟日志生成的方法及其设备 | |
CN108509462B (zh) | 一种同步活动事务表的方法及装置 | |
CN107003935A (zh) | 优化数据库去重 | |
WO2019091085A1 (zh) | 一种快照比对的方法和装置 | |
US10013312B2 (en) | Method and system for a safe archiving of data | |
CN103577513A (zh) | 藉延迟节点实例化以缓存xml信息集的***和/或方法 | |
US20130254240A1 (en) | Method of processing database, database processing apparatus, computer program product | |
CN110888837B (zh) | 对象存储小文件归并方法及装置 | |
CN101201724A (zh) | 数据存储装置、重布置数据的方法及其记录介质 | |
CN110019130A (zh) | 一种数据库更新的方法及装置 | |
CN105426373A (zh) | 一种数据库同步方法与设备 | |
CN106446044A (zh) | 存储空间回收方法及装置 | |
CN105469001B (zh) | 磁盘数据保护方法及装置 | |
US8452730B2 (en) | Archiving method and system | |
US20180011897A1 (en) | Data processing method having structure of cache index specified to transaction in mobile environment dbms | |
CN104077078A (zh) | 读存储区、更新存储区的方法及装置 | |
US9639538B2 (en) | Embedding archived data in a data source | |
KR20120082176A (ko) | 데이터베이스 관리 시스템의 데이터 처리 방법 및 시스템 | |
US9569461B2 (en) | Distributed data authority system | |
CN111444114B (zh) | 一种非易失性内存中数据的处理方法、装置及*** | |
CN114297196A (zh) | 元数据存储方法、装置、电子设备及存储介质 | |
CN106155837B (zh) | 一种主备库数据修复的方法以及装置 | |
CN113778632B (zh) | 一种基于cassandra数据库的分布式事务管理方法 |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40010801 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |