平台相关模型编译器优化装置及方法

文档序号:6507544阅读:106来源:国知局
平台相关模型编译器优化装置及方法【专利摘要】本发明涉及平台相关模型编译器优化装置及方法,在优化平台相关模型编译器方面,通过分析以平台相关模型编制的程序模式来生成能够通过批量操作进行转换的指令代码,对所生成的批量操作代码将绑定参数做成数组,并以执行批量游标的方式来能够进行批量数据操纵语言处理,从而能够提高程序的性能。【专利说明】平台相关模型编译器优化装置及方法【
技术领域
】[0001]本发明涉及一种平台相关模型(PSM,Platform-specificmodels)编译器(compiler),涉及尤其在优化平台相关模型编译器方面,通过分析以平台相关模型编制的程序模式来生成能够通过批量操作(bulkoperat1n)进行转换的指令代码,对所生成的批量操作代码将绑定参数(bindparameter)做成数组(array),并以执行批量游标(bulkcursor)的方式来以使能够进行批量数据操纵语言(DataManipulat1nLanguage)处理,从而能够提高程序的性能的可进行批量数据操纵语言(DML)处理的平台相关模型编译器优化装置及方法。[0002]本发明从作为知识经济部的产业融合源泉技术开发事业的一环而执行的研究中导出(10040937,用于日本大型计算机(日立、富士通)的集成解决方案的开发)。【
背景技术
】[0003]通常,关系型数据库系统(RDBMS!Relat1nalDatabaseManagementSystem)提供对批量数据的批量操作(bulkoperat1n)。批量操作通过对数据操纵语言(DataManipulat1nLanguage)分别形成数组形态的批量参数(bulkparameter)来能够省略重复解释数据操纵语言的过程。并且,仅变更数据来进行处理,从而能够提高处理速度。[0004]但是,以往批量操作具有程序的编制者需明示性地制作批量参数的难点。[0005]图1图示了在以往平台相关模型编译器中的代码转换动作的概念。[0006]参照图1,在施加平台相关模型源代码(sourcecode)的情况下,在代码生成部(codegenerator)100生成平台相关模型虚拟代码(virtualcode),并且所生成的平台相关模型虚拟代码在平台相关模型虚拟机(virtualmachine)102被转换为绑定参数(bindparameter)103,来生成为结构化查询语言(SQL)文档。[0007]像这样,所生成的绑定参数103通过查询解释部(querycompiler)104来转换为数据操纵语言,并向查询执行部(queryexecuter)106施加后将依次被处理。[0008]但是如上所述,由于在以往的平台相关模型编译器中一个绑定参数被转换为一个数据操纵语言来处理,因而具有增加结构化查询语言解析的系统开销(parsingoverhead)的问题,并且随着以单数据操纵语言来进行处理,因而具有很难期待提高平台相关模型编译器的性能的问题。【
发明内容】[0009]因此,本发明的目的在于,提供在优化平台相关模型编译器方面通过分析以平台相关模型编制的程序模式来生成能够通过批量操作进行转换的指令代码,对所生成的批量操作代码将绑定参数做成数组,并以执行批量游标的方式来以使能够进行批量数据操纵语言处理,从而能够提高程序的性能的可进行批量数据操纵语言处理的平台相关模型编译器优化装置及方法。[0010]上述的本发明作为平台相关模型编译器优化装置,其特征在于,包括:代码生成部,分析平台相关模型程序的模式来提取能够从上述平台相关模型程序转换为批量操作的代码,并对于能够转换的上述代码生成批量操作代码,虚拟机,对上述批量操作代码进行解释来生成基于上述批量操作的数据操纵语言,查询执行部,对在上述虚拟机生成的上述数据操纵语言进行处理;上述虚拟机进行如下控制:在生成的上述数据操纵语言的数量在既定的值以下的情况下,将数据操纵语言存储于存储器,在所生成的上述数据操纵语言的数量达到上述既定的值的情况下,向上述查询执行部传送存储于上述存储器的数据操纵语言,上述查询执行部对所传送的上述数据操纵语言进行一次性处理。[0011]并且,本发明的特征在于,在上述批量操作代码中除数据操纵语言语法外还混有其他语法的情况下,上述虚拟机向上述其他语法的绑定参数追加工具指令语言(TCL)信息,以使上述查询执行部能够区分除上述数据操纵语言语法外还混有其他语法。[0012]并且,本发明的特征在于,上述查询执行部利用上述工具指令语言信息来检查上述数据操纵语言语法和其他语法是否相混合,在混有上述其他语法的情况下,对有关语法执行符合有关语法的处理。[0013]并且,本发明的平台相关模型编译器优化装置中进行批量操作的方法,包括:在优化部分析平台相关模型程序的模式来提取能够从上述平台相关模型程序转换为批量操作的代码的步骤;虚拟机对于能够转换的上述代码生成批量操作代码的步骤;在上述虚拟机对上述批量操作代码进行解释来生成基于上述批量操作的数据操纵语言的步骤;在所生成的上述数据操纵语言的数量达到上述既定的值的情况下,上述虚拟机向查询执行部输出上述数据操纵语言的步骤;在上述查询执行部对从上述虚拟机传送的上述数据操纵语言进行一次性处理的步骤。[0014]并且,本发明的特征在于,向查询执行部输出上述数据操纵语言的步骤包括:对所生成的上述数据操纵语言的数量进行计数的步骤;在上述数据操纵语言的数量为既定的值以下的情况下,将上述数据操纵语言存储于存储器的步骤;若上述数据操纵语言的数量达到上述既定的值,则向查询执行部传送存储于上述存储器的数据操纵语言的步骤。[0015]并且,本发明的特征在于,对上述数据操纵语言进行一次性处理的步骤包括:检查步骤,检查从上述虚拟机传送的数据操纵语言语法中除上述数据操纵语言语法外是否混有其他语法的步骤;上述检查的结果表明,在只存在上述数据操纵语言语法的情况下,对上述数据操纵语言进行一次性处理的步骤;在除上述数据操纵语言语法外还混有其他语法的情况下,对上述其他语法执行符合有关语法的处理的步骤。[0016]并且,本发明的特征在于,上述检查步骤中,通过确认在上述数据操纵语言语法中是否存在工具指令语言信息,来检查是否混有上述其他语法。[0017]本发明具有在优化平台相关模型编译器方面通过分析以平台相关模型编制的程序模式来生成能够通过批量操作进行转换的指令代码,对所生成的批量操作代码将绑定参数做成数组,并以执行批量游标的方式来以使能够进行批量数据操纵语言处理,从而能够提高程序的性能的优点。【专利附图】【附图说明】[0018]图1为在以往平台相关模型编译器中的代码转换动作概念图。[0019]图2为本发明的实施例的平台相关模型编译器优化装置的简要框图。[0020]图3为在本发明的实施例的平台相关模型编译器优化装置中的批量操作处理流程图。[0021]图4为用于根据本发明的实施例来保障程序语义(semantic)的应对例外产生的动作概念图。[0022]图5为本发明的实施例的平台相关模型编译器优化装置的性能优化图表示例图。[0023]图6为本发明的实施例的关于最大性能提闻的图表不例图。[0024]图7为本发明的实施例的基于适用多重数据操纵语言的性能提高图表示例图。【具体实施方式】[0025]以下,参照附图对本发明的动作原理进行详细说明。下述中就说明本发明而言,在判断为对公知功能或结构的具体说明不必要地模糊本发明的主旨的情况下,将省略其详细说明。而且,后述的用语为考虑在本发明中的功能而定义的用语,可根据使用人员、应用人员的意图或惯例等而不同。因此,应以本说明书的整体内容为基础来进行定义。[0026]图2表示本发明的实施例的平台相关模型编译器优化装置200的简要框图结构,可包括优化部201、代码生成部202、代码存储部204、虚拟机206、绑定参数存储部208、查询解释部210、查询执行部212等。[0027]以下,参照图2,对在各结构要素中的动作进行详细说明。[0028]代码生成部202分析平台相关模型程序(program)的模式(pattern)来提取能够从平台相关模型程序转换为批量操作的代码。[0029]代码生成部202从平台相关模型程序的中间表示(intermediaterepresentat1n)步骤中提取用于数据存取(dataaccess)的优化模式来判断为能够转换为批量操作的模式。而且,代码生成部202对所提取的代码生成批量操作代码(BC0DE)。代码存储部204存储批量操作代码。[0030]虚拟机206对批量操作代码进行解释来生成数据操纵语言。并且,在数据操纵语言的数量为既定的值以下的情况下,虚拟机206不向查询执行部212传递绑定参数而存储于绑定参数存储部208,若数据操纵语言的数量达到既定的值,则向查询解释部210和查询执行部212传送存储于绑定参数存储部208的数据操纵语言。[0031]查询执行部212对从虚拟机206传送的批量数据操纵语言进行一次性处理。[0032]图3表示本发明的实施例的平台相关模型编译器优化装置的批量操作处理流程的图。以下,参照图2及图3,对本发明的实施例进行详细说明。[0033]首先,向平台相关模型编译器施加平台相关模型源代码的情况下,优化部(optimizer)201对平台相关模型源代码进行平台相关模型程序的中间表示步骤的转换,并提取优化模式(步骤S30)。[0034]这样,代码生成部202利用从优化部201提取的用于数据存取的优化模式来生成能够转换为批量操作的指令代码(步骤S32)。[0035]S卩,在代码生成部202分析平台相关模型程序的模式来提取能够从平台相关模型程序转换为批量操作的代码,并对于能够转换的代码生成批量操作代码。[0036]如上所述生成的批量操作代码施加于平台相关模型虚拟机206。这样,在平台相关模型虚拟机206执行缓慢的批量操作(lazybulkoperat1n)指令(instruct1n)的同时,生成能够进行批量操作的上下文(context)(步骤S34)。[0037]此时,平台相关模型虚拟机206将批量操作代码做成绑定参数数组(arrayofbindparameter)300,并将以执行批量游标的方式来执行动作。[0038]并且,平台相关模型虚拟机206对批量操作代码进行解释来生成基于批量操作的数据操纵语言,在η次的数据操纵语言达到既定的特定临界值之前,不向查询执行部传递数据操纵语言而存储于存储器,在达到临界值的情况下,向查询执行部212传递数据操纵语言(步骤S36)。[0039]S卩,在本发明中,若在平台相关模型虚拟机中生成用于缓慢的批量操作的指令,则直到η次数据操纵语言达到特定临界值,不向查询执行部212传递而蓄积于存储器,而在达到临界值的情况下,向查询执行部212传递,并以批量操作来执行。此时,在数据操纵语言文中留有数组形态的绑定参数数组300。[0040]因此,即使没有程序的变更,也能够进行与在以往的批量操作中对一个数据操纵语言将多个绑定参数处理为多个数组形态的方法相同的处理,因而能够提高程序的性能。[0041]这样,查询执行部212接收在平台相关模型虚拟机206达到特定临界值而传递的η次的数据操纵语言来对其进行一次性处理,由此,即使没有变更程序也能够在平台相关模型编译器优化装置进行批量数据操纵语言处理,从而提高程序的性能。[0042]此时,查询执行部212可包括数据操纵语言迭代器(iterator)310和数据操纵语言执行器312,数据操纵语言迭代器310设置下一个绑定参数,以进行数据操纵语言处理,数据操纵语言执行器312对从平台相关模型虚拟机206传递的η次的数据操纵语言进行一次性处理。[0043]S卩,与以往不同,在本发明的平台相关模型编译器优化装置中,对I件数据操纵语言文设数组形态的绑定参数来去除对数据操纵语言进行解释的部分的重复,仅变更数据来进行处理,从而能够提高性能。并且,在数据操纵语言频繁产生的应用(applicat1n)中能够对程序的编制者制作程序提供帮助。[0044]图4表示在本发明的实施例的平台相关模型编译器优化装置中用于保障程序语义的应对例外产生的动作概念。[0045]如图4所示,从平台相关模型虚拟机206向查询执行部212传递的程序代码中有可能混有数据操纵语言文和平台相关模型文。在平台相关模型虚拟机206中对这种平台相关模型文在绑定参数追加工具指令语言,以使能够在查询执行部212根据语法的种类来进行应对。[0046]这样,在查询执行部212内的数据操纵语言迭代器310中则利用工具指令语言信息来从绑定参数数组中确认绑定参数的类型,并且在施加平台相关模型文而不是数据操纵语言文的情况下,查询执行部212执行符合有关平台相关模型语法的处理。[0047]因此,与在进行批量操作时产生的错误处理非常复杂的以往不同,在本发明的实施例中,向绑定参数追加工具指令语言来减少例外时产生的丧失程序的语法意义,原本地维持优化之前的语法意义而不是批量操作,从而能够使例外产生处理部分容易,并能够保障提交当前事务(Commit)、回滚当前事务(Rollback)等的语义。[0048]并且,平台相关模型编译器的优化部201能够与其他编译器优化相连接或进行反复执行来达到优化。在当前优化之前可通过循环分裂(loopfiss1n)和功能(funct1n)/程序内联(procedureinlining)来提取更多的优化模式。不仅如此,在循环内不仅包含数据操纵语言,还包含平台相关模型语法的情况下,也能够进行上述优化,因而能够得到更多的优化机会。[0049]并且,如本发明所述转换的批量操作包括多数据操纵语言功能,因而能够减少通过多数据操纵语言来寻找数据块锁定(datablocklocking)、重做(Redo)/撤销(Undo)日志费用、可用空间所需的算法费用,从而能够以性能提高更高的代码来生成。[0050]图5表示本发明的实施例的平台相关模型编译器优化装置的性能优化图表。[0051]Bp,图5为对在循环的每个反复(iterat1n)过程中生成事物(transact1n)的循环进行自动性能优化的结果,在增加循环的次数的同时执行了性能测定。其结果,如图5所示,能够确认,适用本发明的方法(optimizedvers1n)500与现有方法(originalvers1n)502相比,带来了最大4倍以上的性能提高。这种性能提高的原因为减少了结构化查询语言解析的系统开销。[0052]图6表示本发明的实施例的关于最大性能提高的图表,是在一个事物中执行循环的结果。[0053]如图6所示,可知,在适用本发明的方法500与现有方法502相比性能急剧上升。像这样,性能急剧上升的原因为不仅是结构化查询语言解析的系统开销而且单(single)-数据操纵语言也变更为多数据操纵语言。并且,预计在表格(table)中带有索引(index)的情况下,将能够带来更高的性能提高。[0054]图7表示基于适用本发明的多数据操纵语言的性能提高图表,是对步骤性地适用给予多数据操纵语言的机会将带来怎样的性能提高的性能测定结果进行比较的图表。[0055]如图7所示,可知,仅以批量操作与现有方法(originalcase)700相比,适用本发明的方法702能够带来约4倍以上的性能提高,在适用批量操作-多数据操纵语言时可知,适用本发明的方法704能够带来最大35倍以上的性能提高。[0056]如上所述,本发明在优化平台相关模型编译器方面通过分析以平台相关模型编制的程序模式来生成能够通过批量操作进行转换的指令代码,对所生成的批量操作代码将绑定参数做成数组,并以执行批量游标的方式来以使能够进行批量数据操纵语言处理,从而能够提闻程序的性能。[0057]另一方面,虽然在上述的本发明的说明中就具体实施例进行了说明,但是多种变形可不脱离本发明的范围而实施。因此,本发明的范围应由权利要求书而定,并不由所说明的实施例而定。【权利要求】1.一种平台相关模型编译器优化装置,其特征在于,包括:代码生成部,分析平台相关模型程序的模式来提取能够从上述平台相关模型程序转换为批量操作的代码,并对于能够转换的上述代码生成批量操作代码,虚拟机,对上述批量操作代码进行解释来生成基于上述批量操作的数据操纵语言,查询执行部,对在上述虚拟机生成的上述数据操纵语言进行处理;上述虚拟进行如下控制:在生成的上述数据操纵语言的数量在既定的值以下的情况下,将数据操纵语言存储于存储器,在所生成的上述数据操纵语言的数量达到上述既定的值的情况下,向上述查询执行部传送存储于上述存储器的数据操纵语言,上述查询执行部对所传送的上述数据操纵语言进行一次性处理。2.根据权利要求1所述的平台相关模型编译器优化装置,其特征在于,在上述批量操作代码中除数据操纵语言语法外还混有其他语法的情况下,上述虚拟机向上述其他语法的绑定参数追加工具指令语言信息,以使上述查询执行部能够区分除上述数据操纵语言语法外还混有其他语法。3.根据权利要求2所述的平台相关模型编译器优化装置,其特征在于,上述查询执行部利用上述工具指令语言信息来检查上述数据操纵语言语法和其他语法是否相混合,在混有上述其他语法的情况下,对有关语法执行符合有关语法的处理。4.一种平台相关模型编译器优化装置的批量操作方法,其特征在于,包括:在优化部分析平台相关模型程序的模式来提取能够从上述平台相关模型程序转换为批量操作的代码的步骤;虚拟机对于能够转换的上述代码生成批量操作代码的步骤;在上述虚拟机对上述批量操作代码进行解释来生成基于上述批量操作的数据操纵语言的步骤;在所生成的上述数据操纵语言的数量达到既定的值的情况下,上述虚拟机向查询执行部输出上述数据操纵语言的步骤;在上述查询执行部对从上述虚拟机传送的上述数据操纵语言进行一次性处理的步骤。5.根据权利要求4所述的平台相关模型编译器优化装置的批量操作方法,其特征在于,向查询执行部输出上述数据操纵语言的步骤包括:对所生成的上述数据操纵语言的数量进行计数的步骤;在上述数据操纵语言的数量为既定的值以下的情况下,将上述数据操纵语言存储于存储器的步骤;若上述数据操纵语言的数量达到上述既定的值,则向查询执行部传送存储于上述存储器的数据操纵语言的步骤。6.根据权利要求4所述的平台相关模型编译器优化装置的批量操作方法,其特征在于,对上述数据操纵语言进行一次性处理的步骤包括:检查步骤,检查从上述虚拟机传送的数据操纵语言语法中除上述数据操纵语言语法外是否混有其他语法;上述检查的结果表明,在只存在上述数据操纵语言语法的情况下,对上述数据操纵语言进行一次性处理的步骤;在除上述数据操纵语言语法外还混有其他语法的情况下,对上述其他语法执行符合有关语法的处理的步骤。7.根据权利要求6所述的平台相关模型编译器优化装置的批量操作方法,其特征在于,上述检查步骤中,通过确认在上述数据操纵语言语法中是否存在工具指令语言信息,来检查是否混有上述其他语法。【文档编号】G06F9/45GK104077170SQ201310349379【公开日】2014年10月1日申请日期:2013年8月12日优先权日:2013年3月27日【发明者】全甫晟,朴相永,李周玹,崔永宰,李庚泰申请人:株式会社特博睿
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1