CN102622361B - 一种数据库查询方法 - Google Patents

一种数据库查询方法 Download PDF

Info

Publication number
CN102622361B
CN102622361B CN2011100306263A CN201110030626A CN102622361B CN 102622361 B CN102622361 B CN 102622361B CN 2011100306263 A CN2011100306263 A CN 2011100306263A CN 201110030626 A CN201110030626 A CN 201110030626A CN 102622361 B CN102622361 B CN 102622361B
Authority
CN
China
Prior art keywords
namespace
query statement
buffer memory
key assignments
version value
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
Application number
CN2011100306263A
Other languages
English (en)
Other versions
CN102622361A (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 TVMINING CULTURE MEDIA CO., LTD.
Original Assignee
TVMining Beijing Media 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 TVMining Beijing Media Technology Co Ltd filed Critical TVMining Beijing Media Technology Co Ltd
Priority to CN2011100306263A priority Critical patent/CN102622361B/zh
Publication of CN102622361A publication Critical patent/CN102622361A/zh
Application granted granted Critical
Publication of CN102622361B publication Critical patent/CN102622361B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

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

Abstract

本发明公开了一种数据库查询方法,以查询语句进行第一次查询时,将查询语句对应的第一结果数据定义为第一命名空间,将第一版本值定义为第二命名空间,并存储在缓存中,如果第一结果数据对应的记录更新后,将缓存中第一版本值改为第二版本值,以所述查询语句进行第二次查询时,从缓存中获取查询语句对应版本值,将查询语句定义为第三命名空间,如果第三命名空间的键值与第一命名空间的键值相同,则将缓存中的第一结果数据作为第二次查询的结果数据,如果第三命名空间的键值与第一命名空间的键值不同,则从数据库中查询结果数据。采用了本发明的技术方案,能够极大地减少数据库的查询量,提供服务器性能,加快对用户的响应速度。

Description

一种数据库查询方法
技术领域
本发明涉及数据库技术领域,尤其涉及一种数据库查询方法。
背景技术
MYSQL是目前应用最广泛的开源关系数据库,以高并发,高效率著称。MYSQL为不同应用业务提供不同的数据库引擎,主要的数据库引擎有Myisam,InnoDB。Myisam管理非事务表,它提供高速存储和检索,以及全文搜索能力。InnoDB给MYSQL提供了具有提交、回滚和崩溃恢复能力的事务安全(ACID兼容)存储引擎。
目前MYSQL都是使用其内部的缓存系统。MYSQL在接收到查询语句时先对查询语句进行解析,然后根据解析完的数据去内存中查找是否有存在该查询语句的缓存,有的话则直接返回该缓存,没有的话,则再根据SQL语法去磁盘进行数据查询。
MYSQL的查询缓存是以每条查询语句为基本单位,以整个表的所有的查询缓存为管理单位。如果某一张数据表的任何一行数据发生变化,就会把整个数据表所涉及到的查询缓存全部清除。
在现实业务逻辑中,一条记录的更新,一般都只涉及到其中的几个查询缓存,而一个表的缓存大部分都是无关的,所以不应该被清除,导致相同的SQL要多次进行磁盘查询。
发明内容
本发明的目的在于提出一种数据库查询方法,能够极大地减少数据库的查询量,提供服务器性能,加快对用户的响应速度。
为达此目的,本发明采用以下技术方案:
一种数据库查询方法,适用于MYSQL数据库,包括以下步骤:
A、以查询语句进行第一次查询时,采用memcache的伪命名空间,将查询语句对应的第一结果数据定义为第一命名空间,第一命名空间的键值包括查询语句、第一版本值和原有的键,并存储在缓存中;
B、采用memcache的伪命名空间,将第一版本值定义为第二命名空间,第二命名空间的键值包括第一版本值和查询语句,并存储在缓存中;
C、如果第一结果数据对应的记录更新后,将缓存中第一版本值改为第二版本值;
D、以所述查询语句进行第二次查询时,从缓存中获取查询语句对应版本值,采用memcache的伪命名空间,将查询语句定义为第三命名空间,第三命名空间的键值包括查询语句、查询语句对应版本值和原有的键;
E、判断第三命名空间的键值,如果第三命名空间的键值与第一命名空间的键值相同,则将缓存中的第一结果数据作为第二次查询的结果数据,如果第三命名空间的键值与第一命名空间的键值不同,则从数据库中查询结果数据。
步骤E中,如果第三命名空间的键值与第一命名空间的键值不同,将缓存中的第一命名空间清除。
步骤C中,缓存中第一版本值加一后改为第二版本值。
步骤E还包括以下步骤:
将从数据库中查询的结果数据采用memcache的伪命名空间定义为第四命名空间,第四命名空间的键值包括查询语句、第二版本值和原有的键,并存储在缓存中。
采用了本发明的技术方案,能够极大地减少数据库的查询量,提高服务器性能,加快对用户的响应速度,减少服务器数量,降低成本。
附图说明
图1是本发明具体实施方式中数据库查询的流程图。
具体实施方式
下面结合附图并通过具体实施方式来进一步说明本发明的技术方案。
本发明技术方案的主要思想是利用memcache的伪命名空间,把相关的查询语句定义为一个命名空间,每次相关的记录被更新时,只清除相对应的命名空间内的缓存,而同一数据表的其它命名空间的缓存则不会被清除,这样就减少了大量SQL的磁盘操作。
其中,memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。memcache的伪命名空间:memcache是key-value的内存hash服务器,只能根据单个key来取值和删除。
图1是本发明具体实施方式中数据库查询的流程图。如图1所示,该适用于MYSQL数据库的查询流程包括:
步骤101、以查询语句进行第一次查询时,采用memcache的伪命名空间,将查询语句对应的第一结果数据定义为第一命名空间,第一命名空间的键值包括查询语句、第一版本值和原有的键,并存储在缓存中。
例如查找张三的照片,则输入查询语句“photo_张三”,把从数据库中获得的张三的照片数据,采用memcache的伪命名空间定义为命名空间,该命名空间的键值为“photo_张三_1_md5(sql)”,其中“photo_张三”是查询语句,“1”是版本值,“md5(sql)”是原有的键。
步骤102、同时,采用memcache的伪命名空间,将第一版本值定义为第二命名空间,第二命名空间的键值包括第一版本值和查询语句,并存储在缓存中。例如对于张三的照片,也将第一次查询的第一版本值“1”定义为一个命名空间,该命名空间的键值为“1_photo_张三”。
步骤103、如果第一结果数据对应的记录更新后,将缓存中第一版本值改为第二版本值。
如果张三的照片没有改变,则在缓存中保存的版本值不会发生变化。如果张三的照片发生了改变,则根据查询语句“photo_张三”查询到缓存中对应的版本值的命名空间,即“1_photo_张三”,将其中的版本值加一,变为“1_photo_张三”,其中“2”就是第二版本值。
步骤104、以所述查询语句进行第二次查询时,从缓存中获取查询语句对应版本值,采用memcache的伪命名空间,将查询语句定义为第三命名空间,第三命名空间的键值包括查询语句、查询语句对应版本值和原有的键。
当第二次以“photo_张三”作为查询语句查询张三的照片时,首先从缓存中查找到该查询语句对应的版本值,如果张三照片没有发生变化,则版本值为1,如果张三照片发生了变化,则版本值已经改为2。然后将查询语句定义为一个命名空间,该命名空间的键值为“photo_张三_2_md5(sql)”,其中“photo_张三”是查询语句,“2”是版本值,“md5(sql)”是原有的键。
步骤105、判断第三命名空间的键值,如果第三命名空间的键值与第一命名空间的键值相同,则将缓存中的第一结果数据作为第二次查询的结果数据,如果第三命名空间的键值与第一命名空间的键值不同,则从数据库中查询结果数据。
把为第二次查询语句定义的命名空间的键值与缓存中对应的键值进行对比,如果张三照片没有变化,第二次对张三照片的查询语句定义的命名空间的键值是“photo_张三_1_md5(sql)”,缓存中对应“photo_张三”的命名空间键值是“photo_张三_1_md5(sql)”,这样两个键值相同,就直接从缓存中取出结果数据,作为“photo_张三”作为查询语句的查询结果。
如果张三照片发生了变化,第二次对张三照片的查询语句定义的命名空间的键值是“photo_张三_2_md5(sql)”,缓存中对应“photo_张三”的命名空间键值是“photo_张三_1_md5(sql)”,两个键值不同,则再从数据库查询“photo_张三”,获得结果数据后反馈。同时将缓存中命名空间键值是“photo_张三_1_md5(sql)”的数据删除。
本步骤中,还要将从数据库中查询的结果数据采用memcache的伪命名空间定义为第四命名空间,第四命名空间的键值包括查询语句、第二版本值和原有的键,并存储在缓存中。
也就是说,还要把从数据库查询获得的结果数据定义一个命名空间,该命名空间的键值为“photo_张三_2_md5(sql)”,与第二次查询语句定义的命名空间键值相同,为后续的查询做准备。
如果张三的照片下面还区分了不同专辑,比如有专辑一、专辑二等,这样则把SQL查询做一定的关联。如下是数据库存储用户的相片的结构逻辑:用户——相册专辑——相片。
用户拥有多个相册专辑,然后相册专辑再存储相片。而业务逻辑是根据用户取相片,或是取某一个专辑下的相片,所以第一级以用户的ID为前缀的memcache命名空间key前缀为photo_userid_version,而第二级就再加上相册专辑的ID作为前缀:photo_userid_albumid_version,这时就可以按多级来存储数据库查询结果。
当查询用户ID为1的相片,则key为photo_1_1,而查询该用户下的id为2的专辑时则key为photo_1_album_2_1。
如果删除了该用户下的某一张图片,而又能知道这张图片是属于专辑为2,则再查询时更新该用户的相片命名空间的version,下一次要查询该用户下的相片,则其key为photo_1_2,所以该用户key为photo_1_1的图片的缓存就被清除,而属于同一个相片表的其它用户的相片则不会被清除缓存。
如果再查询时更新该图片所在专辑的version,下一次查询该专辑下的图片时key就为photo_1_album_2_2,key为photo_1_album_2_1的图片的缓存就被清除,该用户的其它专辑的缓存也不会被清除。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉该技术的人在本发明所揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

Claims (4)

1.一种数据库查询方法,适用于MYSQL数据库,其特征在于,包括以下步骤:
A、以查询语句进行第一次查询时,采用分布式的内存对象缓存系统memcache的伪命名空间,将查询语句对应的第一结果数据定义为第一命名空间,第一命名空间的键值包括查询语句、第一版本值和原有的键,并存储在缓存中;
B、采用分布式的内存对象缓存系统memcache的伪命名空间,将第一版本值定义为第二命名空间,第二命名空间的键值包括第一版本值和查询语句,并存储在缓存中;
C、如果第一结果数据对应的记录更新后,将缓存中第一版本值改为第二版本值;
D、以所述查询语句进行第二次查询时,从缓存中获取查询语句对应版本值,采用分布式的内存对象缓存系统memcache的伪命名空间,将查询语句定义为第三命名空间,第三命名空间的键值包括查询语句、查询语句对应版本值和原有的键;
E、判断第三命名空间的键值,如果第三命名空间的键值与第一命名空间的键值相同,则将缓存中的第一结果数据作为第二次查询的结果数据,如果第三命名空间的键值与第一命名空间的键值不同,则从数据库中查询结果数据。
2.根据权利要求1所述的一种数据库查询方法,其特征在于,步骤E中,如果第三命名空间的键值与第一命名空间的键值不同,将缓存中的第一命名空间清除。
3.根据权利要求1所述的一种数据库查询方法,其特征在于,步骤C中,缓存中第一版本值加一后改为第二版本值。
4.根据权利要求1所述的一种数据库查询方法,其特征在于,步骤E还包括以下步骤:
将从数据库中查询的结果数据采用memcache的伪命名空间定义为第四命名空间,第四命名空间的键值包括查询语句、第二版本值和原有的键,并存储在缓存中。
CN2011100306263A 2011-01-28 2011-01-28 一种数据库查询方法 Expired - Fee Related CN102622361B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2011100306263A CN102622361B (zh) 2011-01-28 2011-01-28 一种数据库查询方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2011100306263A CN102622361B (zh) 2011-01-28 2011-01-28 一种数据库查询方法

Publications (2)

Publication Number Publication Date
CN102622361A CN102622361A (zh) 2012-08-01
CN102622361B true CN102622361B (zh) 2013-11-27

Family

ID=46562284

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2011100306263A Expired - Fee Related CN102622361B (zh) 2011-01-28 2011-01-28 一种数据库查询方法

Country Status (1)

Country Link
CN (1) CN102622361B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107153688B (zh) * 2017-04-27 2020-11-17 努比亚技术有限公司 一种数据查询方法、设备及计算机存储介质
CN111143406A (zh) * 2018-11-06 2020-05-12 北京京东尚科信息技术有限公司 数据库数据比对方法和比对系统
CN109657174B (zh) * 2018-12-25 2023-06-02 北京百度网讯科技有限公司 用于更新数据的方法和装置
CN110737682A (zh) * 2019-10-17 2020-01-31 贝壳技术有限公司 一种缓存操作方法、装置、存储介质和电子设备
CN111090675B (zh) * 2019-11-22 2022-12-02 福建亿榕信息技术有限公司 多入口数据缓存方法及存储介质
CN113760965A (zh) * 2020-06-17 2021-12-07 北京沃东天骏信息技术有限公司 数据查询的方法和装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6298390B1 (en) * 1995-11-22 2001-10-02 Sun Microsystems, Inc. Method and apparatus for extending traditional operating systems file systems
CN101510209A (zh) * 2009-03-30 2009-08-19 北京金山软件有限公司 实现实时检索的方法、系统和服务器

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6298390B1 (en) * 1995-11-22 2001-10-02 Sun Microsystems, Inc. Method and apparatus for extending traditional operating systems file systems
CN101510209A (zh) * 2009-03-30 2009-08-19 北京金山软件有限公司 实现实时检索的方法、系统和服务器

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Cache and Consistency in NOSQL;Peng Xiang et al;《Proceedings of 2010 3rd IEEE International Conference on Computer Science and Information Technology》;20101231;第117至120页 *
Peng Xiang et al.Cache and Consistency in NOSQL.《Proceedings of 2010 3rd IEEE International Conference on Computer Science and Information Technology》.2010,第117至120页.

Also Published As

Publication number Publication date
CN102622361A (zh) 2012-08-01

Similar Documents

Publication Publication Date Title
CN109800222B (zh) 一种HBase二级索引自适应优化方法和系统
CN102622361B (zh) 一种数据库查询方法
JP5961689B2 (ja) 増分データの抽出
US8140495B2 (en) Asynchronous database index maintenance
CN108319654B (zh) 计算系统、冷热数据分离方法及装置、计算机可读存储介质
CN106484906B (zh) 一种分布式对象存储系统闪回方法及装置
US8892677B1 (en) Manipulating objects in hosted storage
US11269881B2 (en) Data query
US20070179941A1 (en) System and method for performing an inexact query transformation in a heterogeneous environment
US20130013890A1 (en) Database system
US20100306234A1 (en) Cache synchronization
CN108875042B (zh) 一种混合联机分析处理系统及数据查询方法
CN103384256A (zh) 一种云存储方法及装置
CN103631924B (zh) 一种分布式数据库平台的应用方法和系统
US20110040761A1 (en) Estimation of postings list length in a search system using an approximation table
US11151081B1 (en) Data tiering service with cold tier indexing
US11625412B2 (en) Storing data items and identifying stored data items
CN105159845A (zh) 存储器读取方法
CN102779138A (zh) 实时数据的硬盘存取方法
CN111723161A (zh) 一种数据处理方法、装置及设备
US20230325363A1 (en) Time series data layered storage systems and methods
US20120246132A1 (en) Managing overflow access records in a database
CN107291938A (zh) 订单查询系统及方法
Bao et al. Query optimization of massive social network data based on hbase
CN116049193A (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
ASS Succession or assignment of patent right

Owner name: SHANGHAI TIANMAI JUYUAN CULTURE AND MEDIA CO., LTD

Free format text: FORMER OWNER: TVMINING (BEIJING) MEDIA TECHNOLOGY CO., LTD.

Effective date: 20141226

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: 100007 DONGCHENG, BEIJING TO: 200436 ZHABEI, SHANGHAI

TR01 Transfer of patent right

Effective date of registration: 20141226

Address after: 200436, No. 166, No. three, 6 Shanghai Road, Zhabei District, China

Patentee after: SHANGHAI TVMINING CULTURE MEDIA CO., LTD.

Address before: 100007, room 2, building 28, No. 816 East Main Street, Dongcheng District, Beijing, Andingmen

Patentee before: TVMining (Beijing) Media Technology Co., Ltd.

PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: A database query method

Effective date of registration: 20201224

Granted publication date: 20131127

Pledgee: Inner Mongolia Huipu Energy Co.,Ltd.

Pledgor: SHANGHAI TIANMAI JUYUAN CULTURE MEDIA Co.,Ltd.

Registration number: Y2020990001505

PE01 Entry into force of the registration of the contract for pledge of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20131127

Termination date: 20210128

CF01 Termination of patent right due to non-payment of annual fee