shardingsphere5.0 解决第一次执行sql慢的问题
springboot项目集成了shardingsphere5.0项目启动后,第一次执行sql查询特别慢,而之后的查询就响应比较快速。此处用了一个投机取巧的方法解决第一次查询慢的问题,就是项目启动后,执行一个select x 命令
import org.antlr.v4.runtime.tree.ParseTree;
import org.apache.shardingsphere.infra.database.type.DatabaseType;
import org.apache.shardingsphere.infra.database.type.DatabaseTypeRegistry;
import org.apache.shardingsphere.infra.executor.sql.execute.engine.driver.jdbc.sane.JDBCSaneQueryResultEngineFactory;
import org.apache.shardingsphere.infra.parser.sql.SQLStatementParserEngineFactory;
import org.apache.shardingsphere.sql.parser.api.CacheOption;
import org.apache.shardingsphere.sql.parser.api.SQLParserEngine;
import org.apache.shardingsphere.sql.parser.api.SQLVisitorEngine;
import org.apache.shardingsphere.sql.parser.api.parser.SQLParser;
import org.apache.shardingsphere.sql.parser.core.ParseASTNode;
import org.apache.shardingsphere.sql.parser.core.SQLParserFactory;
import org.apache.shardingsphere.sql.parser.core.database.parser.DatabaseTypedSQLParserFacadeRegistry;
import org.apache.shardingsphere.sql.parser.core.database.visitor.SQLVisitorFactory;
import org.apache.shardingsphere.sql.parser.core.database.visitor.SQLVisitorRule;
import org.apache.shardingsphere.sql.parser.spi.DatabaseTypedSQLParserFacade;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Component;import java.util.Properties;/*** 提前解析一条公共的 sql 项目启动后解决sharding框架,第一次解析sql慢的问题*/
@Component
public class ShardingLoadConfig implements InitializingBean {@Overridepublic void afterPropertiesSet() throws Exception {System.out.println("ShardingLoadConfig....");
// // 提前解析一条公共的 sqlString databaseType = "MySQL";String sql = "select 'X'";//方法1DatabaseTypedSQLParserFacade sqlParserFacade = DatabaseTypedSQLParserFacadeRegistry.getFacade(databaseType);SQLParser sqlParser = SQLParserFactory.newInstance(sql, sqlParserFacade.getLexerClass(), sqlParserFacade.getParserClass(), true);ParseASTNode execute = (ParseASTNode)sqlParser.parse();ParseTree parseTree = execute.getRootNode();SQLVisitorFactory.newInstance(databaseType, "STATEMENT", SQLVisitorRule.valueOf(parseTree.getClass()), null);//方法2
// CacheOption cacheOption = new CacheOption(128, 1024L, 4);
// new SQLVisitorEngine(databaseType, "STATEMENT", new Properties())
// .visit(new SQLParserEngine(databaseType, cacheOption, true)
// .parse(sql, true));}
}
参考文档: https://blog.csdn.net/wydyd110/article/details/116423172
shardingsphere5.0 解决第一次执行sql慢的问题相关推荐
- unknown error mysql_解决MySQL执行SQL文件时报Error: Unknown storage engine 'InnoDB'的错误
我运行了一个innoDB类型的sql文件,报了Error: Unknown storage engine 'InnoDB'错误,网上查了很多方法,但是都没办法真正解决我的问题,后来解决了,在这里总结一 ...
- efcore调用函数_EFCore执行Sql语句的方法:FromSql与ExecuteSqlCommand
前言 在EFCore中执行Sql语句的方法为:FromSql与ExecuteSqlCommand:在EF6中的为SqlQuery与ExecuteSqlCommand,而FromSql和SqlQuery ...
- Spring 执行 sql 脚本(文件)
本篇解决 Spring 执行SQL脚本(文件)的问题. 场景描述可以不看. 场景描述: 我在运行单测的时候,也就是 Spring 工程启动的时候,Spring 会去执行 classpath:schem ...
- mysql8修改密码之后无法登陆_解决MySQL8.0安装第一次登陆修改密码时出现的问题...
下面给大家介绍下mysql 8.0.16 初次登录修改密码 mysql数据库初始化后初次登录需要修改密码 初次登录会碰到下面这个错误 ql> alter user root identified ...
- jdbc执行sql出现错误: mismatched input ‘,’ excepting ‘.‘ 应该如何解决?
文章目录 业务说明 解决错误 业务说明 最近有一个需求,需要查出来数据,再插入到数据库种.采用的办法是:先把数据取出,放到一个list中,然后循环list,拼接sql的插入语句,然后执行sql. 代码 ...
- 因为WMI配置,无法执行Sql Server 系统配置检查器的解决办法
今天重装机器,重新要安装sql 2005,遇到了如下问题: 因为WMI配置,无法执行Sql Server 系统配置检查器的解决办法 随即网上搜索了下,办法不多,还好找到个有用的,贴出来给大家. 先建立 ...
- 执行sql语句提示[Err] 1055 - Expression #2 of SELECT list is not in GROUP BY......错误的解决办法
当我在navicat中执行sql语句时,出现错误提示[Err] 1055 - Expression #2 of SELECT list is not in GROUP BY clause and co ...
- unknown error mysql_mysql执行sql文件报错Error: Unknown storage engine‘InnoDB’的解决方法...
发现问题 最近在工作中遇到一个问题,在运行了一个innoDB类型的sql文件,报了Error: Unknown storage engine 'InnoDB'错误,网上查了很多方法,但是都没办法真正解 ...
- MYSQL执行sql时报错:Table 'performance_schema.session_status' doesn't exist解决办法
1.今天,在本地mysql底下执行sql时报错了,报错信息是Table 'performance_schema.session_status' doesn't exist,百度了一下说解决办法是进入m ...
- C#执行Sql 时,出现“算术运算导致溢出”问题,如何解决?
C#执行Sql 时,出现"算术运算导致溢出"问题,如何解决? 参考文章: (1)C#执行Sql 时,出现"算术运算导致溢出"问题,如何解决? (2)https: ...
最新文章
- Worktile荣登2020中关村国际前沿科技创新大赛大数据与云计算领域TOP10
- 从源码看runLoop
- spark和hadoop升级记录(持续更新中)
- window程序设计学会_是时候我们学会设计合适的饼图了
- cc2530学习笔记
- flannel vxlan 实现原理【转】
- c++与java中文互转_java与C++中文字符的问题
- C:/WINDOWS/system32/drivers/etc/hosts文件无法访问
- python工资这么高为什么不学-推崇Python这么多人,为什么他们找不到工作!
- swiftyjson_是时候放弃SwiftyJSON了
- 标准Io编程学习笔记
- 计算机一点桌面显示删除,电脑开机后任意点击桌面图标后不停出现删除文件窗口?...
- outlook安全电子邮件实现
- 蓝色理想的flex教材不能在flex Development做不能使用,我整理一下供初学者参考
- 如何更新谷歌chrome浏览器
- python-给登记照换底色(蓝底变红底)
- openwrt php 编译环境,openwrt基础编译教程
- thymeleaf中数字的日期格式以及货币格式
- ReferenceError: “alert” is not defined
- 安装并使用Ghidra的Eclipse插件的过程