CN103279561A - 一种提高数据库数据随机读写速度的方法 - Google Patents
一种提高数据库数据随机读写速度的方法 Download PDFInfo
- Publication number
- CN103279561A CN103279561A CN2013102339928A CN201310233992A CN103279561A CN 103279561 A CN103279561 A CN 103279561A CN 2013102339928 A CN2013102339928 A CN 2013102339928A CN 201310233992 A CN201310233992 A CN 201310233992A CN 103279561 A CN103279561 A CN 103279561A
- Authority
- CN
- China
- Prior art keywords
- data
- database
- write
- read
- solid state
- 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.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种提高数据库数据随机读写速度的方法,该方法将固态硬盘作为缓存来提高数据库的随机读写速度,包括数据写入子方法和数据读取子方法,所述的数据写入子方法包括:根据需写入的数据获取数据库硬盘中对应的扇区号,根据扇区号计算对应的数据集,将数据写入数据集中,并将数据块标记为脏数据,当脏数据达到设定的阈值时自动将脏数据写入数据库硬盘;所述的数据读取子方法包括:根据需读取的数据获取对应的扇区号;根据扇区号计算对应的数据集;判断当前数据集中是否存在需读取的数据,若是,则从当前数据集中读取数据,若否,则从数据库硬盘中读取数据。与现有技术相比,本发明具有成本低廉、可靠性高、有效提高数据读写速度等优点。
Description
技术领域
本发明涉及一种计算机硬件改进技术,尤其是涉及一种提高数据库数据随机读写速度的方法。
背景技术
在现今互联网遍布全球,网络应用越来越广泛的今天。互联网上存储的数据也越来越大,且应用对于数据库的依赖也日益显著。据不完全统计,2011年全球互联网上总数据量已经达到了惊人的10万亿GB,而每天人们对于数据的交互可以达到几百万亿次。传统的数据库存储介质和方案已经越来越无法满足现今日益增长的用户需求。
现今最为广泛使用的数据库存储介质是温彻斯特式硬盘,此类介质具有容量大,价格低,数据保存时间长等优点。但因为它是通过磁盘寻转,磁头靠近并读取磁盘上的信息,数据读取的速度完全取决于磁盘的转速。一块高性能15000转/分钟的服务器硬盘,线性读写数据的吞吐量可以达到150MB/秒,而随机读写速度仅有可怜的250次/秒。由于互联网应用的特性,绝大部分的数据都是以随机读写的方式进行的。所以随机读写性能是衡量数据库性能的最重要指标。
针对这一问题现在互联网领域普遍使用的解决方案有:
1、提高硬盘转速
该方案通过不断提高硬盘转速来实现提升硬盘读取的速度。转速从最初的5400转/秒、7200转/秒、10000转/秒到15000转/秒,该技术发展较慢,且受到物理条件的限制不可能有重大的进步。
2、RAID(Redundant Arrays of Inexpensive Disks,磁盘阵列)
该方案通过增加冗余硬盘,每块硬盘存储相同的数据来提高数据库的读写能力。性能的提升与硬盘的数量有直接关系,成本较高。
3、使用内存缓存
使用内存来对部分数据进行缓存。由于内存属于电子设备,不存在机械运动,每秒可以执行上万次随机读写操作。但是正因为如此如果掉电情况发生,驻留在内存中的数据就会因为没有及时写入硬盘而造成丢失。对于数据安全性要求较高的企业来说,这是一件不可接受的事情。
发明内容
本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种成本低廉、可靠性高、可扩展性强、有效提高数据读写速度的提高数据库数据随机读写速度的方法。
本发明的目的可以通过以下技术方案来实现:
一种提高数据库数据随机读写速度的方法,该方法将固态硬盘作为缓存来提高数据库的随机读写速度,该固态硬盘与数据库硬盘连接,所述的方法具体包括数据写入子方法和数据读取子方法,
所述的数据写入子方法包括以下步骤:
a1)根据需写入的数据获取数据库硬盘中对应的扇区号dbn;
a2)根据获得的扇区号dbn通过哈希算法计算固态硬盘上对应的数据集Set;
a3)将需要写入的数据先写入步骤a2)计算得到的数据集Set中,并将写入完成的数据块标记为脏数据;
a4)判断当前数据集Set中的脏数据是否达到设定的阈值,若是,则自动将该脏数据写入数据库硬盘,并将数据集Set中对应的数据块标记为已写,若否,则返回步骤a1);
所述的数据读取子方法包括以下步骤:
b1)根据需读取的数据获取数据库硬盘中存放该数据的扇区号dbn;
b2)根据获得的扇区号dbn通过哈希算法计算固态硬盘上对应的数据集Set;
b3)判断当前数据集Set中是否存在需读取的数据,若是,则执行步骤b4),若否,则执行步骤b5);
b4)从当前数据集Set中读取需要的数据;
b5)从数据库硬盘中读取需要的数据,并将该数据写入固态硬盘对应的数据集Set中,以便下次读取。
所述的根据获得的扇区号dbn通过哈希算法计算固态硬盘上对应的数据集Set具体为:
Set=(dbn/B/S)%n
式中,B为配置的数据块的大小,S为配置的数据集的大小,n为固态硬盘中数据集的个数,n=V/S/B,V为固态硬盘的容量。
所述的固态硬盘通过SAS接口或者PCIe接口与数据库硬盘连接。
所述的固态硬盘设有多个。
与现有技术相比,本发明通过使用固态硬盘(SSD)充当传统硬盘缓存来提高数据库随机读写速度,具有以下优点:
1、成本低廉,但效果显著:由于SSD使用的是闪存技术,是通过晶体管的状态来记录数据的,在随机读写性能上比传统的硬盘要高出上百倍,而价格只有几倍,性价比非常之高。
2、可靠性高:本发明在SSD中的数据达到一定阈值时及时将数据写入硬盘,提高了数据存储的可靠性,有效提高数据读写速度;虽然SSD也是电子设备,需通过加电来操作,但是晶体管可以永久保持其物理状态并记录数据,不存在掉电以后数据丢失的问题。
3、可扩展性强:SSD可以通过提高单位面积晶体管的数量来提升读写效率,也可以将多块SSD进行级联来提升读写效率,可扩展性大大增强。
4、故障率低:由于是电子设备,不受机械性能的影响,硬件故障率大大降低。
附图说明
图1为本发明数据写入子方法流程图;
图2为本发明数据读取子方法流程图。
具体实施方式
下面结合附图和具体实施例对本发明进行详细说明。本实施例以本发明技术方案为前提进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。
一种提高数据库数据随机读写速度的方法,该方法将固态硬盘作为缓存来提高数据库的随机读写速度,该固态硬盘通过SAS接口或者PCIe接口与数据库硬盘连接,所述的方法具体包括数据写入子方法和数据读取子方法,
如图1所示,数据写入子方法包括以下步骤:
a1)根据需写入的数据获取数据库硬盘中对应的扇区号dbn;
a2)根据获得的扇区号dbn通过哈希算法计算固态硬盘上对应的数据集Set,哈希算法公式为:
Set=(dbn/B/S)%n
式中,B为配置的数据块的大小,S为配置的数据集的大小,n为固态硬盘中数据集的个数,n=V/S/B,V为固态硬盘的容量;
a3)将需要写入的数据先写入步骤a2)计算得到的数据集Set中,并将写入完成的数据块标记为脏数据;
a4)判断当前数据集Set中的脏数据是否达到设定的阈值(如20%),若是,则自动将该脏数据写入数据库硬盘,并将数据集Set中对应的数据块标记为已写,若否,则返回步骤a1);
如图2所示,数据读取子方法包括以下步骤:
b1)根据需读取的数据获取数据库硬盘中存放该数据的扇区号dbn;
b2)根据获得的扇区号dbn通过哈希算法计算固态硬盘上对应的数据集Set;
b3)判断当前数据集Set中是否存在需读取的数据,若是,则执行步骤b4),若否,则执行步骤b5);
b4)从当前数据集Set中读取需要的数据;
b5)从数据库硬盘中读取需要的数据,并将该数据写入固态硬盘对应的数据集Set中,以便下次读取。
SSD可以通过提高单位面积晶体管的数量来提升读写效率,也可以将多块SSD进行级联来提升读写效率。
以下示例说明一块500G温彻斯特式数据库硬盘与一块100GB固态硬盘SSD的协同工作的过程。
配置参数:
温彻斯特式硬盘容量=500*1024*1024=524288000KB
固态硬盘SSD容量=100*1024*1024=104857600KB
数据块Block大小=4KB
数据集Set大小=512
数据集Set数量=104857600/512/4=51200
数据写入阀值=20%
数据写入(32K)
1.根据需要写入的32K数据计算得到对应硬盘的扇区号为25449800~25449807
2.根据获得的扇区号dbn,通过哈希算法获取到SSD上对应的数据集Set#12426
(25449800/4/512)%51200=12426
(25449807/4/512)%51200=12426
3.假使#12426数据集Set中已经写入了100个数据块Block。将需要写入的32K数据写入到#12426数据集Set中100~107的8个连续数据块Block中
4.标记数据集Set中的100~107数据块Block为Dirty(脏数据)
5.由于已经有107个数据块写入,已经达到20%的阀值上限,系统自动将脏数据写入到硬盘中
6.将写入到硬盘的0~107数据块标记为“已写“
数据读取(32K)
a.根据需要读取的32K数据计算得到存放数据的硬盘扇区号dbn为25449800~25449807
b.根据获得的扇区号dbn,通过哈希算法获取到SSD上对应的数据集Set#12426
c.查看数据集Set#12426中的元数据,发现并不存在对应扇区号为25449800~25449807的数据
e.从硬盘的25449800~25449807扇区中读取需要的32K数据
f.将读取的32K数据写入SSD数据集Set#12426中。
Claims (4)
1.一种提高数据库数据随机读写速度的方法,其特征在于,该方法将固态硬盘作为缓存来提高数据库的随机读写速度,该固态硬盘与数据库硬盘连接,所述的方法具体包括数据写入子方法和数据读取子方法,
所述的数据写入子方法包括以下步骤:
a1)根据需写入的数据获取数据库硬盘中对应的扇区号dbn;
a2)根据获得的扇区号dbn通过哈希算法计算固态硬盘上对应的数据集Set;
a3)将需要写入的数据先写入步骤a2)计算得到的数据集Set中,并将写入完成的数据块标记为脏数据;
a4)判断当前数据集Set中的脏数据是否达到设定的阈值,若是,则自动将该脏数据写入数据库硬盘,并将数据集Set中对应的数据块标记为已写,若否,则返回步骤a1);
所述的数据读取子方法包括以下步骤:
b1)根据需读取的数据获取数据库硬盘中存放该数据的扇区号dbn;
b2)根据获得的扇区号dbn通过哈希算法计算固态硬盘上对应的数据集Set;
b3)判断当前数据集Set中是否存在需读取的数据,若是,则执行步骤b4),若否,则执行步骤b5);
b4)从当前数据集Set中读取需要的数据;
b5)从数据库硬盘中读取需要的数据,并将该数据写入固态硬盘对应的数据集Set中。
2.根据权利要求1所述的一种提高数据库数据随机读写速度的方法,其特征在于,所述的根据获得的扇区号dbn通过哈希算法计算固态硬盘上对应的数据集Set具体为:
Set=(dbn/B/S)%n
式中,B为配置的数据块的大小,S为配置的数据集的大小,n为固态硬盘中数据集的个数,n=V/S/B,V为固态硬盘的容量。
3.根据权利要求1所述的一种提高数据库数据随机读写速度的方法,其特征在于,所述的固态硬盘通过SAS接口或者PCIe接口与数据库硬盘连接。
4.根据权利要求1所述的一种提高数据库数据随机读写速度的方法,其特征在于,所述的固态硬盘设有多个。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2013102339928A CN103279561A (zh) | 2013-06-13 | 2013-06-13 | 一种提高数据库数据随机读写速度的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2013102339928A CN103279561A (zh) | 2013-06-13 | 2013-06-13 | 一种提高数据库数据随机读写速度的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103279561A true CN103279561A (zh) | 2013-09-04 |
Family
ID=49062079
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2013102339928A Pending CN103279561A (zh) | 2013-06-13 | 2013-06-13 | 一种提高数据库数据随机读写速度的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103279561A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103513941A (zh) * | 2013-10-18 | 2014-01-15 | 华为技术有限公司 | 写入数据的方法及装置 |
CN103631940A (zh) * | 2013-12-09 | 2014-03-12 | 中国联合网络通信集团有限公司 | 一种应用于hbase数据库的数据写入方法及系统 |
CN105528181A (zh) * | 2015-12-04 | 2016-04-27 | 浪潮(北京)电子信息产业有限公司 | 一种数据io散列的方法 |
CN107291794A (zh) * | 2017-04-26 | 2017-10-24 | 杭州沃趣科技股份有限公司 | 一种提高数据库性能的方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102521389A (zh) * | 2011-12-23 | 2012-06-27 | 天津神舟通用数据技术有限公司 | 一种混合使用固态硬盘和传统硬盘的postgresql数据库集群系统及其优化方法 |
CN102637147A (zh) * | 2011-11-14 | 2012-08-15 | 天津神舟通用数据技术有限公司 | 利用固态硬盘作为计算机写缓存的存储系统以及相应的管理调度方法 |
-
2013
- 2013-06-13 CN CN2013102339928A patent/CN103279561A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102637147A (zh) * | 2011-11-14 | 2012-08-15 | 天津神舟通用数据技术有限公司 | 利用固态硬盘作为计算机写缓存的存储系统以及相应的管理调度方法 |
CN102521389A (zh) * | 2011-12-23 | 2012-06-27 | 天津神舟通用数据技术有限公司 | 一种混合使用固态硬盘和传统硬盘的postgresql数据库集群系统及其优化方法 |
Non-Patent Citations (4)
Title |
---|
DO J, ZHANG DH等: "Turbocharging DBMS buffer pool using SSDs", 《PROC. OF THE ACM SIGMOD INT’L CONF. ON MANAGEMENT OF DATA (SIGMOD 2011 AND PODS 2011)》 * |
刘圣卓等: "一种面向SSD-HDD混合存储的热区跟踪替换算法", 《小型微型计算机系统》 * |
崔凯: "混合结构闪存索引研究", 《中国优秀硕士学位论文全文数据库信息科技辑(月刊)》 * |
汤显等: "FClock:一种面向SSD的自适应缓冲区管理算法", 《计算机学报》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103513941A (zh) * | 2013-10-18 | 2014-01-15 | 华为技术有限公司 | 写入数据的方法及装置 |
CN103513941B (zh) * | 2013-10-18 | 2016-08-17 | 华为技术有限公司 | 写入数据的方法及装置 |
CN103631940A (zh) * | 2013-12-09 | 2014-03-12 | 中国联合网络通信集团有限公司 | 一种应用于hbase数据库的数据写入方法及系统 |
CN103631940B (zh) * | 2013-12-09 | 2017-02-08 | 中国联合网络通信集团有限公司 | 一种应用于hbase数据库的数据写入方法及系统 |
CN105528181A (zh) * | 2015-12-04 | 2016-04-27 | 浪潮(北京)电子信息产业有限公司 | 一种数据io散列的方法 |
CN107291794A (zh) * | 2017-04-26 | 2017-10-24 | 杭州沃趣科技股份有限公司 | 一种提高数据库性能的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101852668B1 (ko) | 어드레스 매핑 | |
US9575674B2 (en) | Data streaming for solid-state bulk storage devices | |
CN103577338B (zh) | 一种回收垃圾数据的方法及存储设备 | |
US9923562B1 (en) | Data storage device state detection on power loss | |
TWI420298B (zh) | 快閃記憶裝置及其資料存取方法 | |
US20130173972A1 (en) | System and method for solid state disk flash plane failure detection | |
CN107025071A (zh) | 非易失性存储器装置及其垃圾收集方法 | |
CN102981783A (zh) | 一种基于Nand Flash的Cache加速方法 | |
CN108182154A (zh) | 一种基于固态硬盘的日志文件的读写方法及固态硬盘 | |
CN102999428A (zh) | 一种瓦记录磁盘的四级编址方法 | |
CN103279561A (zh) | 一种提高数据库数据随机读写速度的方法 | |
CN103019882B (zh) | 固态硬盘的raid4系统 | |
CN103076993A (zh) | 一种密集型系统中的存储系统及方法 | |
WO2014079201A1 (zh) | 重复数据删除的方法及其固态硬盘 | |
CN103645862A (zh) | 一种磁盘阵列初始化性能提升方法 | |
Rosenthal | The medium-term prospects for long-term storage systems | |
CN102880432B (zh) | 利用数据有限寿命提高闪存芯片写入速度的方法、系统及其控制器 | |
CN102867046A (zh) | 基于固态硬盘的数据库优化方法及系统 | |
JP2011141857A (ja) | Raidシステム | |
CN103399783A (zh) | 虚拟机的镜像文件的存储方法和装置 | |
CN102543177A (zh) | 一种固态盘静态磨损平衡算法 | |
CN114253466B (zh) | 数据去重参数计算的介质、系统和方法 | |
JP5953245B2 (ja) | 情報処理システム | |
CN106648458A (zh) | 一种具有多个磁盘和多个ssd的存储系统 | |
Rahiman et al. | Solid state disk: A new storage device for video storage server |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20130904 |