CN106528896A - 一种数据库优化方法和装置 - Google Patents

一种数据库优化方法和装置 Download PDF

Info

Publication number
CN106528896A
CN106528896A CN201611250044.5A CN201611250044A CN106528896A CN 106528896 A CN106528896 A CN 106528896A CN 201611250044 A CN201611250044 A CN 201611250044A CN 106528896 A CN106528896 A CN 106528896A
Authority
CN
China
Prior art keywords
data
compression
database table
interim
key assignments
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
Application number
CN201611250044.5A
Other languages
English (en)
Other versions
CN106528896B (zh
Inventor
温正湖
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Netease Hangzhou Network Co Ltd
Original Assignee
Netease Hangzhou Network Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Netease Hangzhou Network Co Ltd filed Critical Netease Hangzhou Network Co Ltd
Priority to CN201611250044.5A priority Critical patent/CN106528896B/zh
Publication of CN106528896A publication Critical patent/CN106528896A/zh
Application granted granted Critical
Publication of CN106528896B publication Critical patent/CN106528896B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/215Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors

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)
  • Quality & Reliability (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明的实施方式提供了一种数据优化方法和装置。该数据优化方法包括:在数据导入操作之前,获取数据库表结构;如果根据获取的数据库表结构,确定需要进行数据压缩时,则对待导入的数据库表进行压缩后再执行数据导入操作。通过在进行数据库导入操作之前,判断是否需要进行数据压缩,如果判断出需要进行数据压缩,则先对待导入的数据库表进行压缩后再执行数据导入操作,由此,完成了数据库表的优化,减少了数据库表占用的存储空间,而且,相比于在线修改数据表结构的优化方式,不会影响数据库上的现有业务,为用户带来了更好的体验。此外,本发明的实施方式提供了一种数据库优化装置。

Description

一种数据库优化方法和装置
技术领域
本发明的实施方式涉及数据库技术领域,更具体地,本发明的实施方式涉及一种数据库优化方法和装置。
背景技术
本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
当前实现MySQL数据库备份和恢复的方案主要有三种:一是MySQL官方提供的基于mysqldump进行数据库元数据(schema)和数据(record)导出,再使用mysql客户端进行数据导入(source);二是MySQL服务提供商Percona公司提供的基于mydumper和myloader的数据导出和导入;三是MySQL服务提供商Percona公司提供的基于xtrabackup的数据导出和导入。前两种属于逻辑备份,不同的是第二种是多线程的。最后一种是物理备份,即直接拷贝数据库物理文件。
发明内容
现有的三种主流数据库备份恢复方案,虽能够满足大部分场景下的使用需求,但均存在一个不足,就是在恢复数据时只是简单得将备份的数据进行导入,均不提供用户进行数据库表结构优化的能力,比如启用压缩、加/减列、修改列、加/减索引、修改索引等。但是,在数据恢复阶段是非常好的表结构优化机会,因为此时表结构在数据库实例中重新被创建,表中的数据为空,相比在线修改表结构,此时修改的成本最小,既不会影响线上业务也不需要额外的操作时间。
为此,非常需要一种改进的数据库优化方法,以在数据库导入过程中,优化数据库表结构,节省数据库存储空间。
在本上下文中,本发明的实施方式期望提供一种数据库优化方法和装置。
在本发明实施方式的第一方面中,提供了一种数据库优化方法,包括:
在数据导入操作之前,获取数据库表结构;
如果根据获取的数据库表结构,确定需要进行数据压缩时,则对待导入的数据库表进行压缩后再执行数据导入操作。
可选地,在确定需要进行数据压缩时,对待导入的数据库表进行压缩之前,还包括:
判断是否满足用户预设的压缩条件;以及
对待导入的数据库表进行压缩,具体包括:
如果判断结果为是,则再对待导入的数据库表进行压缩。
优选地,所述压缩条件包括以下至少一项:最低压缩比例,执行数据压缩时中央处理单元CPU最大利用率;数据压缩采样量和压缩键值,其中,所述压缩键值表示数据压缩后每页占用存储空间的期望值。
优选地,对待导入的数据库表进行压缩,具体包括:
根据所述压缩键值对待导入的数据库表进行压缩。
可选地,如果所述用户未设置压缩键值;则
根据所述压缩键值对待导入的数据库表进行压缩之前,还包括:
为待导入的数据库表创建n个临时表,其中,n为不大于预设值的自然数,每一临时表对应不同的临时压缩键值;
针对每一临时表,根据该临时表对应的临时压缩键值,从数据导出过程中生成的数据文件中选择若干个数据文件启用压缩并插入到该临时表中;
选择占用存储空间最小的临时表对应的临时压缩键值为所述压缩键值。
可选地,在从数据导出过程中生成的数据文件中选择若干个数据文件启用压缩并插入到该临时表中的同时,还包括:
分别记录针对每一临时表执行数据压缩操作和数据插入操作所消耗的时间;以及
如果数据插入操作结束后,每一临时表占用的存储空间相同,则所述方法,还包括:
选择消耗时间最短的临时表对应的临时压缩键值为所述压缩键值。
可选地,本发明实施例提供的数据库优化方法,还包括:
确定被选择的临时表为目标数据库表;
将待导入的数据库表中剩余的数据利用确定出的压缩键值进行压缩后插入到所述目标数据库表中。
优选地,从数据导出过程中生成的数据文件中选择出的若干个数据文件包含的数据量满足预设的数据量范围。
优选地,根据获取的数据库表结构,按照以下方法判断是否需要进行数据压缩:
根据获取的数据库表结构,解析数据库表中包含的列数据;
如果所述列数据中指定类型数据占比超过第一预设阈值时,确定需要进行数据压缩;
如果所述列数据中指定类型数据占比不超过第一预设阈值时,确定不需要进行数据压缩。
优选地,根据获取的数据库表结构,按照以下方法判断是否需要进行数据压缩:
根据获取的数据库表结构,判断所述数据库表占用的存储空间是否超过第二预设阈值,如果是,则确定需要进行数据压缩;否则,确定不需要进行数据压缩。
在本发明实施方式的第二方面中,提供了一种数据库优化装置,包括:
获取单元,用于在数据导入操作之前,获取数据库表结构;
数据压缩单元,用于如果根据获取的数据库表结构,确定需要进行数据压缩时,则对待导入的数据库表进行压缩;
数据导入单元,用于对所述数据压缩单元压缩后的数据库表执行数据导入操作。
可选地,本发明实施例提供的数据库优化装置,还包括第一判断单元,其中:
所述第一判断单元,用于在所述数据压缩单元确定需要进行数据压缩时,对待导入的数据库表进行压缩之前,判断是否满足用户预设的压缩条件;
所述数据压缩单元,具体用于如果所述第一判断单元的判断结果为是,则再对待导入的数据库表进行压缩。
优选地,所述压缩条件包括以下至少一项:最低压缩比例,执行数据压缩时中央处理单元CPU最大利用率;数据压缩采样量和压缩键值,其中,所述压缩键值表示数据压缩后每页占用存储空间的期望值。
优选地,所述数据压缩单元,具体用于根据所述压缩键值对待导入的数据库表进行压缩。
可选地,本发明实施例提供的数据库优化装置,还包括:
临时表创建单元,用于如果所述用户未设置压缩键值,在所述数据压缩单元根据所述压缩键值对待导入的数据库表进行压缩之前,为待导入的数据库表创建n个临时表,其中,n为不大于预设值的自然数,每一临时表对应不同的临时压缩键值;
数据插入单元,用于针对每一临时表,根据该临时表对应的临时压缩键值,从数据导出过程中生成的数据文件中选择若干个数据文件启用压缩并插入到该临时表中;
压缩键值确定单元,用于选择占用存储空间最小的临时表对应的临时压缩键值为所述压缩键值。
可选地,本发明实施例提供的数据库优化装置,还包括记录单元,其中:
所述记录单元,用于在所述数据插入单元从数据导出过程中生成的数据文件中选择若干个数据文件启用压缩并插入到该临时表中的同时,分别记录针对每一临时表执行数据压缩操作和数据插入操作所消耗的时间;
所述压缩键值确定单元,用于选择消耗时间最短的临时表对应的临时压缩键值为所述压缩键值。
可选地,本发明实施例提供的数据库优化装置还包括第一确定单元,其中:
所述第一确定单元,用于确定被选择的临时表为目标数据库表;
所述数据压缩单元,还用于将待导入的数据库表中剩余的数据利用确定出的压缩键值进行压缩;
所述数据插入单元,还用于将所述数据压缩单元压缩得到的数据插入到所述目标数据库表中。
优选地,从数据导出过程中生成的数据文件中选择出的若干个数据文件包含的数据量满足预设的数据量范围。
可选地,本发明实施例提供的数据库优化装置还包括:
解析单元,用于根据所述获取单元获取的数据库表结构,解析数据库表中包含的列数据;
第二确定单元,用于如果所述列数据中指定类型数据占比超过第一预设阈值时,确定需要进行数据压缩;如果所述列数据中指定类型数据占比不超过第一预设阈值时,确定不需要进行数据压缩。
可选地,本发明实施例提供的数据库优化装置,还包括:
第二判断单元,用于根据获取的数据库表结构,判断所述数据库表占用的存储空间是否超过第二预设阈值,如果是,则确定需要进行数据压缩;否则,确定不需要进行数据压缩。
在本发明实施方式的第三方面中,提供了一种数据库优化装置,例如,可以包括存储器和处理器,其中,处理器可以用于读取存储器中的程序,执行下列过程:在数据导入操作之前,获取数据库表结构;如果根据获取的数据库表结构,确定需要进行数据压缩时,则对待导入的数据库表进行压缩后再执行数据导入操作。
在本发明实施方式的第四方面中,提供了一种程序产品,其包括程序代码,当所述程序产品运行时,所述程序代码用于执行以下过程:在数据导入操作之前,获取数据库表结构;如果根据获取的数据库表结构,确定需要进行数据压缩时,则对待导入的数据库表进行压缩后再执行数据导入操作。
根据本发明实施方式的数据库优化方法和装置,在进行数据库导入操作之前,如果判断出需要进行数据压缩,则先对待导入的数据库表进行压缩后再执行数据导入操作,由此,完成了数据库表的优化,减少了数据库表占用的存储空间,而且,相比于在线修改数据表结构的优化方式,不会影响数据库上的现有业务,为用户带来了更好的体验。
附图说明
通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,其中:
图1示意性地示出了根据本发明实施方式的应用场景示意图;
图2示意性地示出了根据本发明实施方式的数据库优化方法实施流程示意图;
图3示意性地示出了根据本发明实施方式的利用mydumper生成的多个sql文件示意图;
图4示意性地示出了根据本发明实施方式的确定压缩键值流程示意图;
图5示意性地示出了根据本发明实施方式的数据库优化装置的结构示意图;
图6示意性地示出了根据本发明另一实施例的数据库优化装置的结构示意图;
图7示意性地示出了根据本发明实施方式的用于数据库优化的程序产品示意图;
在附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
下面将参考若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
本领域技术人员知道,本发明的实施方式可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
根据本发明的实施方式,提出了一种数据库优化方法和装置。
在本文中,需要理解的是,所涉及的术语中:
数据库备份:表示为了进行数据迁移或数据容灾等目的把一个已经存在的数据库实例,通过某种方式,将其中的数据,包括元数据和用户数据等信息导出到一个或多个文件中进行永久或临时性保存,这些文件就称为数据库备份。
数据库恢复:表示基于现有的数据库备份通过某种方式将备份中的数据导入到某个指定的数据库实例中。
数据压缩:本发明实施例中,数据压缩指的是将保存在数据库中的数据进行压缩来减少其存储空间占用量,从而做到有限的存储空间中能够保存更多的数据,并节省数据读取时的IO开销。
此外,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。
下面参考本发明的若干代表性实施方式,详细阐释本发明的原理和精神。
发明概述
本发明人发现,现有的数据库备份恢复方法中,在数据恢复时只是简单的将备份数据进行导入,并不提供数据库表结构优化的功能,例如启用压缩、加/减列、修改列、加/减索引、修改索引等。而在数据恢复阶段是非常好的数据库表结构优化机会,因为这个时候表结构在数据库实例中重新被创建,表中的数据为空,相比在线修改表结构,此时修改的成本最小,既不影响线上业务也不需要额外的操作时间。
有鉴于此,本发明实施例提供了一种数据库优化方法,在数据导入操作之前,首先判断是否需要进行数据压缩,具体实施时,可以根据待导入的数据库表占用的存储空间大小进行判断,也可以根据数据库表结构进行判断,如果判断出需要进行数据压缩操作,则首先执行数据压缩操作后再执行数据导入操作,由此实现数据库表结构的优化,减少数据库表占用的存储空间,而且完全不会影响数据库在线业务。
在介绍了本发明的基本原理之后,下面具体介绍本发明的各种非限制性实施方式。
应用场景总览
首先参考图1,如果需要将服务器11中的数据库迁移到服务器12中,首先执行数据导出操作,即将服务器11中数据库的表结构和表数据等导出到备份文件中;然后执行数据导入操作,将数据导出过程得到的备份文件中的表结构和表数据等写入服务器12的数据库中,本发明实施例中,在将备份文件中的表结构和表数据等写入服务器12的数据库中之前,如果判断出需要对数据库表进行压缩,则首先对待导入的数据库表进行压缩后再执行数据导入操作。
示例性方法
下面结合图1的应用场景,参考图2-图4来描述根据本发明示例性实施方式的数据库优化方法。需要注意的是,上述应用场景仅是为了便于理解本发明的精神和原理而示出,本发明的实施方式在此方面不受任何限制。相反,本发明的实施方式可以应用于适用的任何场景。
如图2所示,其为本发明实施例提供的数据库优化方法的实施流程示意图,可以包括以下步骤:
S21、在数据导入操作之前,获取数据库表结构。
具体实施时,在进行数据迁移过程中,首先使用mydumper或sqldump等逻辑本分工具将需迁移的数据库表生成sql(结构化查询语言,Structured Query Language)文件,文件中包括了表结构定义和表数据。为了便于描述,以下以mydumper和myloader为例进行说明。
mydumper将表结构定义存放在独立的文件中,同时mydumper可以为一个数据库表中的数据生成多个sql文件,每一sql文件分别保存部分数据,每个文件的大小可以通过mydumper的参数进行设置,如图3所示。
典型的mydumper备份目录结构如下:
在使用myloader进行数据恢复时,会先将表结构定义文件读出,写入到目标数据库,再将表中的数据从各个sql文件中读取,并行写入到表中。
S22、如果根据获取的数据库表结构,确定需要进行数据压缩时,则对待导入的数据库表进行压缩后再执行数据导入操作。
本发明实施例中,在使用myloader进行数据恢复之前,扫描每个表结构定义文件,读取其中的表结构定义语句,解析表中的列数据,基于表结构中列数据的类型来给用户提供压缩建议。
通常情况下表结构中包含字符型数据列如char,varchar,text或blob等时,具有较高的压缩率,而一些二进制数据,如整形或浮点型数据列,或者一些已经压缩的多媒体文档,如jpeg、jpg、png等格式图片及mp4、avi等格式视频,其压缩率都不高。所以,根据表结构中字符型列所占的比例为用户提供不同的压缩建议。如果表中没有字符串型列或所占的空间不足z%,则不建议用户对该表启用压缩。如果超过了t%,则建议用户进行数据压缩。
基于此,步骤S22中可以按照以下任一方法判断是否需要进行数据压缩操作:
方法一、根据获取的数据库表结构,解析数据库表中包含的列数据;如果所述列数据中指定类型数据占比超过第一预设阈值时,确定需要进行数据压缩;如果所述列数据中指定类型数据占比不超过第一预设阈值时,确定不需要进行数据压缩。
方法二、根据获取的数据库表结构,判断所述数据库表占用的存储空间是否超过第二预设阈值,如果是,则确定需要进行数据压缩;否则,确定不需要进行数据压缩。
优选地,具体实施时,用户还可以预先设置数据压缩条件,仅当这些条件满足时,才会启动数据库表压缩。其中,所述压缩条件包括以下至少一项:最低压缩比例,执行数据压缩时CPU(中央处理单元)最大利用率;数据压缩采样量和压缩键值,其中,所述压缩键值表示数据压缩后每页占用存储空间的期望值。基于此,在步骤S22中如果判断出需要进行数据压缩,会进一步判断是否满足用户预设的压缩条件,例如,用户设置在最低压缩比例为s%,压缩时CPU最大利用率为h%,只有在确定满足用户预设的压缩条件时,即在判断出压缩比例大于s%,且压缩时CPU最大利用率不超过h%时,步骤S22中才会启动数据压缩,否则,即使判断出需要进行数据压缩,但是由于不满足用户预设的压缩条件将不会启动数据压缩。
具体实施时,在对待导入的数据库表进行压缩时,可以根据用户设置的压缩键值对待导入的数据库表进行压缩。
需要说明的是,如果用户未设置压缩键值,则本发明实施例中,在对待导入的数据库表进行压缩之前,还会智能选择最优压缩键值。如图4所示,其为本发明实施例中确定最优压缩键值的实施流程示意图,可以包括以下步骤:
S41、为待导入的数据库表创建n个临时表。
其中,n为不大于预设值的自然数,每一临时表对应不同的临时压缩键值。
具体实施时,如果用户未设置压缩键值,则针对待导入的数据库表t创建n个临时表,较佳地,n取值为2~4,其取值可以根据表中字符型列所占比例来决定,比例越高则n值取值越大,因为比例越高,潜在压缩比高的概率更大,可以选择更小的压缩键值进行尝试。以下以n取值为4进行描述。假设每一临时表的表名分别为t1,t2,t4和t8,对应的键值分别为1KB、2KB、4KB和8KB。
S42、针对每一临时表,根据该临时表对应的临时压缩键值,从数据导出过程中生成的数据文件中选择若干个数据文件启用压缩并插入到该临时表中。
随机选择mydumper为数据库表t生成的多个数据sql文件并行插入到每一临时表中。
较佳地,为了保证确定出的压缩键值最优,从数据导出过程中生成的数据文件中选择出的若干个数据文件包含的数据量满足预设的数据量范围。例如,可以设定从数据导出过程中生成的数据文件中选择出的若干个数据文件包含的数据量不小于16MB,而为了提高压缩效率,还可以设置选择出的若干个数据文件包含的数据量不大于cMB,该值可以由用户根据实际需要动态设置。
具体实施时,为了能够均匀考虑不同时期生成的数据压缩比,在选择sql文件时可以按照文件索引进行均匀选择。
S43、选择占用存储空间最小的临时表对应的临时压缩键值为所述压缩键值。
本步骤中,在数据插入操作结束后,分别获取4个临时表当前占用存储空间的大小,选择占用存储空间最小的临时表对应的临时压缩键值为最优压缩键值。特别地,在从数据导出过程中生成的数据文件中选择若干个数据文件启用压缩并插入到该临时表中的同时,还可以分别记录针对每一临时表执行数据压缩操作和数据插入操作所消耗的时间;这样,如果数据插入操作结束后,每一临时表占用的存储空间相同,则选择消耗时间最短的临时表对应的临时压缩键值为最优压缩键值。
在确定出最优压缩键值后,确定被选择的临时表为目标数据库表;将待导入的数据库表中剩余的数据利用确定出的压缩键值进行压缩后插入到所述目标数据库表中。
假设选择出的最优压缩键值为临时表t8对应的压缩键值,则将临时表t8命名为t,删除t1、t2和t4,并将表t中剩余的数据插入到表t8,以完成最终的数据导入操作。
本发明实施例提供的数据库优化方法中,相比于在线修改表结构的优化方式,在数据恢复阶段之前进行数据压缩,不会影响数据库上的现有业务。并且,根据本发明实施例,如果用户未设置压缩键值,在确定最优压缩键值之前,会采用不同压缩键值对目标表中数据进行抽样压缩尝试,相比对整个表数据进行压缩更快速。本发明实施例中,由于在进行数据压缩之前,进行压缩尝试,使得数据压缩更有针对性,也更加准确。
示例性设备
在介绍了本发明示例性实施方式的方法之后,接下来,参考图5对本发明示例性实施方式的数据库优化装置进行说明。
如图5所示,其为本发明实施例通过的数据库优化装置的结构示意图,可以包括:
获取单元51,用于在数据导入操作之前,获取数据库表结构;
数据压缩单元52,用于如果根据获取的数据库表结构,确定需要进行数据压缩时,则对待导入的数据库表进行压缩;
数据导入单元53,用于对所述数据压缩单元压缩后的数据库表执行数据导入操作。
可选地,本发明实施例提供的数据库优化装置,还可以包括第一判断单元54,其中:
所述第一判断单元54,用于在所述数据压缩单元52确定需要进行数据压缩时,对待导入的数据库表进行压缩之前,判断是否满足用户预设的压缩条件;
所述数据压缩单元52,具体用于如果所述第一判断单元54的判断结果为是,则再对待导入的数据库表进行压缩。
优选地,所述压缩条件包括以下至少一项:最低压缩比例,执行数据压缩时中央处理单元CPU最大利用率;数据压缩采样量和压缩键值,其中,所述压缩键值表示数据压缩后每页占用存储空间的期望值。
优选地,所述数据压缩单元52,具体用于根据所述压缩键值对待导入的数据库表进行压缩。
可选地,本发明实施例提供的数据库优化装置,还包括:
临时表创建单元55,用于如果所述用户未设置压缩键值,在所述数据压缩单元根据所述压缩键值对待导入的数据库表进行压缩之前,为待导入的数据库表创建n个临时表,其中,n为不大于预设值的自然数,每一临时表对应不同的临时压缩键值;
数据插入单元56,用于针对每一临时表,根据该临时表对应的临时压缩键值,从数据导出过程中生成的数据文件中选择若干个数据文件启用压缩并插入到该临时表中;
压缩键值确定单元57,用于选择占用存储空间最小的临时表对应的临时压缩键值为所述压缩键值。
可选地,本发明实施例提供的数据库优化装置,还包括记录单元58,其中:
所述记录单元58,用于在所述数据插入单元56从数据导出过程中生成的数据文件中选择若干个数据文件启用压缩并插入到该临时表中的同时,分别记录针对每一临时表执行数据压缩操作和数据插入操作所消耗的时间;
所述压缩键值确定单元57,用于选择消耗时间最短的临时表对应的临时压缩键值为所述压缩键值。
可选地,本发明实施例提供的数据库优化装置,还包括第一确定单元59,其中:
所述第一确定单元59,用于确定被选择的临时表为目标数据库表;
所述数据压缩单元52,还用于将待导入的数据库表中剩余的数据利用确定出的压缩键值进行压缩;
所述数据插入单元56,还用于将所述数据压缩单元压缩得到的数据插入到所述目标数据库表中。
优选地,从数据导出过程中生成的数据文件中选择出的若干个数据文件包含的数据量满足预设的数据量范围。
可选地,本发明实施例提供的数据库优化装置,还包括:
解析单元510,用于根据所述获取单元获取的数据库表结构,解析数据库表中包含的列数据;
第二确定单元511,用于如果所述列数据中指定类型数据占比超过第一预设阈值时,确定需要进行数据压缩;如果所述列数据中指定类型数据占比不超过第一预设阈值时,确定不需要进行数据压缩。
可选地,本发明实施例提供的数据库优化装置,还包括:
第二判断单元512,用于根据获取的数据库表结构,判断所述数据库表占用的存储空间是否超过第二预设阈值,如果是,则确定需要进行数据压缩;否则,确定不需要进行数据压缩。
在介绍了本发明示例性实施方式的方法和装置之后,接下来,介绍根据本发明的另一示例性实施方式的数据库优化装置。
所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“单元”或“系统”。
在一些可能的实施方式中,根据本发明的数据库优化装置可以包括至少一个处理单元、以及至少一个存储单元。其中,所述存储单元存储有程序代码,当所述程序代码被所述处理单元执行时,使得所述处理单元执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的数据库优化方法中的各种步骤。例如,所述处理单元可以执行如图2中所示的步骤S21,在数据导入操作之前,获取数据库表结构,步骤S22,如果根据获取的数据库表结构,确定需要进行数据压缩时,则对待导入的数据库表进行压缩后再执行数据导入操作。
下面参照图6来描述根据本发明的这种实施方式的用于数据库优化的装置60。图6显示的用于数据库优化的装置仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图6所示,用于数据库优化的装置60可以以通用计算设备的形式表现,例如其可以为服务器设备。用于数据库优化的装置60的组件可以包括但不限于:上述至少一个处理单元61、上述至少一个存储单元62、连接不同系统组件(包括存储单元62和处理单元61)的总线63。
总线63表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器、外围总线、处理器或者使用多种总线结构中的任意总线结构的局域总线。
存储单元62可以包括易失性存储器形式的可读介质,例如随机存取存储器(RAM)621和/或高速缓存存储器622,还可以进一步包括只读存储器(ROM)623。
存储单元62还可以包括具有一组(至少一个)程序模块624的程序/实用工具625,这样的程序模块624包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
用于数据库优化的装置60也可以与一个或多个外部设备64(例如键盘、指向设备等)通信,还可与一个或者多个使得用户能与该用于数据库优化的装置60交互的设备通信,和/或与使得该用于数据库优化的装置60能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口65进行。并且,用于数据库优化的装置60还可以通过网络适配器66与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器66通过总线63与用于数据库优化的装置60的其它模块通信。应当明白,尽管图中未示出,可以结合用于数据库优化的装置60使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
示例性程序产品
在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在服务器设备上运行时,所述程序代码用于使所述服务器设备执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的用于数据库优化的方法中的步骤,例如,所述服务器设备可以执行如图2中所示的步骤S21、在数据导入操作之前,获取数据库表结构,和步骤S22、如果根据获取的数据库表结构,确定需要进行数据压缩时,则对待导入的数据库表进行压缩后再执行数据导入操作。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
如图7所示,描述了根据本发明的实施方式的用于数据库优化的程序产品70,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在服务器设备上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
应当注意,尽管在上文详细描述中提及了装置的若干单元或子单元,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多单元的特征和功能可以在一个单元中具体化。反之,上文描述的一个单元的特征和功能可以进一步划分为由多个单元来具体化。
此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。

Claims (10)

1.一种数据库优化方法,包括:
在数据导入操作之前,获取数据库表结构;
如果根据获取的数据库表结构,确定需要进行数据压缩时,则对待导入的数据库表进行压缩后再执行数据导入操作。
2.根据权利要求1所述的方法,在确定需要进行数据压缩时,对待导入的数据库表进行压缩之前,还包括:
判断是否满足用户预设的压缩条件;以及
对待导入的数据库表进行压缩,具体包括:
如果判断结果为是,则再对待导入的数据库表进行压缩。
3.根据权要求2所述的方法,其特征在于,所述压缩条件包括以下至少一项:最低压缩比例,执行数据压缩时中央处理单元CPU最大利用率;数据压缩采样量和压缩键值,其中,所述压缩键值表示数据压缩后每页占用存储空间的期望值。
4.根据权利要求3所述的方法,对待导入的数据库表进行压缩,具体包括:
根据所述压缩键值对待导入的数据库表进行压缩。
5.根据权利要求4所述的方法,如果所述用户未设置压缩键值;则
根据所述压缩键值对待导入的数据库表进行压缩之前,还包括:
为待导入的数据库表创建n个临时表,其中,n为不大于预设值的自然数,每一临时表对应不同的临时压缩键值;
针对每一临时表,根据该临时表对应的临时压缩键值,从数据导出过程中生成的数据文件中选择若干个数据文件启用压缩并插入到该临时表中;
选择占用存储空间最小的临时表对应的临时压缩键值为所述压缩键值。
6.根据权利要求5所述的方法,在从数据导出过程中生成的数据文件中选择若干个数据文件启用压缩并插入到该临时表中的同时,还包括:
分别记录针对每一临时表执行数据压缩操作和数据插入操作所消耗的时间;以及
如果数据插入操作结束后,每一临时表占用的存储空间相同,则所述方法,还包括:
选择消耗时间最短的临时表对应的临时压缩键值为所述压缩键值。
7.根据权利要求5或6所述的方法,还包括:
确定被选择的临时表为目标数据库表;
将待导入的数据库表中剩余的数据利用确定出的压缩键值进行压缩后插入到所述目标数据库表中。
8.根据权利要求5或6所述的方法,从数据导出过程中生成的数据文件中选择出的若干个数据文件包含的数据量满足预设的数据量范围。
9.根据权利要求1所述的方法,根据获取的数据库表结构,按照以下方法判断是否需要进行数据压缩:
根据获取的数据库表结构,解析数据库表中包含的列数据;
如果所述列数据中指定类型数据占比超过第一预设阈值时,确定需要进行数据压缩;
如果所述列数据中指定类型数据占比不超过第一预设阈值时,确定不需要进行数据压缩。
10.一种数据库优化装置,包括:
获取单元,用于在数据导入操作之前,获取数据库表结构;
数据压缩单元,用于如果根据获取的数据库表结构,确定需要进行数据压缩时,则对待导入的数据库表进行压缩;
数据导入单元,用于对所述数据压缩单元压缩后的数据库表执行数据导入操作。
CN201611250044.5A 2016-12-29 2016-12-29 一种数据库优化方法和装置 Active CN106528896B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611250044.5A CN106528896B (zh) 2016-12-29 2016-12-29 一种数据库优化方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611250044.5A CN106528896B (zh) 2016-12-29 2016-12-29 一种数据库优化方法和装置

Publications (2)

Publication Number Publication Date
CN106528896A true CN106528896A (zh) 2017-03-22
CN106528896B CN106528896B (zh) 2019-05-14

Family

ID=58338592

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611250044.5A Active CN106528896B (zh) 2016-12-29 2016-12-29 一种数据库优化方法和装置

Country Status (1)

Country Link
CN (1) CN106528896B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108776605A (zh) * 2018-06-04 2018-11-09 中国联合网络通信集团有限公司 应用程序的优化方法、装置、设备及存储介质
CN109271463A (zh) * 2018-11-30 2019-01-25 四川巧夺天工信息安全智能设备有限公司 一种恢复MySQL数据库的innodb压缩数据的方法
CN110888760A (zh) * 2019-11-26 2020-03-17 中国工商银行股份有限公司 数据恢复方法和装置、以及数据处理方法和装置
CN111061734A (zh) * 2019-12-12 2020-04-24 深圳市随手金服信息科技有限公司 一种数据存储方法、装置、设备及存储介质
CN111694816A (zh) * 2020-06-15 2020-09-22 中国工商银行股份有限公司 用于优化数据库表的处理方法和装置
CN111858735A (zh) * 2020-07-22 2020-10-30 平安国际智慧城市科技股份有限公司 数据导入方法、装置、电子设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102737132A (zh) * 2012-06-25 2012-10-17 天津神舟通用数据技术有限公司 基于数据库行列混合存储的多规则复合压缩方法
CN102929783A (zh) * 2012-10-25 2013-02-13 华为技术有限公司 一种数据存储的方法、装置和系统
US9311002B1 (en) * 2010-06-29 2016-04-12 Emc Corporation Systems, methods, and computer readable media for compressing data at a virtually provisioned storage entity
CN105808539A (zh) * 2014-12-29 2016-07-27 北京航天测控技术有限公司 一种数据导出导入方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9311002B1 (en) * 2010-06-29 2016-04-12 Emc Corporation Systems, methods, and computer readable media for compressing data at a virtually provisioned storage entity
CN102737132A (zh) * 2012-06-25 2012-10-17 天津神舟通用数据技术有限公司 基于数据库行列混合存储的多规则复合压缩方法
CN102929783A (zh) * 2012-10-25 2013-02-13 华为技术有限公司 一种数据存储的方法、装置和系统
CN105808539A (zh) * 2014-12-29 2016-07-27 北京航天测控技术有限公司 一种数据导出导入方法及装置

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108776605A (zh) * 2018-06-04 2018-11-09 中国联合网络通信集团有限公司 应用程序的优化方法、装置、设备及存储介质
CN109271463A (zh) * 2018-11-30 2019-01-25 四川巧夺天工信息安全智能设备有限公司 一种恢复MySQL数据库的innodb压缩数据的方法
CN109271463B (zh) * 2018-11-30 2022-06-07 四川巧夺天工信息安全智能设备有限公司 一种恢复MySQL数据库的innodb压缩数据的方法
CN110888760A (zh) * 2019-11-26 2020-03-17 中国工商银行股份有限公司 数据恢复方法和装置、以及数据处理方法和装置
CN111061734A (zh) * 2019-12-12 2020-04-24 深圳市随手金服信息科技有限公司 一种数据存储方法、装置、设备及存储介质
CN111694816A (zh) * 2020-06-15 2020-09-22 中国工商银行股份有限公司 用于优化数据库表的处理方法和装置
CN111694816B (zh) * 2020-06-15 2024-04-23 中国工商银行股份有限公司 用于优化数据库表的处理方法和装置
CN111858735A (zh) * 2020-07-22 2020-10-30 平安国际智慧城市科技股份有限公司 数据导入方法、装置、电子设备及存储介质
CN111858735B (zh) * 2020-07-22 2024-04-12 平安国际智慧城市科技股份有限公司 数据导入方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
CN106528896B (zh) 2019-05-14

Similar Documents

Publication Publication Date Title
CN106528896A (zh) 一种数据库优化方法和装置
CN105094707B (zh) 一种数据存储、读取方法及装置
CN103778148B (zh) Hadoop分布式文件系统数据文件的生命周期管理方法和设备
CN104615699B (zh) 一种家族网谱系统及其数据采集方法
CN108536761A (zh) 报表数据查询方法及服务器
CN106897322A (zh) 一种数据库和文件系统的访问方法和装置
DE102010043265A1 (de) Systeme und Verfahren zum Verarbeiten und Verwalten von objektbezogenen Daten zur Verwendung durch mehrere Anwendungen
CN103064933A (zh) 数据查询方法及系统
CN106547766A (zh) 一种数据访问方法和装置
CN104572895A (zh) MPP数据库与Hadoop集群数据互通方法、工具及实现方法
CN113722438B (zh) 基于句向量模型的句向量生成方法、装置及计算机设备
CN104021123A (zh) 用于数据迁移的方法和系统
US10924551B2 (en) IRC-Infoid data standardization for use in a plurality of mobile applications
CN106844607A (zh) 一种适用于非整型主键与空闲块合并的SQLite数据恢复方法
CN106815366A (zh) 一种批量生成数据的方法及系统
CN113672204A (zh) 一种接口文档生成方法、系统、电子设备及存储介质
CN106570153A (zh) 一种海量url的数据提取方法及系统
CN103365923A (zh) 用于评估数据库的分区方案的方法和装置
CN107729561A (zh) 基于数据库表结构反向生成对数据库表操作的方法
CN104346378B (zh) 一种实现复杂数据处理的方法、装置及系统
CN108053034A (zh) 模型参数处理方法、装置、电子设备及存储介质
CN112598039A (zh) 获取nlp分类领域阳性样本方法及相关设备
CN107436920A (zh) Node.js权限控制方法、存储介质、电子设备及系统
CN106570152A (zh) 一种手机号码的海量提取方法及系统
CN113741864B (zh) 基于自然语言处理的语义化服务接口自动设计方法与系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant