一种基于云平台的关系数据库自动优化方法

文档序号:6634437阅读:156来源:国知局
一种基于云平台的关系数据库自动优化方法
【专利摘要】本发明公开了一种基于云平台的关系数据库自动优化方法,属于云平台数据库优化【技术领域】,该方法能定时收集数据库运行状态信息,以及数据库所在虚拟机的硬件指标信息,适时的主动优化建议、被动优化建议或自动被动优化,提高数据库在云平台中运行性能稳定性。根据数据库编码协定编辑workprocess进程所需的workprocess进程插件代码,在数据库源代码目录的contrib目录下新建一个项目目录,将所述workprocess进程插件代码拷贝安装到项目目录内;在数据库中创建workprocess进程插件;配置数据库配置文件postgresql.conf,加载workprocess进程对应的动态链接库文件;数据库启动时,调用_PG_init钩子程序和调用workprocess进程入口函数来启动workprocess进程;能输出主动优化建议、输出被动优化建议和输出自动被动优化。
【专利说明】一种基于云平台的关系数据库自动优化方法

【技术领域】
[0001]本发明涉及云平台数据库优化【技术领域】,尤其涉及一种基于云平台的关系数据库自动优化方法。

【背景技术】
[0002]在云平台中,为了达到节能减排的目的,需要在不影响业务的情况下,采取合理搭配虚拟机的方式来减少云环境中开机的物理服务器,以减少耗电。
[0003]例如错峰的业务进行搭配,公用的硬件资源不超过物理服务器硬件提供的资源就不会影响业务,同时能提高物理服务器的利用率,减少云环境对物理服务器的需求。参见图1所示,在时间轴Pl上,CPU错峰的A业务S3与CPU错峰的B业务M3进行错峰搭配,A业务高峰SI与B业务低谷M2正好错峰,A业务低谷S2与B业务高峰Ml也正好错峰,这样在提高物理服务器硬件利用的同时也大大提高了业务处理能力。
[0004]例如资源不发生争抢的业务进行搭配,如计算型业务和1型业务搭配,也不会影响业务的正常使用,达到减少物理服务器需求的目的。参见图2所示,在时间轴P2上,资源不发生争抢的A业务H3与资源不发生争抢的B业务N3进行错峰搭配,A业务高峰Hl与B业务低谷N2正好错峰,A业务低谷H2与B业务高峰NI也正好错峰,这样在提高物理服务器硬件利用的同时也大大提高了业务处理能力。
[0005]云环境的显著特点是资源共享,意味着运行在相同物理服务器上的虚拟机之间存在资源争抢。虚拟机资源可动态调配,如增加磁盘,调整虚拟CPU,调整内存。虚拟机资源调整后就意味着1PS能力变化、CPU计算能力变化和内存变化。10PS(Input/OutputOperat1nsPerSecond)是指每秒进行读写(1/0)操作的次数,多用于数据库等场合,衡量随机访问的性能。
[0006]数据库在云环境中运行往往性能会不稳定,大部分的原因来自于云环境自身的特点,例如资源的争抢导致性能指标的变化,某些指标发生变化后,数据库需要重新优化,否则运行效率会受到影响。例如1PS指标变化后,如果成本因子不变,导致执行计划未变,进而导致运行效率下降。传统的方法是当发现数据库性能问题时,人为干预调整,时效性差,同时依赖管理员的技术水平。因此,为了数据库能在云环境下获得稳定的运行效率,需要适时的根据运行环境的变化进行自动调整。
[0007]云环境的显著特点:一是资源共享,二是虚拟机资源可动态调配。但资源共享就意味着运行在相同物理服务器上的虚拟机之间存在资源争抢,虚拟机资源可动态调整后就意味着1PS能力变化、CPU计算能力变化和内存变化。数据库在云环境中运行往往性能会不稳定。为了让数据库在云环境中获得稳定的性能,传统的解决方法,需要在发现问题后人为干预,如重新调整数据库参数,重新分配对象存储等。这种传统的方法的缺点:一是时效性比较差,因为要等问题发生后人为干预,属于被动调整;二是依赖管理员的技术能力,人为调整比较容易出现判断失误的问题;三是如果为了达到稳定的目的,往往需要预留较大体量的硬件资源,造成资源的浪费。


【发明内容】

[0008]本发明是为了解决数据库在云平台中运行的性能稳定性由人为进行干预调整,时效性差,同时依赖管理员技术水平高的不足,提供一种定时收集数据库运行状态信息,以及数据库所在虚拟机的硬件指标信息,适时的主动优化建议、被动优化建议或自动被动优化,提高数据库在云平台中运行性能稳定性的一种基于云平台的关系数据库自动优化方法。
[0009]为了实现上述目的,本发明采用以下技术方案:
[0010]一种基于云平台的关系数据库自动优化方法,其步骤如下:
[0011](1-1)根据数据库编码协定编辑workprocess进程所需的workprocess进程插件代码,所述workprocess进程插件代码包括:SQL插件代码、.c插件代码、.control插件代码和Makefile插件代码;其中,SQL插件代码包括workprocess进程状态表和指标配置表;.c插件代码包括workproecessC代码;.control包括控制文件;Makefile包括安装插件的配置信息;
[0012](1-2)在数据库源代码目录的contrib目录下新建一个项目目录,将所述workprocess进程插件代码拷贝安装到项目目录内;
[0013](1-3)在数据库中创建workprocess进程插件;
[0014](1-4)配置数据库配置文件postgresql.conf,加载workprocess进程对应的动态链接库文件;
[0015](1-5)数据库启动时,调用_PG_init钩子程序和调用workprocess进程入口函数来启动workprocess进程;
[0016](1-5-1)输出主动优化建议;
[0017]用workprocess循环获取系统信息,并把所述系统信息存储到workprocess进程状态表;workprocess循环从指标配置表存储的主动优化指标和从workprocess进程状态表获得的系统信息进行比较,并把主动优化建议的信息分别输出到优化建议表和数据库日志;
[0018](1-5-2)输出被动优化建议;
[0019]用workprocess循环从指标配置表存储的手动被动优化指标和所述系统信息进行比较,并把被动优化建议的信息分别输出到优化建议表和数据库日志;用workprocess循环从数据库pg_stat获得SQL语句执行的效率和从指标配置表获得配置SQL语句执行的效率进行比较,并从指标配置表获得配置SQL语句执行该效率时的阈值,然后把SQL语句优化建议分别输出到优化建议表和数据库日志;
[0020](1-5-3)输出自动被动优化;
[0021]workprocess循环从指标配置表存储的自动被动优化指标和所述系统信息进行比较,通过SPI接口,调用SQL语句自动优化,并把自动被动优化信息分别输出到优化建议表和数据库日志;
[0022](1-6)数据库关闭时,调用_PG_f ini钩子程序来让workprocess进程退出。
[0023]本方案能够定时收集数据库运行状态信息,以及数据库所在虚拟机的硬件指标信息,适时的主动优化建议、被动优化建议或自动被动优化,提高数据库在云平台中运行性能稳定性。主动优化建议是自动收集数据库的运行状态信息,根据数据库的运行状况,提前输出指标的优化建议,从而达到提前处理的目的,既不浪费资源又能提高数据库在云平台中获得稳定的性能。被动优化建议,是指当数据库运行环境的硬件性能指标发生变化后,自动对数据库进行优化或输出优化建议。是不可动态更新参数,影响数据库运行的变更参数。参数优化,不可动态配置参数输出优化建议,可动态配置参数自动优化。在某些可动态调整的参数,不影响数据库提供服务的情况下可进行自动被动优化。不可动态调整的参数,或者会影响数据库提供服务的优化动作,输出优化建议。SQL优化,提供优化建议。表空间优化,输出表空间优化建议。
[0024]作为优选,在启动workprocess时,通过postmaster进程调用fork程序。
[0025]作为优选,所述系统信息包括负载信息、块设备的1PS信息、空间信息和内存信息。
[0026]作为优选,所述主动优化指标包括CPU、I OPS,内存和空间。本方案还与CPU相关,建议增加或减少CPU ;本方案还与1PS相关,建议提高或降低块设备1PS能力;本方案还与内存相关,建议增加或减少内存;本方案还与空间相关,建议增加或减少块设备存储。
[0027]本发明能够达到如下效果:
[0028]1、本发明能够定时收集数据库运行状态信息,以及数据库所在虚拟机的硬件指标信息,适时的主动优化建议、被动优化建议或自动被动优化,提高数据库在云平台中运行性能稳定性。
[0029]2、节约人力成本,减少人为干预带来的误判断问题。
[0030]3、确保数据库在云平台获得稳定性能的同时,减少资源空闲率。
[0031]4、在云平台环境中,为数据库的性能稳定性提供提前优化建议。
[0032]5、在平台硬件资源被调整后,自动优化数据库以及提供优化建议。

【专利附图】

【附图说明】
[0033]图1是在云平台中,CPU错峰的A业务与CPU错峰的B业务进行错峰搭配的一种示意图。
[0034]图2是在云平台中,资源不发生争抢的A业务与资源不发生争抢的B业务进行错峰搭配的一种示意图。
[0035]图3是本发明的一种进程逻辑示意图。

【具体实施方式】
[0036]下面通过实施例,并结合附图,对本发明的技术方案作进一步具体的说明。
[0037]实例:一种基于云平台的关系数据库自动优化方法,参见图3所示,包括如下步骤:
[0038](1-1)在启动workprocess时,通过postmaster进程调用fork程序,根据数据库编码协定编辑workprocess进程所需的workprocess进程插件代码,所述workprocess进程插件代码包括:SQL插件代码、.c插件代码、.control插件代码和Makefile插件代码;其中,SQL插件代码包括workprocess进程状态表和指标配置表;.c插件代码包括workproecessC代码;.control包括控制文件;Makefile包括安装插件的配置信息;
[0039](1-2)在数据库源代码目录的contrib目录下新建一个项目目录,将所述workprocess进程插件代码拷贝安装到项目目录内;
[0040](1-3)在数据库中创建workprocess进程插件;
[0041](1-4)配置数据库配置文件postgresql.conf,加载workprocess进程对应的动态链接库文件;
[0042](1-5)数据库启动时,调用_PG_init钩子程序和调用workprocess进程入口函数来启动workprocess进程;
[0043](1-5-1)输出主动优化建议;
[0044]用workprocess循环获取系统信息,并把所述系统信息存储到workprocess进程状态表;workprocess循环从指标配置表存储的主动优化指标和从workprocess进程状态表获得的系统信息进行比较,并把主动优化建议的信息分别输出到优化建议表和数据库日志;workprocess进程调用SPI函数输出主动优化建议;workprocess进程调用SPI函数输出优化建议到优化建议表;workprocess进程调用ereport函数输出优化建议到数据库日志;
[0045]所述系统信息包括负载信息、块设备的1PS信息、空间信息和内存信息;所述主动优化指标包括CPU、I OPS,内存和空间;
[0046](1-5-2)输出被动优化建议;
[0047]用workprocess循环从指标配置表存储的手动被动优化指标和所述系统信息进行比较,并把被动优化建议的信息分别输出到优化建议表和数据库日志;workprocess进程调用SPI函数输出被动优化建议;
[0048]用workprocess循环从数据库pg_stat获得SQL语句执行的效率和从指标配置表获得配置SQL语句执行的效率进行比较,并从指标配置表获得配置SQL语句执行该效率时的阈值,然后把SQL语句优化建议分别输出到优化建议表和数据库日志;
[0049](1-5-3)输出自动被动优化;
[0050]workprocess循环从指标配置表存储的自动被动优化指标和所述系统信息进行比较,通过SPI接口,调用SQL语句自动优化,并把自动被动优化信息分别输出到优化建议表和数据库日志;workprocess进程调用SPI函数输出自动被动优化;
[0051](1-6)数据库关闭时,调用_PG_f ini钩子程序来让workprocess进程退出。
[0052]本实例能够定时收集数据库运行状态信息,以及数据库所在虚拟机的硬件指标信息,适时的主动优化建议、被动优化建议或自动被动优化,提高数据库在云平台中运行性能稳定性。主动优化建议是自动收集数据库的运行状态信息,根据数据库的运行状况,提前输出指标的优化建议,从而达到提前处理的目的,既不浪费资源又能提高数据库在云平台中获得稳定的性能。被动优化建议,是指当数据库运行环境的硬件性能指标发生变化后,自动对数据库进行优化或输出优化建议。是不可动态更新参数,影响数据库运行的变更参数。参数优化,不可动态配置参数输出优化建议,可动态配置参数自动优化。在某些可动态调整的参数,不影响数据库提供服务的情况下可进行自动被动优化。不可动态调整的参数,或者会影响数据库提供服务的优化动作,输出优化建议。SQL优化,提供优化建议。表空间优化,输出表空间优化建议。本实例还与CPU相关,建议增加或减少CPU ;本实例还与1PS相关,建议提高或降低块设备1PS能力;本实例还与内存相关,建议增加或减少内存;本实例还与空间相关,建议增加或减少块设备存储。
[0053]上面结合附图描述了本发明的实施方式,但实现时不受上述实施例限制,本领域普通技术人员可以在所附权利要求的范围内做出各种变化或修改。
【权利要求】
1.一种基于云平台的关系数据库自动优化方法,其特征在于,其步骤如下: (1-1)根据数据库编码协定编辑workprocess进程所需的workprocess进程插件代码,所述workprocess进程插件代码包括:SQL插件代码、.c插件代码、.control插件代码和Makefile插件代码;其中,SQL插件代码包括workprocess进程状态表和指标配置表;.c插件代码包括workproecessC代码;.control包括控制文件;Makefile包括安装插件的配置信息; (1-2)在数据库源代码目录的contrib目录下新建一个项目目录,将所述workprocess进程插件代码拷贝安装到项目目录内; (1-3)在数据库中创建workprocess进程插件; (1-4)配置数据库配置文件postgresql.conf,加载workprocess进程对应的动态链接库文件; (1-5)数据库启动时,调用_PG_init钩子程序和调用workprocess进程入口函数来启动 workprocess 进程; (1-5-1)输出主动优化建议; 用workprocess循环获取系统信息,并把所述系统信息存储到workprocess进程状态表;workprocess循环从指标配置表存储的主动优化指标和从workprocess进程状态表获得的系统信息进行比较,并把主动优化建议的信息分别输出到优化建议表和数据库日志; (1-5-2)输出被动优化建议; 用workprocess循环从指标配置表存储的手动被动优化指标和所述系统信息进行比较,并把被动优化建议的信息分别输出到优化建议表和数据库日志;用workprocess循环从数据库pg_stat获得SQL语句执行的效率和从指标配置表获得配置SQL语句执行的效率进行比较,并从指标配置表获得配置SQL语句执行该效率时的阈值,然后把SQL语句优化建议分别输出到优化建议表和数据库日志; (1-5-3)输出自动被动优化; workprocess循环从指标配置表存储的自动被动优化指标和所述系统信息进行比较,通过SPI接口,调用SQL语句自动优化,并把自动被动优化信息分别输出到优化建议表和数据库日志; (1-6)数据库关闭时,调用_PG_fini钩子程序来让workprocess进程退出。
2.根据权利要求1所述的一种基于云平台的关系数据库自动优化方法,其特征在于,在启动workprocess时,通过postmaster进程调用fork程序。
3.根据权利要求1所述的一种基于云平台的关系数据库自动优化方法,其特征在于,所述系统信息包括负载信息、块设备的1PS信息、空间信息和内存信息。
4.根据权利要求1所述的一种基于云平台的关系数据库自动优化方法,其特征在于,所述主动优化指标包括CPU、I OPS,内存和空间。
【文档编号】G06F17/30GK104503974SQ201410652028
【公开日】2015年4月8日 申请日期:2014年11月17日 优先权日:2014年11月17日
【发明者】周正中 申请人:杭州斯凯网络科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1