[发明专利]一种数据库的持久化写入方法、装置和系统有效
申请号: | 201410696915.0 | 申请日: | 2014-11-26 |
公开(公告)号: | CN104408126B | 公开(公告)日: | 2018-06-15 |
发明(设计)人: | 侯冰剑;陈志标 | 申请(专利权)人: | 杭州华为数字技术有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 广州三环专利商标代理有限公司 44202 | 代理人: | 郝传鑫;熊永强 |
地址: | 310053 浙江省杭州*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 物理页 写入 缓冲 数据库文件 持久化 磁盘 数据库 数据库内存 写入装置 查询 | ||
本发明实施例公开了一种数据库的持久化写入方法,包括:在数据库内存生成N个脏页时,查询所述N个脏页在磁盘的数据库文件中各自对应的物理页,N为大于0的整数;确定所述数据库文件中的缓冲物理页;将所述N个脏页中的当前脏页写入到所述缓冲物理页,以及将所述当前脏页在所述数据库文件中对应的物理页作为新的缓冲物理页,并所述N个脏页中的下一脏页写入到所述新的缓冲物理页。本发明实施例还公开了一种数据库的持久化写入装置和系统。采用本发明,减少磁盘的写入次数,延长磁盘寿命。
技术领域
本发明涉及数据库领域,尤其涉及一种数据库的持久化写入方法、装置和系统。
背景技术
随着网络带宽的提高与移动应用的爆发,动态环境下管理数据在处理性能和数据规模上都对终端数据库提出了巨大的挑战。以SQLite为代表的终端数据库得到了广泛应用,但也逐渐暴露出性能不足的限制,在很多应用场景成为性能瓶颈,影响用户体验。
数据库大多以磁盘、闪存等块存储设备作为持久化介质,磁盘/闪存在写入操作时以页为单位,如果在写入一页时突然断电,会导致页上数据不完整;另外数据库的逻辑页大小和磁盘/闪存读写的物理页大小可能不同,在写入一“逻辑页”时断电或者操作系统崩溃也会导致“逻辑页”的数据不完整。如果持久化时出现了某个数据页的“部分写”,在数据恢复时会找不到一个完整的数据页来配合日志做恢复。目前数据库一般采用保存多处数据页的方式(比如在日志中也记录完整的数据页、或者先后写两份数据库文件等)来解决这个问题。
终端数据库运行的硬件环境一般只有若干闪存芯片,在读写性能、容量上有明显的限制,持久化时读写闪存是终端数据库性能提升的瓶颈。闪存页的写入次数有限,频繁的写入操作会影响整个终端设备的使用寿命,如何优化和减少持久化时写操作成为提升终端数据库性能和提升终端产品竞争力的关键。
发明内容
本发明实施例所要解决的技术问题在于,提供一种数据库的持久化写入方法、装置和系统。可解决现有技术中刷脏页磁盘写次数过多的问题。
为了解决上述技术问题,本发明实施例提供了一种数据库的持久化写入方法,包括:
在数据库内存生成N个脏页时,查询所述N个脏页在磁盘的数据库文件中各自对应的物理页,N为大于0的整数;
确定所述数据库文件中的缓冲物理页;
将所述N个脏页中的当前脏页写入到所述缓冲物理页,以及将所述当前脏页在所述数据库文件中对应的物理页作为新的缓冲物理页,并所述N个脏页中的下一脏页写入到所述新的缓冲物理页。
结合第一方面,在第一种可能的实现方式中,所述在数据库内存生成N个脏页时,查询所述N个脏页在磁盘的数据库文件中各自对应的物理页包括:
当数据库内存生成N个脏页时,根据写入顺序生成包含所述N个脏页的脏页队列;
查询所述脏页队列所述数据库文件中对应的包含N个物理页的第一物理页队列;其中,所述脏页队列的脏页和所述第一物理页队列中的物理页依据队列位置一一对应。
结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,还包括:
将第一映射关系保存至所述数据库文件的第一映射物理页中;其中,所述第一映射关系表示所述脏页队列中包含的N个脏页与所述第一物理页队列包含N个物理页的映射关系。
结合第一方面的第二种可能的实现方式,在第三种可能的实现方式中,还包括:
将所述缓冲物理页插入到所述第一物理页队列的队列头的前面,并移除所述第一物理页队列的队列尾后生成第二物理页队列;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州华为数字技术有限公司,未经杭州华为数字技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410696915.0/2.html,转载请声明来源钻瓜专利网。