CN109871372A - 一种结合数据库调优和程序调优的方法 - Google Patents
一种结合数据库调优和程序调优的方法 Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 34
- 230000001174 ascending effect Effects 0.000 claims description 6
- 238000012795 verification Methods 0.000 claims 1
- 238000005457 optimization Methods 0.000 description 10
- 235000013399 edible fruits Nutrition 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
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语句样例库。
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114638690A (zh) * | 2022-03-28 | 2022-06-17 | 中国银行股份有限公司 | 行业信用数据处理方法及装置 |
Citations (5)
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 |
-
2019
- 2019-01-29 CN CN201910085593.9A patent/CN109871372B/zh active Active
Patent Citations (5)
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)
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 |