本发明专利技术公开了一种数据库维护方法和设备,通过应用本发明专利技术的技术方案,定期切换分区到备份数据表,将用户的查询页面分为两类:对查询频率较高的近期数据和查询频率较低的历史数据分别通过不同的数据表进行查询,并且控制近期数据的数据量,控制高频率查询所针对的数据量规模,提高进行数据查询的速度和效率,改善用户的使用体验。
【技术实现步骤摘要】
本专利技术涉及通信
,特别涉及一种数据库维护方法和设备。
技术介绍
对于访问量大点的网站而言,分离单独的图片服务器和页面服务器相当必要,例如可以用Iighttpd(—种德国开源程序)来运行图片服务器,用apache (—种Web服务器软件)来运行页面服务器,当然也可以选择别的,甚至,可以扩展成很多台图片服务器和很多台页面服务器,并设置相关域名,例如img. domain, com和m domain, com,页面里的图片路径都使用绝对路径,如 <img src = “ http://img. domain, com/abc. gif 〃 />,然后设置DNS (Domain NameSystem,域名系统)轮循,达到最初级的负载均衡。当然,服务器多了就不可避免的涉及一个同步的问题,这个可以使用数据镜像备份工具(例如,rsync软件)来处理。数据库服务器是重中之重,因为网站的瓶颈问题很多情况下是出在数据库身上。 现在一般的中小网站多使用MySQL数据库(一种小型关系型数据库管理系统),不过其集群功能大多还没有达到stable的阶段。一般而言,使用MySQL数据库的时候,应该建立一个主从(一主多从)结构,主从数据库服务器中采用不同的数据表结构,例如主数据库服务器使用irmodb表结构,从数据服务器使用myisam表结构,充分发挥各自的优势,而且这样的主从结构分离了读写操作,降低了读操作的压力,甚至还可以设定一个专门的从服务器做备份服务器,方便备份。不然如果只有一台主服务器,在大数据量的情况下,直接拷贝数据文件的话,必须先停止数据库服务再拷贝,否则备份文件会出错。但对于很多网站而言,即使数据库服务仅停止了一秒也是不可接受的。如果有了一台从数据库服务器,在备份数据的时候,可以先停止服务(slave stop)再备份,再启动服务(slave start)后从服务器会自动从主服务器同步数据,一切都没有影响。但是主从结构也是有致命缺点的,那就是主从结构只是降低了读操作的压力,却不能降低写操作的压力。为了适应更大的规模,可能只剩下一种处理方式横向/纵向分割数据库。所谓横向分割数据库,就是把不同的表保存到不同的数据库服务器上,比如说用户表保存在A数据库服务器上,文章表保存在B数据库服务器上,当然这样的分割是有代价的,最基本的就是无法进行LEFT JOIN之类的操作了。所谓纵向分割数据库,一般是指按照用户标识(userjd)等来划分数据存储的服务器,比如说有5台数据库服务器,那么“User_id% 5+1”等于1的就保存到1号服务器, 等于2的就保存到2好服务器,以此类推,纵向分隔的原则有很多种,可以视情况选择。不过和横向分割数据库一样,纵向分割数据库也是有代价的,最基本的就是在进行如COUNT,SUM等汇总操作的时候会麻烦很多。综上所述,数据库服务器的解决方案一般视情况往往是一个混合的方案,以其发挥各种方案的优势,有时候还需要借助memcached之类的第三方软件,以便适应更大访问量的要求。在实现本专利技术的过程中,专利技术人发现现有技术至少存在以下缺点分割后的数据表人工维护起来很麻烦,而且在分层过多后,数据表的读取过程会变得十分复杂,从而导致读写性能并不能被大幅度提升。
技术实现思路
本专利技术提供一种数据库维护方法和设备,提高大容量数据库的数据查询速度,简化后期维护和改善用户体验。为达到上述目的,本专利技术一方面提供了一种数据库维护方法,应用于包括一个或多个数据表的数据库系统中,其中,一个所述数据表作为当前存储数据表,包括至少一个数据分区,所述方法包括以下步骤识别数据的生成时间所对应的时间区间;将所述数据存储在所述时间区间所对应的所述当前存储数据表的数据分区中;当达到预设的创建时间阈值时,在所述当前存储数据表中创建新的数据分区;当所述当前存储数据表中至少一个数据分区达到预设的删除时间阈值时,将所述数据分区中的数据存储至备份数据表中对应的数据分区内,并删除所述达到预设的删除时间阈值的数据分区。优选的,一个所述数据表作为当前存储数据表,包括至少一个数据分区,具体为当所述数据库系统中当前存在的数据表不包含数据分区时,创建一个新的数据表,并在所述数据表中创建对应不同时间区间的数据分区;或,当所述数据库系统中当前存在的数据表中包含数据分区时,将所述包含数据分区的数据表确定为当前存储数据表,并确定所述数据分区对应不同的时间区间。优选的,当所述数据库系统中当前存在的数据表不包含数据分区时,创建一个新的数据表,并在所述数据表中创建对应不同时间区间的数据分区之后,还包括设定所述新的数据表的启用触发时间,所述启用触发时间为所述数据表中第二数据分区所对应的时间区间的起点;当所述启用触发时间到达时,启用所述新的数据表作为当前存储数据表,将其他数据表中的数据存储至所述当前存储数据表中的第一数据分区内,并废弃所述其他数据表。优选的,当所述当前存储数据表中至少一个数据分区达到预设的删除时间阈值时,将所述数据分区中的数据存储至备份数据表中对应的数据分区内,并删除所述达到预设的删除时间阈值的数据分区,具体包括当所述当前存储数据表中至少一个数据分区达到预设的删除时间阈值时,判断当前是否存在备份数据表,如果不存在,则创建备份数据表,所述备份数据表中包括与所述当前存储数据表中对应相同时间区间的数据分区;如果存在备份数据表或所述备份数据表创建完毕,则将所述当前存储数据表中达到预设的删除时间阈值的数据分区中的数据存储至所述备份数据表中对应的数据分区内, 并删除所述达到预设的删除时间阈值的数据分区。优选的,还包括当接收到数据查询请求时,识别所述数据查询请求所对应的时间区间;如果所述数据查询请求所对应的时间区间包含于所述当前存储数据表中数据分区所对应的时间区间,或所述数据查询请求没有携带对应的时间区间,则在所述当前存储数据表中查询所述数据查询请求所对应的数据;如果所述数据查询请求所对应的时间区间包含于所述历史存储数据表中数据分区所对应的时间区间,则在所述历史存储数据表中查询所述数据查询请求所对应的数据。优选的,当所述数据查询请求所对应的时间区间包含于不同的数据表中数据分区所对应的时间区间时,具体为通过不同的查询链接,触发所述数据查询请求。另一方面,本专利技术还提供了一种数据库维护设备,应用于包括一个或多个数据表的数据库系统中,其中,一个所述数据表作为当前存储数据表,包括至少一个数据分区,具体包括设置模块,用于设置当前存储数据表中各数据分区所对应的时间区间,以及所述当前存储数据表所对应的创建时间阈值,和各数据分区所对应的删除时间阈值;识别模块,用于识别数据的生成时间所对应的时间区间;存储模块,用于根据所述设置模块所设置的时间区间和所述识别模块所识别的结果,将所述数据存储在所述时间区间所对应的所述当前存储数据表的数据分区中;判断模块,用于判断是否达到所述设置模块所设置的创建时间阈值或删除时间阈值;处理模块,用于当所述判断模块判断达到创建时间阈值时,在所述当前存储数据表中创建新的数据分区;当所述判断模块判断所述当前存储数据表中至少一个数据分区达到删除时间阈值时,将所述数据分区中的数据存储至备份数据表中对应的数据分区内,并删除所述达到预设的删除时间阈值的数据分区本文档来自技高网...
【技术保护点】
1.一种数据库维护方法,其特征在于,应用于包括一个或多个数据表的数据库系统中,其中,一个所述数据表作为当前存储数据表,包括至少一个数据分区,所述方法包括以下步骤:识别数据的生成时间所对应的时间区间;将所述数据存储在所述时间区间所对应的所述当前存储数据表的数据分区中;当达到预设的创建时间阈值时,在所述当前存储数据表中创建新的数据分区;当所述当前存储数据表中至少一个数据分区达到预设的删除时间阈值时,将所述数据分区中的数据存储至备份数据表中对应的数据分区内,并删除所述达到预设的删除时间阈值的数据分区。
【技术特征摘要】
【专利技术属性】
技术研发人员:牛鸣,
申请(专利权)人:腾讯科技北京有限公司,
类型:发明
国别省市:11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。