CN109871372A - 一种结合数据库调优和程序调优的方法 - Google Patents

一种结合数据库调优和程序调优的方法 Download PDF

Info

Publication number
CN109871372A
CN109871372A CN201910085593.9A CN201910085593A CN109871372A CN 109871372 A CN109871372 A CN 109871372A CN 201910085593 A CN201910085593 A CN 201910085593A CN 109871372 A CN109871372 A CN 109871372A
Authority
CN
China
Prior art keywords
sql
sql statement
statement
application system
tuning
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.)
Granted
Application number
CN201910085593.9A
Other languages
English (en)
Other versions
CN109871372B (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.)
First Research Institute of Ministry of Public Security
Original Assignee
First Research Institute of Ministry of Public Security
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 First Research Institute of Ministry of Public Security filed Critical First Research Institute of Ministry of Public Security
Priority to CN201910085593.9A priority Critical patent/CN109871372B/zh
Publication of CN109871372A publication Critical patent/CN109871372A/zh
Application granted granted Critical
Publication of CN109871372B publication Critical patent/CN109871372B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

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

Abstract

本发明公开了一种结合数据库调优和程序调优的方法,包括如下步骤:S1、访问应用系统服务器;S2、调用SQL语句;S3、应用系统服务器读取SQL语句;S4、应用系统服务器调用SQL优化器优化SQL语句;S5、应用系统服务器进行程序优化;S6、重新执行优化后的应用系统。本发明将数据库调优和程序调优的过程有机融合在一起,促进了系统性能的调优。

Description

一种结合数据库调优和程序调优的方法
技术领域
本发明涉及数据库技术领域,具体涉及一种结合数据库调优和程序调优的方法。
背景技术
现在市面上常见的系统很多都是一个页面里附带着一个或多个数据库请求的,比如目录页面、树节点页面、查询条件页面、报表等。访问这样的页面往往都伴随数据库请求,多次刷新同一个页面时相应的数据库请求也会使用同一个SQL去多次查询数据库。此时所有的查询都下发到数据库会加剧拥塞,给数据库造成不必要的负担
对于同一个数据查询,比如当前登录用户个人信息,有可能会存在一次请求中多个地方都需要,比如控制器中,需要根据用户角色做权限判断,view中需要显示用户信息,model中需要使用这个用户的ID来查询关联数据,类库中要使用这个用户的邮箱来发邮件等。如果每次使用这个用户信息时,都去查库,对性能有比较大的影响。
发明内容
针对现有技术的不足,本发明旨在提供一种结合数据库调优和程序调优的方法,在PL/SQL集成化开发调试环境下读出SQL源语句,重新执行该程序,得到优化好的数据结果,优化好的数据结果会存储在Ehcache缓存中,当有相同的sql语句调用时,会从缓存直接取出结果,不再重新查询数据库。
为了实现上述目的,本发明采用如下技术方案:
一种结合数据库调优和程序调优的方法,包括如下步骤:
S1、访问应用系统服务器;
S2、调用SQL语句;
S3、应用系统服务器读取SQL语句;
S4、应用系统服务器调用SQL优化器优化SQL语句;
S5、应用系统服务器进行程序优化;
S6、重新执行优化后的应用系统;
其中步骤S4的具体过程为:
S4.1、由URL请求发起SQL请求;
S4.2、SQL语法优化器对SQL源语句进行分解,找出关键字,对该SQL源语句进行重构,生成设定数量的SQL语句;
S4.3、对步骤S4.2中生成的SQL语句在开发调试环境下进行数据库验证,验证生成的SQL语句的有效性;
S4.4、对步骤S4.3中验证有效的每条SQL语句顺序执行;每执行一次,输出执行时间、cpu占用时间和对I/0的操作情况并写到一个文件中;
S4.5、SQL语句执行完毕后,将步骤S4.4得到文件中的指标按执行时间进行升序排列,并将排列结果输出到另一个文件中,执行时间最短的在第一行;
S4.6、打开步骤S4.5中得到的所述另一个文件,取出第一行SQL语句,并将此SQL语句替换SQL源语句,得到优化后的SQL语句;
步骤S5的具体过程为:
S5.1、判断是否有想用的SQL语句正在查询;
S5.2、当没有相同的SQL语句正在查询时,通过SQL优化器对想用的SQL语句进行优化,利用优化后的最佳SQL语句进行查询并将数据库查询结果存储在Ehcache缓存中;所述通过SQL优化器对想用的SQL语句进行优化的过程和步骤S4的具体过程相同;
当有相同的SQL语句被查询时,等待获取Ehcache缓存生成的结果集。
进一步地,步骤S4.3中,所述开发调试环境为PL/SQL集成化开发调试环境。
进一步地,步骤S4.5中,在将步骤S4.4得到文件中的指标按执行时间进行排序时,如果执行时间相同则按照cpu占用时间升序排列。
进一步地,步骤S5.2中,所述当有相同的SQL语句被查询时,等待获取Ehcache缓存生成的结果集的具体过程为:
当有相同的SQL语句被查询时,循环等待Ehcache缓存生成的结果集,当获取到结果集后结束等待;当等待时间超长时,返回超时异常并结束。
进一步地,步骤S4还包括有:
S4.7、优化后的SQL语句会保存到一个SQL语句样例库。
本发明的有益效果在于:
1、本发明将数据库调优和程序调优的过程有机融合在一起,促进了系统性能的调优;
2、本发明将多次相同SQL请求合并成一次,缩短了数据库访问时间,大大降低数据库的负担;
3、本发明不需要直接修改代码,也不需专业的SQL工具,就能进行SQL优化,降低了非数据库专业人员的操作要求;
4、本发明将SQL优化作为系统优化、数据库优化的一部分,缩小系统调优时间。
附图说明
图1为本发明方法的总体实施流程图;
图2为本发明方法中SQL优化的流程示意图;
图3为本发明方法中程序优化的流程示意图。
具体实施方式
以下将结合附图对本发明作进一步的描述,需要说明的是,本实施例以本技术方案为前提,给出了详细的实施方式和具体的操作过程,但本发明的保护范围并不限于本实施例。
本实施例提供一种结合数据库调优和程序调优的方法,如图1所示,包括如下步骤:
S1、访问应用系统服务器;
S2、调用SQL语句;
S3、应用系统服务器读取SQL语句;
S4、应用系统服务器调用SQL优化器优化SQL语句;
S5、应用系统服务器进行程序优化;
S6、重新执行优化后的应用系统;
如图2所示,其中步骤S4的具体过程为:
S4.1、由URL请求发起SQL请求;
S4.2、SQL语法优化器对SQL源语句进行分解,找出关键字,对该SQL源语句进行重构,生成设定数量的SQL语句;
S4.3、对步骤S4.2中生成的SQL语句在开发调试环境下进行数据库验证,验证生成的SQL语句的有效性;
S4.4、对步骤S4.3中验证有效的每条SQL语句顺序执行;每执行一次,输出执行时间、cpu占用时间和对I/0的操作情况并写到一个文件中;
S4.5、SQL语句执行完毕后,将步骤S4.4得到文件中的指标按执行时间进行升序排列(如果执行时间相同则按照cpu占用时间升序排列),并将排列结果输出到另一个文件中,执行时间最短的在第一行;
S4.6、打开步骤S4.5中得到的所述另一个文件,取出第一行SQL语句,并将此SQL语句替换SQL源语句,得到优化后的SQL语句;
S4.7、优化后的SQL语句会保存到一个SQL语句样例库中,方便相关人员学习并查询。
如图3所示,步骤S5的具体过程为:
S5.1、判断是否有想用的SQL语句正在查询(亦即是否是第一次查询);
S5.2、当没有相同的SQL语句正在查询时,通过SQL优化器对想用的SQL语句进行优化,利用优化后的最佳SQL语句进行查询并将数据库查询结果存储在Ehcache缓存中;所述通过SQL优化器对想用的SQL语句进行优化的过程和步骤S4的具体过程相同;
当有相同的SQL语句被查询时,循环等待Ehcache缓存生成的结果集,当获取到结果集后结束等待;当等待时间超长时,返回超时异常并结束。
结果集会在具体应用中消费掉。
例如:有一个页面里的SQL查询时间为5s,当用户在这5秒钟内连续刷新页面。那么,第一次SQL会直接查询数据库并在5秒后返回结果集并存如缓存;之后的SQL都会等待第一次的结果集,当第一次的SQL结果集放入缓存后,等待的SQL从缓存中取出结果集并结束等待。另外,如果第一次SQL查询未返回结果集,之后的SQL等待不到结果集会返回超时异常。
对于本领域的技术人员来说,可以根据以上的技术方案和构思,给出各种相应的改变和变形,而所有的这些改变和变形,都应该包括在本发明权利要求的保护范围之内。

Claims (5)

1.一种结合数据库调优和程序调优的方法,其特征在于,包括如下步骤:
S1、访问应用系统服务器;
S2、调用SQL语句;
S3、应用系统服务器读取SQL语句;
S4、应用系统服务器调用SQL优化器优化SQL语句;
S5、应用系统服务器进行程序优化;
S6、重新执行优化后的应用系统;
其中步骤S4的具体过程为:
S4.1、由URL请求发起SQL请求;
S4.2、SQL语法优化器对SQL源语句进行分解,找出关键字,对该SQL源语句进行重构,生成设定数量的SQL语句;
S4.3、对步骤S4.2中生成的SQL语句在开发调试环境下进行数据库验证,验证生成的SQL语句的有效性;
S4.4、对步骤S4.3中验证有效的每条SQL语句顺序执行;每执行一次,输出执行时间、cpu占用时间和对I/0的操作情况并写到一个文件中;
S4.5、SQL语句执行完毕后,将步骤S4.4得到文件中的指标按执行时间进行升序排列,并将排列结果输出到另一个文件中,执行时间最短的在第一行;
S4.6、打开步骤S4.5中得到的所述另一个文件,取出第一行SQL语句,并将此SQL语句替换SQL源语句,得到优化后的SQL语句;
步骤S5的具体过程为:
S5.1、判断是否有想用的SQL语句正在查询;
S5.2、当没有相同的SQL语句正在查询时,通过SQL优化器对想用的SQL语句进行优化,利用优化后的最佳SQL语句进行查询并将数据库查询结果存储在Ehcache缓存中;所述通过SQL优化器对想用的SQL语句进行优化的过程和步骤S4的具体过程相同;
当有相同的SQL语句被查询时,等待获取Ehcache缓存生成的结果集。
2.根据权利要求1所述的方法,其特征在于,步骤S4.3中,所述开发调试环境为PL/SQL集成化开发调试环境。
3.根据权利要求1所述的方法,其特征在于,步骤S4.5中,在将步骤S4.4得到文件中的指标按执行时间进行排序时,如果执行时间相同则按照cpu占用时间升序排列。
4.根据权利要求1所述的方法,其特征在于,步骤S5.2中,所述当有相同的SQL语句被查询时,等待获取Ehcache缓存生成的结果集的具体过程为:
当有相同的SQL语句被查询时,循环等待Ehcache缓存生成的结果集,当获取到结果集后结束等待;当等待时间超长时,返回超时异常并结束。
5.根据权利要求1所述的方法,其特征在于,步骤S4还包括有:
S4.7、优化后的SQL语句会保存到一个SQL语句样例库。
CN201910085593.9A 2019-01-29 2019-01-29 一种结合数据库调优和程序调优的方法 Active CN109871372B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910085593.9A CN109871372B (zh) 2019-01-29 2019-01-29 一种结合数据库调优和程序调优的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910085593.9A CN109871372B (zh) 2019-01-29 2019-01-29 一种结合数据库调优和程序调优的方法

Publications (2)

Publication Number Publication Date
CN109871372A true CN109871372A (zh) 2019-06-11
CN109871372B CN109871372B (zh) 2021-01-19

Family

ID=66918255

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910085593.9A Active CN109871372B (zh) 2019-01-29 2019-01-29 一种结合数据库调优和程序调优的方法

Country Status (1)

Country Link
CN (1) CN109871372B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114638690A (zh) * 2022-03-28 2022-06-17 中国银行股份有限公司 行业信用数据处理方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104731597A (zh) * 2015-03-30 2015-06-24 上海华力微电子有限公司 将sql语句应用于工程软件编辑平台的方法
CN105512222A (zh) * 2015-11-30 2016-04-20 中国建设银行股份有限公司 数据查询方法及系统和数据读取方法及系统
CN105653607A (zh) * 2015-12-23 2016-06-08 北京奇虎科技有限公司 Sql日志收集分析方法及装置
CN108197306A (zh) * 2018-01-30 2018-06-22 平安科技(深圳)有限公司 Sql语句处理方法、装置、计算机设备和存储介质
US10127277B2 (en) * 2015-07-31 2018-11-13 International Business Machines Corporation Outer join optimizations in database management systems

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104731597A (zh) * 2015-03-30 2015-06-24 上海华力微电子有限公司 将sql语句应用于工程软件编辑平台的方法
US10127277B2 (en) * 2015-07-31 2018-11-13 International Business Machines Corporation Outer join optimizations in database management systems
CN105512222A (zh) * 2015-11-30 2016-04-20 中国建设银行股份有限公司 数据查询方法及系统和数据读取方法及系统
CN105653607A (zh) * 2015-12-23 2016-06-08 北京奇虎科技有限公司 Sql日志收集分析方法及装置
CN108197306A (zh) * 2018-01-30 2018-06-22 平安科技(深圳)有限公司 Sql语句处理方法、装置、计算机设备和存储介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114638690A (zh) * 2022-03-28 2022-06-17 中国银行股份有限公司 行业信用数据处理方法及装置

Also Published As

Publication number Publication date
CN109871372B (zh) 2021-01-19

Similar Documents

Publication Publication Date Title
US8732163B2 (en) Query optimization with memory I/O awareness
US6618719B1 (en) Database system with methodology for reusing cost-based optimization decisions
US6009265A (en) Program product for optimizing parallel processing of database queries
CN100424696C (zh) 处理抽象查询的方法和系统
US7895151B2 (en) Fast bulk loading and incremental loading of data into a database
US7272591B1 (en) Method and system for updating value correlation optimizations
US20190236188A1 (en) Query optimizer constraints
US7831620B2 (en) Managing execution of a query against a partitioned database
US8224807B2 (en) Enhanced utilization of query optimization
US20180089268A1 (en) Method and apparatus for optimizing query in data engine
US9171036B2 (en) Batching heterogeneous database commands
CN112988782B (zh) Hive支持交互式查询的方法、装置及存储介质
US11934397B2 (en) Query plan overrides
CN113227999A (zh) 微服务数据聚合搜索引擎更新
US20100036804A1 (en) Maintained and Reusable I/O Value Caches
US11960479B2 (en) Processing iterative query constructs in relational databases
US8239383B2 (en) System and method for managing execution of queries against database samples
CN109871372A (zh) 一种结合数据库调优和程序调优的方法
Floratos et al. Sqloop: High performance iterative processing in data management
US11507575B2 (en) Complex query rewriting
Chao-Qiang et al. RDDShare: reusing results of spark RDD
JP5084750B2 (ja) データベース・システムにおける統計ビューの管理
Rietveld et al. Reducing layered database applications to their essence through vertical integration
Pankratius et al. Moving database systems to multicore: An auto-tuning approach
US11722579B2 (en) Dependency management for shared data objects in a database system

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant