掌桥专利:专业的专利平台
掌桥专利
首页

数据库信息的统计方法、存储介质与计算机设备

文献发布时间:2023-06-19 19:30:30


数据库信息的统计方法、存储介质与计算机设备

技术领域

本发明涉及数据库技术,特别是涉及一种数据库信息的统计方法、存储介质与计算机设备。

背景技术

IO(数据库读写操作,Input/Output)是数据库性能调优比较重要的一个指标。大部分数据库产品都提供了数据库实例读写数据文件、WAL日志(Write-Ahead Logging预写日志系统)或Redo日志(重做日志)大小等比较宏观的一些IO指标。

比如Oracle的AWR报告(Automatic Workload Repository,自动负载信息库)中的IO属性报告如表1所示:

表1

其中,Total Requests表示总请求的IO次数;

Database Requests表示数据库请求的IO次数;

Optimized Requests表示优化请求的IO次数;

Redo Requests表示redo(重做日志)的IO请求次数;

Total(MB)表示总共请求的IO大小,单位为MB;

Database(MB)表示数据库请求的IO大小,单位为MB;

Optimized Total(MB)表示优化请求的IO大小,单位为MB;

Redo(MB)表示redo(重做日志)请求的IO大小,单位为MB;

Database(blocks)表示数据库请求的IO块数;

Via Buffer Cache(blocks)表示经过数据缓冲器的IO块数;

Direct(blocks)表示直接IO请求的块数;

Read+Write Per Second表示按每秒读写统计;

Read per Second表示按每秒读统计;

Write Per Second表示按每秒写统计。

或者Kingbase ES的KWR报告中的IO分析报告如表2所示:

表2

其中Shared Blocks表示数据库共享块数量;

Shared Blocks(MB)表示数据库共享块所占空间大小,单位为MB;

Local Blocks表示数据库本地块数量;

Local Blocks(MB)表示数据库本地块所占空间大小,单位为MB;

Temp Blocks表示数据库临时块数量;

Temp Blocks(MB)表示数据库临时块所占空间大小,单位为MB;

WAL Size(MB)表示,预写日志(Write-Ahead logging,缩写WAL)所占空间大小,单位为MB。

但是上述的分析报告中均无法全面地展示数据库执行IO任务时的性能问题。

发明内容

本发明的一个目的是全方面多维度地展示数据库进程执行IO任务统计结果。

本发明一个进一步的目的是能够全面地获取数据库进程执行IO任务统计信息。

本发明一个进一步的目的是根据数据库进程执行IO任务统计信息进行多维度地分析。

特别地,本发明提供了一种数据库信息的统计方法,其包括:

获取数据库进程执行IO任务的统计信息;

将统计信息更新至数据库的共享数据表中;

周期性地将数据库的共享数据表的内容同步至预设统计表中;

在数据库中根据共享数据表和统计表生成相应的统计结果。

可选地,获取数据库进程执行IO任务的统计信息的步骤包括:

记录数据库进程执行IO任务的启动时刻;

记录数据库进程执行IO任务过程中的相关信息;

记录数据库进程执行IO任务的完成时刻以及IO数据量大小;

根据完成时刻以及启动时刻得到数据库进程执行IO任务的执行时间;

将相关信息、执行时间和IO数据量大小合并作为统计信息。

可选地,相关信息包括:IO任务对应的数据库名、IO任务操作的表空间名、IO任务操作的数据库对象名、IO任务操作的文件名、IO任务操作的文件类型和数据库进程的类型。

可选地,将统计信息更新至数据库的共享数据表中的步骤包括:

判断共享数据表中是否存在数据库进程执行IO任务的任务标识;

在共享数据表中存在任务标识的情况下,将任务标识对应的所述统计信息更新至对应的行中;

在共享数据表中不存在任务标识的情况下,在共享数据表中新增一行统计条目;

将任务标识对应的统计信息更新至新增的条目中。

可选地,在数据库中根据共享数据表中的统计信息和统计表中的统计信息生成相应的统计结果的步骤包括:

根据统计信息生成对应的任务统计视图;

自动负载信息库根据统计视图生成对应的任务列表;

自动数据库性能监视器根据任务列表生成对应的优化建议。

可选地,自动负载信息库根据统计视图生成对应的任务列表的步骤包括:自动负载信息库根据统计视图中不同维度的信息进行统计生成对应的任务列表,自动负载信息库用来自动监控所述数据库的各种指标;

自动数据库性能监视器根据任务列表生成对应的优化建议的步骤包括:自动数据库性能监视器根据任务列表中每个任务的统计情况生成对应的优化建议,自动数据库性能监视器用来自动检查和报告数据库的性能问题。

可选地,在数据库中根据共享数据表和统计表生成相应的统计结果的步骤之后还包括:

将统计结果返回给控制台。

可选地,共享数据表为数据库内存中的共享内存哈希表。

根据本发明的另一个方面,还提供了一种机器可读存储介质,其上存储有机器可执行程序,机器可执行程序被处理器执行时实现上述任一种的数据库信息的统计方法。

根据本发明的又一个方面,还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并在处理器上运行的机器可执行程序,并且处理器执行机器可执行程序时实现上述任一种的数据库信息的统计方法。

本发明的数据库信息的统计方法,数据库进程在执行IO任务的过程中,首先记录IO任务开始时刻,随后记录IO任务过程中涉及的相关信息;此相关信息包括:此IO任务对应的数据库名、此IO任务操作的表空间名、此IO任务操作的数据库对象名、此IO任务操作的文件名、此IO任务操作的文件类型和数据库进程的类型。在IO任务执行完毕之后,记录IO任务结束时刻以及IO数据量大小;随后根据IO任务开始时刻和IO任务结束时刻计算得出此IO任务执行时间;将得到的相关信息、执行时间以及IO数据量大小一起作为统计信息更新至共享内存哈希表中;接着周期性地将共享内存哈希表中的内容同步至数据库预设的统计表中。通过这种方法,能够在数据库进行执行IO任务时,全面地记录执行过程中的统计信息,为数据库IO性能分析提供数据支持。

本发明的数据库信息的统计方法,在获取到数据库进程执行IO任务的统计信息后,数据库会根据统计信息生成对应的任务统计视图,其中展示了每一个进程所执行的每个IO任务执行过程中的详细信息;自动负载信息库(Automatic Workload Repository简称AWR)可以从多个维度对IO统计视图里的统计信息进行展示,自动负载信息库根据所述统计信息中不同维度的信息进行排序生成对应的任务列表;自动数据库性能监视器(AutomaticDatabase Diagnostic Monitor简称ADDM)能够根据统计信息智能地报告数据库的性能并提出相应的优化建议。通过这种方法,能够在全面地获取到数据库进行执行IO任务的统计信息时,进行多维度地分析,从而更加全面直观地找到数据库的性能瓶颈。

根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。

附图说明

后文将参照附图以示例性而非限制性的方式详细描述本发明的一些具体实施例。附图中相同的附图标记标示了相同或类似的部件或部分。本领域技术人员应该理解,这些附图未必是按比例绘制的。附图中:

图1是根据本发明一个实施例的数据库信息的统计方法的流程示意图;

图2是根据本发明另一个实施例的数据库信息的统计方法的流程示意图;

图3是根据本发明一个实施例的数据库信息的统计方法的获取统计信息的流程示意图;

图4是根据本发明一个实施例的数据库信息的统计方法的记录多维信息的流程示意图;

图5是根据本发明一个实施例的数据库信息的统计方法的更新共享内存哈希表的流程示意图;

图6是根据本发明一个实施例的数据库信息的统计方法中机器可读存储介质的示意图;以及

图7是根据本发明一个实施例的数据库信息的统计方法中计算机设备的示意图。

具体实施方式

本领域技术人员应当理解的是,下文所描述的实施例仅仅是本发明的一部分实施例,而不是本发明的全部实施例,该一部分实施例旨在用于解释本发明的技术原理,并非用于限制本发明的保护范围。基于本发明提供的实施例,本领域普通技术人员在没有付出创造性劳动的情况下所获得的其它所有实施例,仍应落入到本发明的保护范围之内。

IO(数据库读写操作,Input/Output)是数据库性能调优比较重要的一个指标。大部分数据库产品都提供了数据库实例读写数据文件、WAL日志(Write-Ahead Logging预写日志系统)(或Redo日志(重做日志))大小等比较宏观的一些IO指标。

比如Oracle的AWR报告(Automatic Workload Repository,自动负载信息库)中的IO Profile报告如表1所示;或者Kingbase ES的KWR报告中的IO分析报告如表2所示;但是上述的分析报告中均无法全面地展示数据库执行IO任务时的性能问题。

对于上述问题,本方法通过从多维度获取数据库进程执行IO任务时的统计信息,并对统计信息进行应用,以此来对IO模型进行更加细致的拆解,便于数据库管理员(Database Administrator简称DBA)从多个不同维度分析数据库IO性能。

图1是根据本发明一个实施例的数据库信息的统计方法的流程示意图。该示意图包括:

步骤S101,获取数据库进程执行IO任务的统计信息。本步骤包括:记录数据库进程执行IO任务的启动时刻;记录数据库进程执行IO任务过程中的相关信息;记录数据库进程执行IO任务的完成时刻以及IO数据量大小;根据完成时刻以及启动时刻得到数据库进程执行IO任务的执行时间;将记录的相关信息、执行时间和IO数据量大小合并作为统计信息。其中相关信息包括IO任务对应的数据库名、IO任务操作的表空间名、IO任务操作的数据库对象名、IO任务操作的文件名、IO任务操作的文件类型和数据库进程的类型。通过记录上述信息,达到多维度记录数据库进程执行IO任务时的统计信息的目的。

步骤S102,将统计信息更新至数据库的共享数据表中。本步骤包括:判断共享数据表中是否存在数据库进程执行IO任务的任务标识;在共享数据表中存在任务标识的情况下,将任务标识对应的统计信息更新至对应的行中;在共享数据表中不存在任务标识的情况下,在共享数据表中新增一行统计条目,将任务标识对应的统计信息更新至新增的行中。其中,共享数据表为数据库内存中的共享哈希表,用来存储统计信息。

步骤S103,周期性地将数据库的共享数据表的内容同步至预设统计表中。本步骤是指将存在于内存中的共享数据表的数据周期性地存储于数据库预设的系统表中,实现数据落盘。此方法可以在数据库需要更新数据时,能够在内存中进行查询,随后定时将内存中的数据进行落盘,实现数据的永久存储,这样既可以提升数据库的更新效率,又可以实现数据的保存。

步骤S104,在数据库中根据共享数据表和统计表生成相应的统计结果。本步骤包括:数据库根据统计信息生成对应的统计视图;自动负载信息库根据统计视图中不同维度的信息进行统计生成对应的任务列表,其中,自动负载信息库用来自动监控所述数据库的各种指标;自动数据库性能监视器根据任务列表中每个任务的统计情况生成对应的优化建议,其中,自动数据库性能监视器用来自动检查和报告数据库的性能问题。

在本方法中,通过将数据库进程执行IO任务过程中的信息进行多维度的记录,随后在数据库中根据统计信息进行不同维度地分类统计,由此来多方面地分析数据库的性能问题,并由自动数据库性能监视器来智能的提出优化建议及依据。

为了对步骤S104中对于统计信息的应用进行更加清楚地说明,下面提供一种具体的示例如:

在步骤S104中,数据库根据统计信息生成对应的统计视图的一种具体示例如表3和表4所示:

表3查询IO统计视图字段说明

表4查询结果示例

其中,client backend表示客户端会话进程;

Read表示IO类型为读取操作;

Extend表示IO类型为扩展操作;

Sync表示IO类型为同步操作;

Data File表示文件类型为数据文件;

DataFileRead表示IO等待事件类型为读取数据文件;

DataFileExtend表示IO等待事件类型为扩展数据文件;

DataFileImmediateSync表示IO等待事件类型为立刻同步数据文件。

在步骤S104中,自动负载信息库根据统计视图中不同维度的信息进行统计生成对应的任务列表的一种具体示例如表5和表6所示:

表5按进程类型统计结果

其中,autovacuum launcher表示自动空间回收启动进程;

client backend表示客户端会话进程;

stats collector表示统计信息收集进程;

walwriter表示预写日志写入进程。

表6按文件类型统计结果

其中,Data File表示数据文件;

Stats File表示统计数据文件;

WAL File表示预写日志文件。

在步骤S104中,自动数据库性能监视器根据任务列表中每个任务的统计情况生成对应的优化建议的一种具体示例如下所示:

优化共享缓存建议:

建议依据:

数据库共享缓存太小,很多数据页无法缓存,容易导致共享缓存命中率低,或者前台等待事件:读取数据文件(DataFileRead)、写入数据文件(DataFileWrite)过高。

根据主机内存和当前数据库大小,扩大共享缓存,让更多的数据页在缓存中命中,进而减少IO。

建议动作:

优化Shared Buffers参数,当前值:128MB,建议值:16GB

参考信息:

实例IO:

共享缓存命中率:96.62%

共享块IO占比:74.09%

共享块IO速度:140.13MB/s

本地缓存命中率:99.89%

本地块IO占比:3.00%

本地块IO速度:5.67MB/s

前台等待事件:

DataFileRead:4.66%

DataFileWrite:1.61%

配置参数:

Shared Buffers:128MB

其他信息:

主机内存总大小:252GB

数据库磁盘空间:14GB

其中Shared Buffers表示共享缓冲区。

图2是根据本发明另一个实施例的数据库信息的统计方法的流程示意图。

本示意图包括:

在多维IO统计采集模块21中包含步骤S201和步骤S202,其中

步骤S201,IO任务发生,采集多维统计内容。本步骤包括:记录数据库进程执行IO任务的启动时刻;记录数据库进程执行IO任务过程中的相关信息;记录数据库进程执行IO任务的完成时刻以及IO数据量大小;根据完成时刻以及启动时刻得到数据库进程执行IO任务的执行时间;将记录的相关信息、执行时间和IO数据量大小合并作为统计信息。

步骤S202,将多维统计更新到共享内存哈希表。本步骤包括:判断共享内存哈希表中是否存在数据库进程执行IO任务的任务标识;在共享内存哈希表中存在任务标识的情况下,将任务标识对应的统计信息更新至对应的行中;在共享内存哈希表中不存在任务标识的情况下,在共享内存哈希表中新增一行统计条目,将任务标识对应的统计信息更新至新增的条目中。

在多维IO统计应用模块22中包含步骤S203、步骤S204和步骤S205,其中

步骤S203,按多个维度查询IO统计视图。其中,数据库根据统计信息生成对应的统计视图的一种具体示例如表3和表4所示。

步骤S204,通过性能报告展示多维IO统计结果。其中,多维IO统计结果的一种具体示例如表5和表6所示。

步骤S204,性能组件根据多维IO统计产生调优建议。

在本示意图中,通过多维IO统计采集模块对数据库进程执行IO任务的统计信息进行采集记录,随后通过多维IO统计应用模块对统计信息进行处理,从而生成统计视图以及统计结果,并且根据统计结果提出对应的调优建议。由此对数据库进行更加细致的记录,从更多方面对数据库进行调优。

图3是根据本发明一个实施例的数据库信息的统计方法的获取统计信息的流程示意图。

需要说明的是,本示意图为了更加清楚的介绍本方法,选取一种具体的IO任务作为示例,例如IO等待事件(当数据库需要读取控制文件上的信息时,会出现这个等待事件),本领域专业人员可以根据实际需要,利用本方法实现对其他IO任务的操作。该方法一般性地包括以下步骤:

步骤S301,IO等待事件开始。

步骤S302,记录IO开始时间。

步骤S303,IO任务进行中记录多维信息。

步骤S304,IO任务完成,记录IO数据量大小,计算IO时间。本步骤中IO时间是根据步骤S302记录的IO开始事件以及本步骤记录的IO结束事件进行计算所得到的。

步骤S305,IO等待事件结束。

步骤S306,更新IO多维度统计信息到共享内存哈希表。

步骤S307,周期性将哈希表内容同步到IO统计表。

本示意图通过记录数据库进程在执行IO等待事件时,从多个方面记录执行过程中的信息,并将信息记录在共享内存哈希表中,随后将存在于内存中的共享数据表的数据周期性地存储于数据库预设的系统表中,实现数据落盘。此方法既可以在数据库需要更新数据时,能够在内存中进行查询,又可以定时将内存中的数据进行落盘,实现数据的永久存储,这样既可以提升数据库的更新效率,又可以实现数据的保存。

步骤S303的一种可选的具体流程如图4所示,图4是根据本发明一个实施例的数据库信息的统计方法的记录多维信息的流程示意图。本流程图包括:

步骤S401,记录当前数据库名。

步骤S402,记录当前表空间名。

步骤S403,记录当前数据库对象名。

步骤S404,记录当前文件名。

步骤S405,记录当前文件类型。

步骤S406,记录当前进程类型。

步骤S306的一种可选的具体流程如图5所示,图5是根据本发明一个实施例的数据库信息的统计方法的更新共享内存哈希表的流程示意图。本流程图包括:

步骤S501,在共享内存哈希表里查找目标IO事件。

步骤S502,判断目标IO事件是否存在。

步骤S503,在步骤S502判断为否的情况下,在哈希表新增一个IO事件条目。

步骤S504,在步骤S503执行完毕的情况下或者在步骤S502判断为是的情况下,更新目标IO事件的次数、时间、数据量大小等多维度统计信息。本步骤包括,在步骤S503执行完毕的情况下,则将目标IO事件的统计信息更新至新增的条目中;在步骤S502判断为是的情况下,则将目标IO事件的统计信息更新至目标IO事件对应的条目中。

本实施还提供了一种机器可读存储介质和计算机设备。图6是根据本发明一个实施例的机器可读存储介质601的示意图,图7是根据本发明一个实施例的计算机设备703的示意图。

机器可读存储介质601其上存储有机器可执行程序602,机器可执行程序602被处理器执行时实现上述任一实施例的数据库信息的统计方法。

计算机设备703可以包括存储器701、处理器702及存储在存储器701上并在处理器702上运行的机器可执行程序602,并且处理器702执行机器可执行程序602时实现上述任一实施例的数据库信息的统计方法。

需要说明的是,在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,更新IO多维度统计信息到共享内存哈希表,可以具体实现在任何机器可读存储介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。

就本实施例的描述而言,机器可读存储介质601可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。机器可读存储介质601的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,机器可读存储介质601甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。

应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。

计算机设备703可以是例如服务器、台式计算机、笔记本式计算机、平板计算机或智能手机。在一些示例中,计算机设备703可以是云计算节点。计算机设备703可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括执行特定的任务或者实现特定的抽象数据类型的例程、程序、目标程序、组件、逻辑、数据结构等。计算机设备703可以在通过通信网络链接的远程处理设备执行任务的分布式云计算环境中实施。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。

计算机设备703可以包括适于执行存储的指令的处理器702、在操作期间为所述指令的操作提供临时存储空间的存储器701。处理器702可以是单核处理器、多核处理器、计算集群或任何数量的其他配置。存储器701可以包括随机存取存储器(RAM)、只读存储器、闪存或任何其他合适的存储系统。

处理器702可以通过系统互连(例如PCI、PCI-Express等)连接到适于将计算机设备703连接到一个或多个I/O设备(输入/输出设备)的I/O接口(输入/输出接口)。I/O设备可以包括例如键盘和指示设备,其中指示设备可以包括触摸板或触摸屏等等。I/O设备可以是计算机设备703的内置组件,或者可以是外部连接到计算设备的设备。

处理器702也可以通过系统互连链接到适于将计算机设备703连接到显示设备的显示接口。显示设备可以包括作为计算机设备703的内置组件的显示屏。显示设备还可以包括外部连接到计算机设备703的计算机监视器、电视机或投影仪等。此外,网络接口控制器(network interface controller,NIC)可以适于通过系统互连将计算机设备703连接到网络。在一些实施例中,NIC可以使用任何合适的接口或协议(诸如因特网小型计算机系统接口等)来传输数据。网络可以是蜂窝网络、无线电网络、广域网(WAN))、局域网(LAN)或因特网等等。远程设备可以通过网络连接到计算设备。

本实施例提供的流程图并不旨在指示方法的操作将以任何特定的顺序执行,或者方法的所有操作都包括在所有的每种情况下。此外,方法可以包括附加操作。在本实施例方法提供的技术思路的范围内,可以对上述方法进行附加的变化。

至此,本领域技术人员应认识到,虽然本文已详尽示出和描述了本发明的多个示例性实施例,但是,在不脱离本发明精神和范围的情况下,仍可根据本发明公开的内容直接确定或推导出符合本发明原理的许多其他变型或修改。因此,本发明的范围应被理解和认定为覆盖了所有这些其他变型或修改。

相关技术
  • 信息推送方法、信息展示方法、计算机设备及存储介质
  • 数据库事务处理方法、装置、设备和计算机可读存储介质
  • 数据库同步恢复方法、装置、计算机可读存储介质和电子设备
  • 医疗数据库建立方法、装置、计算机设备和存储介质
  • 一种数据库高并发查询方法、设备和计算机可存储介质
  • 数据库关系表的信息统计方法、存储介质与计算机设备
  • 数据库操作语句的统计信息的处理方法、存储介质与设备
技术分类

06120115934782