CN104809152B - 一种节约PostgreSQL共享内存的方法及系统 - Google Patents

一种节约PostgreSQL共享内存的方法及系统 Download PDF

Info

Publication number
CN104809152B
CN104809152B CN201510107904.9A CN201510107904A CN104809152B CN 104809152 B CN104809152 B CN 104809152B CN 201510107904 A CN201510107904 A CN 201510107904A CN 104809152 B CN104809152 B CN 104809152B
Authority
CN
China
Prior art keywords
postgresql
major key
recombination
updated
row
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.)
Active
Application number
CN201510107904.9A
Other languages
English (en)
Other versions
CN104809152A (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.)
Shanghai Taiyu Information Technology Co ltd
Original Assignee
HANGZHOU NO IMAGE TECHNOLOGY 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 HANGZHOU NO IMAGE TECHNOLOGY Co Ltd filed Critical HANGZHOU NO IMAGE TECHNOLOGY Co Ltd
Priority to CN201510107904.9A priority Critical patent/CN104809152B/zh
Publication of CN104809152A publication Critical patent/CN104809152A/zh
Application granted granted Critical
Publication of CN104809152B publication Critical patent/CN104809152B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种节约PostgreSQL共享内存的方法,包括如下步骤:跟踪和统计表被更新和查询的次数;当更新和查询的次数满足设定条件时,触发数据重组,将筛选出的PK所在的行重组至连续的数据块中。以带有10万条记录的表为例,仍然假设其占用1000个8K的数据块,经常需要访问的数据有1000条,应用本发明所提出的技术方案,将这1000条记录在连续的数据块存储,只需要10个8K的数据块,那么只需要消耗80K的共享内存,既保证了数据访问在内存共享区的命中率,又避免了共享内存的极大浪费。

Description

一种节约PostgreSQL共享内存的方法及系统
技术领域
本发明涉及一种节约PostgreSQL共享内存的方法,还涉及一种应用上述方法的系统。
背景技术
用户访问PostgreSQL表的数据时, 会先将数据加载到数据库的共享内存区, 因此,分布越离散的数据,越容易造成共享内存的浪费。
为了提高数据访问在内存共享区的命中率,一般的做法是,将经常访问的数据常驻在内存中。举例来说,1个包含10万条记录的表,设定其占用了1000个8K的数据块,如果经常需要访问的数据有1000条,除此之外,其余数据都是不需要经常访问的,如果这1000条经常访问的记录(数据)刚好分布在1000个数据块中,则需要消耗近8MB共享内存。也就是说,为了提高这个表的1000条活跃记录的查询效率, 需要耗费近8M的共享内存, 造成了共享内存的极大浪费。
发明内容
为解决现有技术中存在的技术问题,本发明提出一种节约PostgreSQL共享内存的方法。
为达到上述目的,本发明提出如下技术方案:
一种节约PostgreSQL共享内存的方法,包括如下步骤:跟踪和统计表被更新和查询的次数;当更新和查询的次数满足设定条件时,触发数据重组,将筛选出的PK所在的行重组至连续的数据块中。
上述技术方案还可以进一步优化。
作为优选,跟踪和统计表被更新和查询的次数,具体包括如下步骤:
通过PostgreSQL钩子程序在数据库执行SQL语句过程中跟踪和统计表被更新和被查询的次数;存储统计值。
作为优选,跟踪和统计表被更新和查询的次数,具体包括如下步骤:在应用层跟踪和统计表被更新和查询的次数;存储统计值。
作为优选,除更新的次数外还需要记录如下内容:数据库名称、架构、表名称、主关键字、时间范围。
作为优选,除查询的次数外还需要记录如下内容:数据库名称、架构、表名称、主关键字、时间范围、查询次数。
作为优选,设定条件是指:在第一预设时间内查询次数超过第一预设值,并且,在第一预设时间内更新次数少于第二预设值。
作为优选,数据重组包括如下步骤:得到满足预设条件的主关键字值;根据主关键字值中的行分布情况,筛选需要重组的主关键字条目。
作为优选,根据主关键字值中的行分布情况,筛选需要重组的主关键字条目,具体包括如下步骤:当单数据块包含的满足条件的主关键字条目数量小于第三预设值时,则对这些条目进行重组。
作为优选,数据重组还包括如下步骤:创建一个临时表;将需要重组的主关键字条目所在的行插入临时表;删除需要重组的主关键字条目在需要重组的表中所在的行;重复上述插入和删除的步骤,直到完成所有需要重组的主关键字条目在临时表中的重组;将新组建的临时表插入需要重组的表。
本发明还涉及一种应用上述方法的系统。
由于上述技术方案的采用,本发明相比于现有技术,具有以下优点:
以带有10万条记录的表为例,仍然假设其占用1000个8K的数据块,经常需要访问的数据有1000条,应用本发明所提出的技术方案,将这1000条记录在连续的数据块存储,只需要10个8K的数据块, 那么只需要消耗80K的共享内存,既保证了数据访问在内存共享区的命中率,又避免了共享内存的极大浪费。
附图说明
图1是本发明的一种流程示意图。
具体实施方式
下面结合附图,对本发明的具体实施方式做进一步解释说明。
如图1所示的节约PostgreSQL共享内存的方法,包括如下步骤:
(1)跟踪和统计表被更新和查询的次数;
(2)当更新和查询的次数满足设定条件时,触发数据重组,将筛选出的PK所在的行重组至连续的数据块中。
在一个实施例中,跟踪和统计表被更新和查询的次数,具体包括如下步骤:
通过PostgreSQL钩子程序在数据库执行SQL语句过程中跟踪和统计表被更新和被查询的次数;存储统计值。在上述过程中,除更新的次数外还需要记录如下内容:数据库名称、架构、表名称、主关键字、时间范围。除查询的次数外还需要记录如下内容:数据库名称、架构、表名称、主关键字、时间范围、查询次数。
PostgreSQL钩子程序随数据库一起启动,在数据库执行SQL语句过程中,数据访问节点获取记录被更新和查询的次数,并完成累计统计,将统计数据记录到内存结构并定期flush到磁盘, 以确保重启数据库统计信息不丢失。
需要说明的是,所取得的是最终返回给用户的数据, 而不是访问的数据。例如索引扫描, 扫描了10个HEAP BLOCK, 但是由于还有其他查询条件, 最终返回的结果可能只有少量, 那么要跟踪的是返回的记录, 而不是被扫描的10个数据块的所有记录。
在另一个实施例中,跟踪和统计表被更新和查询的次数,具体包括如下步骤:在应用层跟踪和统计表被更新和查询的次数;存储统计值。在上述过程中,除更新的次数外还需要记录如下内容:数据库名称、架构、表名称、主关键字、时间范围。除查询的次数外还需要记录如下内容:数据库名称、架构、表名称、主关键字、时间范围、查询次数。上述应用层的跟踪动作需要配置内存数据库,如redis,用于存储需要记录的内容。
上述步骤(2)中,设定条件是指:在第一预设时间内查询次数超过第一预设值,并且,在第一预设时间内更新次数少于第二预设值。在一个实施例中,第一设定时间是指1天。在另一个实施例中,由于更新频繁的记录一般没有重组的必要,因此,第二预设值不是一个表征更新次数频繁的数值。
上述步骤(2)中,数据重组包括如下步骤:
得到满足预设条件的主关键字值(PK值);
根据主关键字值中的行分布情况,筛选需要重组的主关键字(PK)条目,具体包括如下步骤:当单数据块包含的满足条件的主关键字条目数量小于第三预设值时,则对这些条目进行重组。在一个实施例中,PK为1~100的条目分布在1~100号数据块中,PK为101~200的条目在1号数据块中,可以认为, 2~100数据块中,分别各只有1条满足条件PK条目,那么这99条分散分布的记录则是需要重组的PK条目。
在一个实施例中,通过开启一个事务完成数据重组,在重组结束后,提交上述事务,重组的记录定位方法则是上述得到的满足条件的PK条目,具体包括如下步骤:
创建一个临时表;
将需要重组的主关键字条目所在的行插入临时表;
删除需要重组的主关键字条目在需要重组的表中所在的行;
重复上述插入和删除的步骤,直到完成所有需要重组的主关键字条目在临时表中的重组;将新组建的临时表插入需要重组的表。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发
明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (5)

1.一种节约PostgreSQL共享内存的方法,其特征在于,包括如下步骤:
跟踪和统计表被更新和查询的次数;
当所述的更新和查询的次数满足设定条件时,触发数据重组,将筛选出的PK所在的行重组至连续的数据块中;
跟踪和统计表被更新和查询的次数,具体包括如下步骤:
通过PostgreSQL钩子程序在数据库执行SQL语句过程中跟踪和统计表被更新和被查询的次数;存储统计值;
所述的设定条件是指:
在第一预设时间内查询次数超过第一预设值,并且,在第一预设时间内更新次数少于第二预设值;
所述的数据重组包括如下步骤:
得到满足预设条件的主关键字值;
根据所述的主关键字值中的行分布情况,筛选需要重组的主关键字条目;
根据所述的主关键字值中的行分布情况,筛选需要重组的主关键字条目,具体包括如下步骤:
当单数据块包含的满足条件的主关键字条目数量小于第三预设值时,则对这些条目进行重组;
所述的数据重组还包括如下步骤:
创建一个临时表;
将需要重组的主关键字条目所在的行插入所述的临时表;
删除所述的需要重组的主关键字条目在需要重组的表中所在的行;
重复上述插入和删除的步骤,直到完成所有需要重组的主关键字条目在临时表中的重组;
将新组建的所述的临时表插入所述的需要重组的表。
2.根据权利要求1所述的一种节约PostgreSQL共享内存的方法,其特征在于,跟踪和统计表被更新和查询的次数,具体包括如下步骤:
在应用层跟踪和统计表被更新和查询的次数;存储统计值。
3.根据权利要求1或2所述的一种节约PostgreSQL共享内存的方法,其特征在于,所述的除更新的次数外还需要记录如下内容:数据库名称、架构、表名称、主关键字、时间范围。
4.根据权利要求1或2所述的一种节约PostgreSQL共享内存的方法,其特征在于,所述的除查询的次数外还需要记录如下内容:数据库名称、架构、表名称、主关键字、时间范围、查询次数。
5.一种系统,应用如权利要求1~4中任意一条所述的方法。
CN201510107904.9A 2015-03-12 2015-03-12 一种节约PostgreSQL共享内存的方法及系统 Active CN104809152B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510107904.9A CN104809152B (zh) 2015-03-12 2015-03-12 一种节约PostgreSQL共享内存的方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510107904.9A CN104809152B (zh) 2015-03-12 2015-03-12 一种节约PostgreSQL共享内存的方法及系统

Publications (2)

Publication Number Publication Date
CN104809152A CN104809152A (zh) 2015-07-29
CN104809152B true CN104809152B (zh) 2018-08-17

Family

ID=53693975

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510107904.9A Active CN104809152B (zh) 2015-03-12 2015-03-12 一种节约PostgreSQL共享内存的方法及系统

Country Status (1)

Country Link
CN (1) CN104809152B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105573678B (zh) * 2015-12-17 2018-11-09 深圳市华讯方舟软件技术有限公司 一种PostgreSQL块
CN110866063B (zh) * 2018-08-27 2023-10-31 阿里云计算有限公司 一种数据跟踪处理方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8280907B2 (en) * 2005-11-30 2012-10-02 International Business Machines Corporation System and method for managing access to data in a database
CN103403707A (zh) * 2010-12-28 2013-11-20 思杰系统有限公司 用于数据库代理请求交换的系统和方法
CN103593440A (zh) * 2013-11-15 2014-02-19 北京国双科技有限公司 日志文件的读写方法及装置
CN104216986A (zh) * 2014-09-03 2014-12-17 陈飞 以数据更新周期进行预操作提高数据查询效率的装置及方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090319721A1 (en) * 2008-06-19 2009-12-24 Silicon Motion, Inc. Flash memory apparatus and method for operating the same

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8280907B2 (en) * 2005-11-30 2012-10-02 International Business Machines Corporation System and method for managing access to data in a database
CN103403707A (zh) * 2010-12-28 2013-11-20 思杰系统有限公司 用于数据库代理请求交换的系统和方法
CN103593440A (zh) * 2013-11-15 2014-02-19 北京国双科技有限公司 日志文件的读写方法及装置
CN104216986A (zh) * 2014-09-03 2014-12-17 陈飞 以数据更新周期进行预操作提高数据查询效率的装置及方法

Also Published As

Publication number Publication date
CN104809152A (zh) 2015-07-29

Similar Documents

Publication Publication Date Title
CN102741843B (zh) 从数据库中读取数据的方法及装置
CN106294772B (zh) 分布式内存列式数据库的缓存管理方法
CN102129442B (zh) 一种分布式数据库系统和数据访问方法
US7797347B2 (en) Workload aware checking of database reorganization
CN110597859B (zh) 一种分页查询数据的方法和装置
CN105930387A (zh) 一种基于数据路由、分库分表的数据操作系统及方法
CN102043859A (zh) 数据更新方法及装置
CN107423404B (zh) 流程实例数据同步处理方法和装置
CN102270225A (zh) 数据变更日志监控方法和数据变更日志监控装置
CN104423960A (zh) 一种项目持续集成的方法及系统
CN109271435A (zh) 一种支持断点续传的数据抽取方法及系统
CN103886005A (zh) 用于为增强查询性能使用临时性能对象的方法和系统
CN105159845A (zh) 存储器读取方法
CN107704573A (zh) 一种与业务耦合的智能缓存方法
CN103020149A (zh) 共享数据更新装置和共享数据更新方法
CN109885642B (zh) 面向全文检索的分级存储方法及装置
CN102467525A (zh) 单据关联方法及系统
CN103593460A (zh) 数据分级存储系统和数据分级存储方法
CN105631019A (zh) 元数据扩展方法和元数据扩展装置
CN104809152B (zh) 一种节约PostgreSQL共享内存的方法及系统
CN104598652B (zh) 一种数据库查询方法及装置
CN102982186A (zh) 基于oracle数据库系统的range分区表的维护方法和系统
CN104391745A (zh) 一种可扩展的对象生命周期管理方法
CN105320676A (zh) 一种客户数据查询服务方法及装置
CN103778064B (zh) 一种数据管理方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
EXSB Decision made by sipo to initiate substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: 310000 room 1001, building 2, No. 2, ZIJINGHUA Road, Xihu District, Hangzhou City, Zhejiang Province

Patentee after: HANGZHOU MEGA TECHNOLOGY Co.,Ltd.

Address before: 10, building 2, block B, The Union Buildings, No. 310013, Bauhinia Road, Hangzhou, Xihu District, Zhejiang

Patentee before: Hangzhou Mijia Technology Co.,Ltd.

CP01 Change in the name or title of a patent holder

Address after: 310000 room 1001, building 2, No. 2, ZIJINGHUA Road, Xihu District, Hangzhou City, Zhejiang Province

Patentee after: Hangzhou Sikai Data Technology Group Co.,Ltd.

Address before: 310000 room 1001, building 2, No. 2, ZIJINGHUA Road, Xihu District, Hangzhou City, Zhejiang Province

Patentee before: HANGZHOU MEGA TECHNOLOGY Co.,Ltd.

CP01 Change in the name or title of a patent holder
TR01 Transfer of patent right

Effective date of registration: 20210416

Address after: No. 181, erbatou, taimuyang village, Qinyu Town, Fuding City, Ningde City, Fujian Province

Patentee after: Chen Ximei

Address before: 310000 room 1001, building 2, No. 2, ZIJINGHUA Road, Xihu District, Hangzhou City, Zhejiang Province

Patentee before: Hangzhou Sikai Data Technology Group Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20210608

Address after: 201100 room 509, building 2, No. 508, Chundong Road, Minhang District, Shanghai

Patentee after: SHANGHAI TAIYU INFORMATION TECHNOLOGY Co.,Ltd.

Address before: 355200 no.181 erbatou, taimuyang village, Qinyu Town, Fuding City, Ningde City, Fujian Province

Patentee before: Chen Ximei

TR01 Transfer of patent right