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慢的问题相关推荐

  1. unknown error mysql_解决MySQL执行SQL文件时报Error: Unknown storage engine 'InnoDB'的错误

    我运行了一个innoDB类型的sql文件,报了Error: Unknown storage engine 'InnoDB'错误,网上查了很多方法,但是都没办法真正解决我的问题,后来解决了,在这里总结一 ...

  2. efcore调用函数_EFCore执行Sql语句的方法:FromSql与ExecuteSqlCommand

    前言 在EFCore中执行Sql语句的方法为:FromSql与ExecuteSqlCommand:在EF6中的为SqlQuery与ExecuteSqlCommand,而FromSql和SqlQuery ...

  3. Spring 执行 sql 脚本(文件)

    本篇解决 Spring 执行SQL脚本(文件)的问题. 场景描述可以不看. 场景描述: 我在运行单测的时候,也就是 Spring 工程启动的时候,Spring 会去执行 classpath:schem ...

  4. mysql8修改密码之后无法登陆_解决MySQL8.0安装第一次登陆修改密码时出现的问题...

    下面给大家介绍下mysql 8.0.16 初次登录修改密码 mysql数据库初始化后初次登录需要修改密码 初次登录会碰到下面这个错误 ql> alter user root identified ...

  5. jdbc执行sql出现错误: mismatched input ‘,’ excepting ‘.‘ 应该如何解决?

    文章目录 业务说明 解决错误 业务说明 最近有一个需求,需要查出来数据,再插入到数据库种.采用的办法是:先把数据取出,放到一个list中,然后循环list,拼接sql的插入语句,然后执行sql. 代码 ...

  6. 因为WMI配置,无法执行Sql Server 系统配置检查器的解决办法

    今天重装机器,重新要安装sql 2005,遇到了如下问题: 因为WMI配置,无法执行Sql Server 系统配置检查器的解决办法 随即网上搜索了下,办法不多,还好找到个有用的,贴出来给大家. 先建立 ...

  7. 执行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 ...

  8. unknown error mysql_mysql执行sql文件报错Error: Unknown storage engine‘InnoDB’的解决方法...

    发现问题 最近在工作中遇到一个问题,在运行了一个innoDB类型的sql文件,报了Error: Unknown storage engine 'InnoDB'错误,网上查了很多方法,但是都没办法真正解 ...

  9. MYSQL执行sql时报错:Table 'performance_schema.session_status' doesn't exist解决办法

    1.今天,在本地mysql底下执行sql时报错了,报错信息是Table 'performance_schema.session_status' doesn't exist,百度了一下说解决办法是进入m ...

  10. C#执行Sql 时,出现“算术运算导致溢出”问题,如何解决?

    C#执行Sql 时,出现"算术运算导致溢出"问题,如何解决? 参考文章: (1)C#执行Sql 时,出现"算术运算导致溢出"问题,如何解决? (2)https: ...

最新文章

  1. Worktile荣登2020中关村国际前沿科技创新大赛大数据与云计算领域TOP10
  2. 从源码看runLoop
  3. spark和hadoop升级记录(持续更新中)
  4. window程序设计学会_是时候我们学会设计合适的饼图了
  5. cc2530学习笔记
  6. flannel vxlan 实现原理【转】
  7. c++与java中文互转_java与C++中文字符的问题
  8. C:/WINDOWS/system32/drivers/etc/hosts文件无法访问
  9. python工资这么高为什么不学-推崇Python这么多人,为什么他们找不到工作!
  10. swiftyjson_是时候放弃SwiftyJSON了
  11. 标准Io编程学习笔记
  12. 计算机一点桌面显示删除,电脑开机后任意点击桌面图标后不停出现删除文件窗口?...
  13. outlook安全电子邮件实现
  14. 蓝色理想的flex教材不能在flex Development做不能使用,我整理一下供初学者参考
  15. 如何更新谷歌chrome浏览器
  16. python-给登记照换底色(蓝底变红底)
  17. openwrt php 编译环境,openwrt基础编译教程
  18. thymeleaf中数字的日期格式以及货币格式
  19. ReferenceError: “alert” is not defined
  20. 安装并使用Ghidra的Eclipse插件的过程

热门文章

  1. batch spring 重复执行_Spring Batch_JOB重启机制
  2. python训练100题_Python练习100题
  3. catboost原理
  4. 设置华为路由器的端口映射
  5. 夜晚网速变慢与网站服务器开机数量减少有关,【网络】网速慢的原因与对策
  6. 我的个人网站,终于上线了!
  7. 拼刀刀店铺后台的参数anti-content逆向分析
  8. 心智成熟的道路虽然辛苦,却是实打实的进步,因为你的每一次迈进,朝向的都是自我实现,也是人之所以为人的价值所在
  9. 拳皇FANS们不得不看的动画
  10. 最准通达信强势顶底指标公式 副图 源码