CN1801145A - 一种提高应用系统访问数据库效率的方法 - Google Patents
一种提高应用系统访问数据库效率的方法 Download PDFInfo
- Publication number
- CN1801145A CN1801145A CN 200510037628 CN200510037628A CN1801145A CN 1801145 A CN1801145 A CN 1801145A CN 200510037628 CN200510037628 CN 200510037628 CN 200510037628 A CN200510037628 A CN 200510037628A CN 1801145 A CN1801145 A CN 1801145A
- Authority
- CN
- China
- Prior art keywords
- dbms
- sql
- statement
- database connection
- service device
- 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.)
- Pending
Links
Images
Abstract
本发明旨在提供一种提高应用系统访问数据库效率的方法,用于数据库访问技术领域,包括以下步骤:设置数据库连接服务器模块,该模块与DBMS系统连接,各个客户端通过数据库连接服务器模块发起SQL语句请求;数据库连接服务器模块分析处理收到的SQL语句请求;数据库连接服务器模块调用DBMS API绑定分析出来的常数及其类型,调用DBMS API执行新SQL语句请求;DBMS系统返回SQL执行结果给数据库连接服务器模块,数据库连接服务器模块再把结果响应给提起请求的客户端。本发明可大大减少DBMS系统对SQL语句分析编译所占用的资源,提高了DBMS系统对请求响应的时间,进而提高了应用系统的运行效率。
Description
技术领域
本发明涉及数据库技术,尤其涉及数据库访问技术。
背景技术
计算机数据库系统在现代生产领域应用广泛,尤其是DBMS系统(数据库管理系统)广泛应用于如电信、银行等各行业的大型计算机系统。这些应用的典型使用方法是:设置中央DBMS数据库,由客户端应用(软件)连接到中央DBMS数据库,以请求一响应的方式实现具体的功能。使用这类方法,客户端可以直接使用DBMS产品的SQL(结构化查询语言)语句,能够方便快速地实现应用系统,也使得各个客户端能够以修改SQL语句的方式灵活地实现不同的功能。
DBMS系统对SQL语句的处理有如下的特点:在一次实例运行中,对完全相同的语句(包括字母大小写、中间空白字符),只在第一次收到SQL请求时做一次分析、编译,以后就重复使用这一分析编译的结果,而对不相同的语句,则每次都要分析、编译。这一特点体现在专门处理大话务量呼叫等场合(每秒访问数据库500次以上),使用相同语句、不同语句的效果差别是非常巨大的,甚至是影响到应用系统能否正常运行。上述架构下,设法让应用系统使用尽量少的SQL语句(或者说让应用系统尽量使用相同的SQL语句)就成了必须解决的问题。
发明内容
本发明的目的是提供一种提高应用系统访问数据库效率的方法,使得应用系统高效地使用DBMS数据库。
一种提高应用系统访问数据库效率的方法,包括以下步骤:
步骤一,设置数据库连接服务器模块,该模块与DBMS系统连接,各个客户端通过数据库连接服务器模块发起SQL语句请求;
步骤二,数据库连接服务器模块分析处理收到的SQL语句请求;
步骤三,数据库连接服务器模块调用DBMS API(应用编程接口)绑定分析出来的常数及其类型,调用DBMS API执行新SQL语句请求;
步骤四,DBMS系统返回SQL执行结果给数据库连接服务器模块,数据库连接服务器模块再把结果响应给提起请求的客户端。
进一步地,步骤二中的分析处理过程包括:查找SQL中的常数,判断并记录常数数据类型,取出常数值,对查找到的常数按顺序编号,重新构造SQL语句。
进一步地,重新构造SQL语句包括去除多余的分隔符如空白字符。
相较于现有技术,本发明可以最大程度地使得提交到DBMS系统的SQL语句是相同的,即客户端虽然发送了两条语义相同、参数不同的SQL语句,通过本发明方法保证DBMS系统收到的是相同的SQL语句,这样就使得DBMS系统大大减少了对SQL语句分析编译所占用的资源,提高了DBMS系统对请求响应的时间,进而提高了应用系统的运行效率。
附图说明
图1是应用本发明的系统组成示意图;
图2是本发明的处理流程图。
具体实施方式
下面结合附图对技术方案的实施作进一步的详细描述:
图1是应用本发明的系统组成示意图,如图1所示,为了保证原有应用系统任意数量的客户端连接数据库、客户端灵活使用DBMS系统的SQL,应用本发明的系统在客户端和DBMS系统之间增加了一个或若干个数据库连接服务器(模块)。客户端仍按DBMS系统的语法编写SQL语句,然后把SQL语句请求发送给数据库连接服务器模块,由数据库连接服务器模块分析处理客户端提交的SQL语句请求,重新向DBMS系统发送新的SQL语句请求,最后把DBMS响应的结果返回给客户端。
采用上述系统结构,既能保证原有应用系统任意数量的客户端连接数据库,又能保持客户端灵活使用DBMS系统的SQL的特征,基本上不会影响原有应用系统的功能,同时数据库连接服务器模块除了起到分析处理SQL语句以提高数据库效率的功能之外,还简化了DBMS系统对客户端连接的管理,从而降低了应用系统的复杂度。
下面结合图2,对本发明方法的处理流程做说明:
应用本发明的系统特征为:数据库连接服务器模块与DBMS系统连接,各个客户端与数据库连接服务器模块相连接,数据库连接服务器模块接收客户端发起的SQL语句请求。本发明包括以下步骤:
第一步,数据库连接服务器模块等待接收客户端的SQL语句请求,这一步骤的实现可以根据应用系统的实现方式而采取进程间通讯、网络通讯等方式。例如,使用一支进程实现这一步骤,则数据库连接服务器模块、客户端分别是一支子程序;当在UNIX操作系统上设计软件,服务器模块使用进程A实现,客户端使用进程B、C、D...,进程A与进程B、C、D...之间则可以使用message queue(消息队列)通讯:客户端向消息队列发送SQL,数据库连接服务器模块读取消息队列取得客户端发来的SQL。又如,数据库连接服务器模块与客户端运行在不同的计算机设备上,则可通过TCP SOCKET API接口来实现软件,由数据库连接服务器模块做为server,客户端作为client。数据库连接服务器模块收到客户端的SQL请求后,转下一步;以下的第二步到第八步是数据库连接服务器模块实现的功能。
第二步,查找SQL中的常数。以如下的SQL语句为例:
SELECT F1,F2 FROM MYTAB1 WHERE F3=100 AND F4=’ABCD’;
这一语句中,“100”、“‘ABCD’”就是常数。查找常数需要结合SQL语法及应用系统使用的SQL特点来判断,如“=”、“>”等等之后的数字、带引号的字符串等。
第三步,判断并记录常数数据类型。查找到SQL中的常数之后,需要记录下各个常数的数据类型。记录方法可以如下:使用一个字符数组,按序用一个字母表示数据类型,比如用‘N’表示NUMBER,用‘C’表示字符串等。
第四步,记录常数值。如同第三步,对找到的常数值也存储到一个数据结构中,也可以象第三步中那样用数组的方式来存储。
第五步,对查找到的常数按顺序编号,编号的目的是为了便于下一步重新构造SQL语句,也是为了便于顺序处理每一个常数。
第六步,重新构造SQL语句,这一步骤包括去除多余的分隔符如空白字符等,并按DBMS的语法替换其中的常数为占位符。占位符的构造可以用字母和第五步中的常数编号相结合的方法,例如对第二步中的语句,重新构造的结果如下:
SELECT F1,F2 FROM MYTAB1 WHERE F3=:A1 AND F4=:A2。
第七步,数据库连接服务器模块调用DBMS API绑定分析出来的常数及其类型。这里,API的语法一般是同具体的DBMS产品相关的,例如有的DBMS系统提供的绑定常数值的API为:swordOCIBindByPos(OCIStmt *stmtp,OCIBind **bindpp,OCIError*errhp,ub4 position,dvoid *valuep,sb4 value_sz,ub2 dty,dvoid *indp,ub2*alenp,ub2 *rcodep,ub4 maxarr_len,ub4 *curelep,ub4 mode)。(注:这是ORACLE公司的数据库产品ORACLE 9i提供的API函数-ORACLE称之为OCI,它的功能是把SQL语句中的占位符与其表示的常数绑定起来,绑定的方法是指定占位符在一个SQL语句中的位置,然后填写对应的常数;这一函数要求的参数依次为:指向SQL语句的指针,专用于绑定操作的指针,运行出错时的错误信息指针,占位符的位置顺序号,对应占位符的参数值,参数值的长度,参数值的类型,参数是单个变量还是数组,若参数是数组时数组的长度,若参数是数组时存储返回值的数组指针,语句中与当前参数类型相同的参数最多有几个,数组中元素的个数,绑定模式)。
第八步,调用DBMS API执行新SQL。这里,API的语法一般是同具体的DBMS产品相关的,例如有DBMS系统提供的执行SQL的API为:sword OCIStmtExecute(OCISvcCtx *svchp,OCIStmt*stmtp,OCIError *errhp,ub4 iters,ub4 rowoff,CONST OCISnapshot*snap_in,OCISnapshot *snap_out,ub4 mode)。(注:这是ORACLE公司的数据库产品ORACLE 9i提供的API函数-ORACLE称之为OCI,它的功能是请求数据库服务器程序执行一个SQL语句;这一函数要求的参数依次为:指向SQL语句的指针,指向数据库服务的指针,运行出错时的错误信息指针,要求服务器在SELECT语句时返回的记录行数,语句被叫执行的起始行号,SNAPSHOT入参,SNAPSHOT出参,执行模式)。
第九步,DBMS系统返回SQL执行结果给服务器模块,服务器模块接收DBMS系统返回的结果需要调用DBMS的API;收到DBMS系统反馈的结果后,数据库连接服务器模块再响应提起请求的客户端。数据库连接服务器模块响应客户端的方法同第一步相似。
从上面的实施例中可以看出,通过本发明方法,最大程度地使得提交到DBMS系统的SQL语句是相同的:虽然客户端发送了两条语义相同、参数不同的SQL语句,本发明方法仍保证DBMS系统收到的是相同的SQL语句。这样就使得DBMS系统大大减少了对SQL语句分析编译所占用的资源开销,提高了DBMS对请求响应的时间,进而提高了应用系统的运行效率。另外,本发明的方法基本上不会影响原有应用系统的功能、不会破坏原有系统的设计,同时还简化了DBMS对客户端连接的管理,从而降低了应用系统的复杂度。
当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
Claims (3)
1.一种提高应用系统访问数据库效率的方法,包括以下步骤:
步骤一,设置数据库连接服务器模块,该模块与数据库管理系统连接,各个客户端通过数据库连接服务器模块发起结构化查询语言语句请求;
步骤二,数据库连接服务器模块分析处理收到的结构化查询语言语句请求;
步骤三,数据库连接服务器模块调用数据库管理系统应用编程接口绑定分析出来的常数及其类型,调用数据库管理系统应用编程接口执行新结构化查询语言语句请求;
步骤四,数据库管理系统返回结构化查询语言语句请求执行结果给数据库连接服务器模块,数据库连接服务器模块再把结果响应给提起请求的客户端。
2.根据权利要求1所述的方法,其特征在于,步骤二中的分析处理过程包括:查找结构化查询语言语句中的常数,判断并记录常数数据类型,取出常数值,对查找到的常数按顺序编号,重新构造结构化查询语言语句。
3.根据权利要求1所述的方法,其特征在于,重新构造结构化查询语言语句包括去除多余的分隔符如空白字符。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200510037628 CN1801145A (zh) | 2005-01-06 | 2005-01-06 | 一种提高应用系统访问数据库效率的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200510037628 CN1801145A (zh) | 2005-01-06 | 2005-01-06 | 一种提高应用系统访问数据库效率的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1801145A true CN1801145A (zh) | 2006-07-12 |
Family
ID=36811153
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200510037628 Pending CN1801145A (zh) | 2005-01-06 | 2005-01-06 | 一种提高应用系统访问数据库效率的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1801145A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100535905C (zh) * | 2007-06-08 | 2009-09-02 | 北京神舟航天软件技术有限公司 | 去除sql查询语句恒条件的方法 |
WO2011157180A3 (zh) * | 2011-06-03 | 2012-05-10 | 华为技术有限公司 | 一种在线应用处理方法、装置及系统 |
CN101782910B (zh) * | 2009-01-15 | 2013-02-06 | 盛冠商务咨询(上海)有限公司 | SQLite可视化管理方法 |
CN103092970A (zh) * | 2013-01-24 | 2013-05-08 | 华为技术有限公司 | 一种数据库操作方法及设备 |
CN102918819B (zh) * | 2011-06-03 | 2016-11-30 | 华为技术有限公司 | 一种在线应用处理方法、装置及系统 |
CN106959956A (zh) * | 2016-01-11 | 2017-07-18 | 阿里巴巴集团控股有限公司 | 数据库间的语句转换方法和装置 |
CN108259259A (zh) * | 2016-12-29 | 2018-07-06 | 北京国双科技有限公司 | 集群稳定性诊断方法和装置 |
CN109743179A (zh) * | 2018-12-29 | 2019-05-10 | 广州市中智软件开发有限公司 | 一种电子证照按需签发方法 |
CN110442602A (zh) * | 2019-07-02 | 2019-11-12 | 新华三大数据技术有限公司 | 数据查询方法、装置、服务器及存储介质 |
-
2005
- 2005-01-06 CN CN 200510037628 patent/CN1801145A/zh active Pending
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100535905C (zh) * | 2007-06-08 | 2009-09-02 | 北京神舟航天软件技术有限公司 | 去除sql查询语句恒条件的方法 |
CN101782910B (zh) * | 2009-01-15 | 2013-02-06 | 盛冠商务咨询(上海)有限公司 | SQLite可视化管理方法 |
WO2011157180A3 (zh) * | 2011-06-03 | 2012-05-10 | 华为技术有限公司 | 一种在线应用处理方法、装置及系统 |
CN102918819A (zh) * | 2011-06-03 | 2013-02-06 | 华为技术有限公司 | 一种在线应用处理方法、装置及系统 |
CN102918819B (zh) * | 2011-06-03 | 2016-11-30 | 华为技术有限公司 | 一种在线应用处理方法、装置及系统 |
CN103092970A (zh) * | 2013-01-24 | 2013-05-08 | 华为技术有限公司 | 一种数据库操作方法及设备 |
CN106959956A (zh) * | 2016-01-11 | 2017-07-18 | 阿里巴巴集团控股有限公司 | 数据库间的语句转换方法和装置 |
CN108259259A (zh) * | 2016-12-29 | 2018-07-06 | 北京国双科技有限公司 | 集群稳定性诊断方法和装置 |
CN109743179A (zh) * | 2018-12-29 | 2019-05-10 | 广州市中智软件开发有限公司 | 一种电子证照按需签发方法 |
CN109743179B (zh) * | 2018-12-29 | 2022-04-05 | 广州市中智软件开发有限公司 | 一种电子证照按需签发方法 |
CN110442602A (zh) * | 2019-07-02 | 2019-11-12 | 新华三大数据技术有限公司 | 数据查询方法、装置、服务器及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1801145A (zh) | 一种提高应用系统访问数据库效率的方法 | |
US6112196A (en) | Method and system for managing connections to a database management system by reusing connections to a database subsystem | |
JP5431513B2 (ja) | コマンド索引のためのローカル記憶装置および拡張記憶装置を使用したコマンドスクリプトの解釈 | |
US8521748B2 (en) | System and method for managing metadata in a relational database | |
JP2002533842A (ja) | 問合せ処理方法 | |
US20070094270A1 (en) | Method and apparatus for the processing of heterogeneous units of work | |
CN111737977B (zh) | 数据字典生成方法、数据查询方法、装置、设备及介质 | |
US20060294076A1 (en) | System and method for query planning and execution | |
US20090204593A1 (en) | System and method for parallel retrieval of data from a distributed database | |
US20130282648A1 (en) | Deterministic finite automaton minimization | |
US20070094023A1 (en) | Method and apparatus for processing heterogeneous units of work | |
CN107122203B (zh) | 一种配置文件的设置方法及装置 | |
CN111443901A (zh) | 一种基于Java反射的业务扩展方法及装置 | |
CN112445776B (zh) | 基于Presto的动态分桶方法、系统、设备及可读存储介质 | |
US11269821B2 (en) | Method and system for generating schemas | |
US20100122241A1 (en) | Executable template | |
CN103186384A (zh) | 一种面向业务组件的软件设计分析系统及其使用方法 | |
CN1251067C (zh) | 一种减少结构化查询语言解释器占用系统资源的方法 | |
CN1851656A (zh) | 一种基于数据库操作的自动化测试方法 | |
US6493710B1 (en) | Method and apparatus for reducing costs associated with manipulating data | |
CN113608724B (zh) | 一种基于模型缓存实现的离线仓库实时交互方法与系统 | |
CN1525714A (zh) | 一种asn.1协议处理器 | |
CN115756520A (zh) | 一种分布式集群中的FlinkSQL部署方法及装置 | |
JP2002342078A (ja) | プログラム開発システム及び方法 | |
US20090043744A1 (en) | System for distributed communications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |