CN100416568C - 一种加速数据库查询速度的方法 - Google Patents
一种加速数据库查询速度的方法 Download PDFInfo
- Publication number
- CN100416568C CN100416568C CNB2006100415486A CN200610041548A CN100416568C CN 100416568 C CN100416568 C CN 100416568C CN B2006100415486 A CNB2006100415486 A CN B2006100415486A CN 200610041548 A CN200610041548 A CN 200610041548A CN 100416568 C CN100416568 C CN 100416568C
- Authority
- CN
- China
- Prior art keywords
- data
- record
- database
- shared drive
- index
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明针对现有的电信计费系统数据查询速度较慢,对数据库性能依赖性大的问题,公开了一种加速数据库查询速度的方法,它通过在系统内存中开辟用于存放数据和数据索引的共享内存段,由守护进程按约定的方式将数据库中的数据和数据索引分别调入相应的共享内存段中供业务进程调用,同时由守护进程定时或循环对数据库中的记录进行查询,及时将更新的数据内容记录到上述共享内存段中。在不增加硬件投资的前提下,可有效地提高数据库的查询速度,减少对数据库性能的依赖。
Description
技术领域
本发明涉及一种电信计费系统的数据库技术,具体地说是一种加速数据库查询速度的方法。
背景技术
目前,计费系统中各种业务程序需要对数据库中的数据进行频繁的查询操作,涉及的数据量非常巨大,访问数据库的频率很高,由此产生过多的数据库交互导致程序性能降低。使用共享内存技术将数据库待查询的数据上载到业务程序所在的系统内存中,结合业务需求建立快速有效的查询方式,提高查询速度,减少对数据库性能的依赖。
发明内容
本发明的目的是针对现有的电信计费系统数据查询速度较慢,对数据库性能依赖性大的问题,提供一种加速数据库查询速度的方法。
本发明的技术方案是:
一种加速数据库查询速度的方法,其特征是在系统内存中开辟用于存放数据和数据索引的共享内存段,由守护进程按约定的方式将数据库中的数据和数据索引分别调入相应的共享内存段中供业务进程调用,同时由守护进程定时或循环对数据库中的记录进行查询,及时将更新的数据内容记录到上述共享内存段中;所述的约定的方式是指守护进程根据业务查询需求的内容,获取数据库中对应的数据,形成逻辑表的记录;同时根据业务查询的要求,对逻辑表的记录建立索引和对应的查询方法;根据业务实际数据量建立对应大小的共享内存,最终将逻辑表的数据和索引以数组方式调入到共享内存中进行管理。
所述的守护进程根据业务查询需求的内容,获取数据库中对应的数据,经过处理后形成逻辑表的记录用以上载;同时根据业务查询的要求,对逻辑表的记录建立索引和对应的查询方法;根据业务实际数据量建立对应大小的共享内存,将逻辑表的数据和索引以数组方式上载到共享内存中并进行管理。
在循环对数据库中的记录进行查询的过程中,业务进程连接指定的共享内存,根据系统提供的查询方法获取需要的数据,拷贝到进程内部内存进行操作,并限制修改共享内存中的数据。
所述的守护进程定时或者循环查询数据库记录修改时间,或者修改记查询已经被修改的记录,完成内存数据库数据记录在共享内存的同步更新。
本发明的有益效果:
1、本发明在不增加硬件投资的前提下,可有效地提高数据库的查询速度。
2、本发明通过使用共享内存技术将数据库待查询的数据上载到业务程序所在的系统内存中,结合业务需求建立快速有效的查询方式,提高了查询速度,减少了对数据库性能的依赖。
附图说明
图1是本发明的原理示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的说明。
图1所示。
一种加速数据库查询速度的方法,在系统内存中开辟用于存放数据和数据索引的共享内存段,由守护进程按约定的方式将数据库中的数据和数据索引分别调入相应的共享内存段中供业务进程调用,同时由守护进程定时或循环对数据库中的记录进行查询,及时将更新的数据内容记录到上述共享内存段中。
在上载数据的过程中,所述的守护进程可根据业务查询需求的内容,获取数据库中对应的数据,经过处理后形成逻辑表的记录用以上载;同时根据业务查询的要求,对逻辑表的记录建立索引和对应的查询方法;根据业务实际数据量建立对应大小的共享内存,将逻辑表的数据和索引以数组方式上载到共享内存中并进行管理。
在查询数据过程中,业务进程连接指定的共享内存,根据系统提供的查询方法获取需要的数据,拷贝到进程内部内存进行操作,并限制修改共享内存中的数据。
维护数据过程中,守护进程通过设定的查询方式获取数据库中更新过的数据记录,采用与上载数据类似方法更新共享内存中的数据,完成数据同步。
本发明可根据需要查询的数据量,首先在系统内存中开辟足够的共享内存段,用于存放数据记录。同时根据数据查询的需求建立对应的查询方式(即建立索引),创建立对应的共享内存段,用于存放索引及辅助维护数据。系统框架如图1。详述如下
总体流程:
守护进程根据预先定义,查询并获取数据库中的原始数据,经过处理形成需要存放的记录并插入共享内存的数据段,同时根据查询方式形成对应的索引记录,插入共享内存的索引段。在数据被批量上载后,业务进程可以连接共享内存,先访问索引段,然后获取对应的数据记录。数据库数据发生变动时,守护进程根据相应的机制获取变动的资料,依照前面业务进程查询数据的方法,如果找到指定数据就更新,如果没有找到就插入新记录。
共享内存:
首先建立一个共享内存管理区,用于存放相关数据段和索引段的管理信息。每个数据段和索引段都是不同的共享内存段,它们之间的逻辑关系存放在管理区。同时管理区还需要保存每个段的相关信息比如段的大小,段的系统标识,创建时间,更新时间,存放的记录数,记录大小。
索引:
根据各个业务进程查询的需要,以及业务数据本身的特点,采用散列方法生成索引。将数据库各表的数据根据业务要求结合,对应生成各种逻辑表,逻辑表的数据记录就是需要存放在共享内存的数据记录,通过数据库查询SQL获得这些记录后按照数组的方式存放数据。同时根据每个数据记录的逻辑建立散列索引。索引记录存放位址是根据对应数据记录的逻辑索引散列获取,索引记录的内容是对应数据记录的存放信息,段落号和段内偏移位置。对同一个逻辑表可能存在不同的索引,及对一个数据记录存在多个索引记录用来保存其地址信息。业务进程和守护进程需要使用统一的建立索引的方法。
数据维护:
系统的目标是提供快捷的查询途径,所以本系统的数据更新只涉及根据数据库记录的增加和修改,数据的删除不在系统功能范围内。守护进程定时或者循环查询数据库记录修改时间,或者修改记录查询已经被修改的记录,完成内存数据库数据记录在共享内存的同步更新(根据系统和数据量影响会产生一定的更新时间差)。共享内存的数据有守护进程负责修改,其它的访问进程只能查询,因此可以保证在某个时刻业务逻辑的完整性。
下面以一个具体的实施对本发明的加速数据库查询的方法作一步的说明:
例如数据库中的订户表 SUBS,包含字段有ID,PREFIX,ACC_NBR,ACCT_ID,CUST_ID,USER_ID,AGENT_ID,PRICE_PLAN_ID,BONUS_AMOUNT,UPDATE_DATE等字段。其中部分字段是在计费业务中是必不可少的,当守护进程准备将该表的数据上载到共享内存前,会根据业务需求将对应的CUST_ID,USER_ID,AGENT_ID字段舍去,同时根据业务进程查询数据的查询条件,对PREFIX和ACC_NBR,ACCT_ID,ID建立对应的索引,并提供对应的查询方法。其中ID是主键,是内存中数据唯一的标识,这个是必须存在的,用于更新和插入数据的。
当守护进程上载完数据到共享内存中后,定时进行维护更新操作。当数据库中表SUBS有记录修改后,需要有机制可以记录被修改记录的主键标识。守护进程根据被修改记录的主键标识,通过ID索引查询对应的数据,如果存在则更新共享内存中的数据,如果不存在,则新建一个记录在共享内存中。如果修改的字段中包含了作为索引的字段,如PREFIX,ACC_NBR,ACCT_ID则守护进程需要更新修改记录对应的索引信息。
业务进程根据需要查询共享内存数据时,比如根据PREFIX和ACC_NBR(号码前缀和号码)进行记录查找,只需知道对应的PREFIX和ACC_NBR对应的数值,使用对应的查询方法,就可以获取数据。
Claims (4)
1. 一种加速数据库查询速度的方法,其特征是在系统内存中开辟用于存放数据和数据索引的共享内存段,由守护进程按约定的方式将数据库中的数据和数据索引分别调入相应的共享内存段中供业务进程调用,同时由守护进程定时或循环对数据库中的记录进行查询,及时将更新的数据内容记录到上述共享内存段中;所述的约定的方式是指守护进程根据业务查询需求的内容,获取数据库中对应的数据,形成逻辑表的记录;同时根据业务查询的要求,对逻辑表的记录建立索引和对应的查询方法;根据业务实际数据量建立对应大小的共享内存,最终将逻辑表的数据和索引以数组方式调入到共享内存中进行管理。
2. 根据权利要求1所述的加速数据库查询速度的方法,其特征是所述的守护进程根据业务查询需求的内容,获取数据库中对应的数据,经过处理后形成逻辑表的记录用以上载;同时根据业务查询的要求,对逻辑表的记录建立索引和对应的查询方法;根据业务实际数据量建立对应大小的共享内存,将逻辑表的数据和索引以数组方式上载到共享内存中并进行管理。
3. 根据权利要求1所述的加速数据库查询速度的方法,其特征是在循环对数据库中的记录进行查询的过程中,业务进程连接指定的共享内存,根据系统提供的查询方法获取需要的数据,拷贝到进程内部内存进行操作,并限制修改共享内存中的数据。
4. 根据权利要求1所述的加速数据库查询速度的方法,其特征是所述的守护进程定时或者循环查询数据库记录修改时间,或者修改记录查询已经被修改的记录,完成内存数据库数据记录在共享内存的同步更新。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006100415486A CN100416568C (zh) | 2006-09-14 | 2006-09-14 | 一种加速数据库查询速度的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006100415486A CN100416568C (zh) | 2006-09-14 | 2006-09-14 | 一种加速数据库查询速度的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1924853A CN1924853A (zh) | 2007-03-07 |
CN100416568C true CN100416568C (zh) | 2008-09-03 |
Family
ID=37817494
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2006100415486A Expired - Fee Related CN100416568C (zh) | 2006-09-14 | 2006-09-14 | 一种加速数据库查询速度的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100416568C (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101901250A (zh) * | 2010-06-08 | 2010-12-01 | 中兴通讯股份有限公司 | 一种内存数据库及其数据处理方法 |
CN101957849A (zh) * | 2010-09-21 | 2011-01-26 | 用友软件股份有限公司 | 静态报表生成方法和装置 |
CN102024051B (zh) * | 2010-12-17 | 2012-12-05 | 北京世纪互联工程技术服务有限公司 | 分布式内存数据库数据更新方法 |
CN102323942B (zh) * | 2011-09-01 | 2013-04-10 | 北京中创信测科技股份有限公司 | 一种统计查询方法 |
CN102420814A (zh) * | 2011-11-21 | 2012-04-18 | 航天科工深圳(集团)有限公司 | 一种数据访问方法、装置及服务器 |
CN102929935B (zh) * | 2012-09-25 | 2016-01-13 | 上海证券交易所 | 一种基于事务的大容量数据读写方法 |
CN102981829B (zh) * | 2012-11-01 | 2015-10-21 | 宁波电业局 | 一种基于停电管理系统的图形数据展现方法及装置 |
CN103870511B (zh) * | 2012-12-18 | 2017-11-03 | 中国银联股份有限公司 | 基于共享内存的信息查询设备及方法 |
CN103500206A (zh) * | 2013-09-29 | 2014-01-08 | 北京华胜天成科技股份有限公司 | 基于文件存储数据的存储方法及装置 |
CN104636260B (zh) * | 2013-11-06 | 2018-03-06 | 深圳市风景智联科技有限公司 | 一种用于计费业务的数据管理方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030028552A1 (en) * | 2001-08-02 | 2003-02-06 | Pierce David Mark | System and method for a shared memory architecture for high speed logging and trending |
CN1581161A (zh) * | 2003-08-13 | 2005-02-16 | 华为技术有限公司 | 一种实现对数据库快速访问的方法 |
CN1740978A (zh) * | 2004-08-23 | 2006-03-01 | 华为技术有限公司 | 实现共享内存数据库的方法及内存数据库系统 |
US20060161539A1 (en) * | 2004-12-15 | 2006-07-20 | Masaaki Narita | Method and system of database management with shared area |
-
2006
- 2006-09-14 CN CNB2006100415486A patent/CN100416568C/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030028552A1 (en) * | 2001-08-02 | 2003-02-06 | Pierce David Mark | System and method for a shared memory architecture for high speed logging and trending |
CN1581161A (zh) * | 2003-08-13 | 2005-02-16 | 华为技术有限公司 | 一种实现对数据库快速访问的方法 |
CN1740978A (zh) * | 2004-08-23 | 2006-03-01 | 华为技术有限公司 | 实现共享内存数据库的方法及内存数据库系统 |
US20060161539A1 (en) * | 2004-12-15 | 2006-07-20 | Masaaki Narita | Method and system of database management with shared area |
Also Published As
Publication number | Publication date |
---|---|
CN1924853A (zh) | 2007-03-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100416568C (zh) | 一种加速数据库查询速度的方法 | |
CN100353325C (zh) | 实现共享内存数据库的方法及内存数据库系统 | |
CN102521405B (zh) | 支持高速加载的海量结构化数据存储、查询方法和系统 | |
KR101069350B1 (ko) | 클라이언트/서버 환경에서 동기화를 용이하게 하는 방법 및 컴퓨터 판독 가능 기록 매체 | |
CN106777225A (zh) | 一种数据的迁移方法和系统 | |
CN100574281C (zh) | 一种交换机路由表的管理方法 | |
US6859808B1 (en) | Mapping logical row identifiers for primary B+tree-like structures to physical row identifiers | |
CN105930387A (zh) | 一种基于数据路由、分库分表的数据操作系统及方法 | |
CN101110088A (zh) | 基于缓存技术的数据库访问接口方法 | |
CN105069134A (zh) | 一种Oracle统计信息自动收集方法 | |
CN104156396A (zh) | 大数据环境下提高数据库性能的方法及系统 | |
CN103514295A (zh) | 历史数据归档方法及历史数据归档装置 | |
CN101145158A (zh) | 一种数据库表分区的方法 | |
CN102629269A (zh) | 一种嵌入式数据库的检索及存储方法 | |
CN101587484B (zh) | 一种基于T-lt树的主存数据库的索引方法 | |
US9256659B1 (en) | Systems and methods for generating database identifiers based on database characteristics | |
US20110153580A1 (en) | Index Page Split Avoidance With Mass Insert Processing | |
CN109189798A (zh) | 一种基于spark同步更新数据的方法 | |
CN107220287A (zh) | 用于日志查询的索引管理方法、装置、存储介质及设备 | |
US7200625B2 (en) | System and method to enhance availability of a relational database | |
CN109213760B (zh) | 非关系数据存储的高负载业务存储及检索方法 | |
CN106649530B (zh) | 云详单查询管理系统及方法 | |
CN110209534B (zh) | 自动备份mysql数据库的系统及方法 | |
CN109815244A (zh) | 一种数据处理方法和装置 | |
CN101136029A (zh) | 主内存数据中心数据处理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20080903 Termination date: 20091014 |