Mysql--由prepared sql statement引发的问题
问题回顾
最近生产环境数据库查询接口异常,抛出异常信息表明预处理sql语句声明已经超过mysql系统设置限制max_prepared_stmt_count;
通过网上一些资料,分析大概是程序中数据库查询代码prepared sql statement没有关闭或者释放导致。
Can't create more than max_prepared_stmt_count statements (current value: 2000)
问题解决步骤:
1.先规避现网问题,可以把数据库系统变量max_prepared_stmt_count设置大一些;
2.通过数据库performance_schema.prepared_statements_instances表中的记录
分析当前系统有哪些prepared sql statement,根据sql语句排查代码是否没有关闭或者释放的prepared sql statement。
3.修改之后,测试代码,对比测试前后数据库状态参数Prepared_stmt_count是否有增长。
如果有增长,说明代码中修改还有遗漏。
查看命令:show global status like '%stmt%';
分析总结
prepared sql statement这个概念的含义、作用
形式如:select user_id, user_name from tb_uhome_admin_user where user_id = ?;
这种带有占位符(?)的SQL语句,通过客户端调用接口或者shell,在服务端生成预处理SQL语句声明。这样一看有点像查询模板;
使用预处理SQL语句声明的作用:
1.1.提高查询效率
sql语句执行过程的,先解析sql语句生成执行计划。预处理SQL语句声明,就把sql语句和执行计划存储在内存中,下次相同
sql语句就不需要再进行解析,直接映射到执行计划,参数替换占位符,从而提高效率;
1.2防止SQL注入攻击
prepared sql statement的使用场景和注意点
对于批量、并且固定查询条件参数的SQL,可以使用提高效率。
对于查询条件不固定的SQL和单个SQL查询,使用prepared sql statement对性能也没有太大的提升,
反而占用Mysql服务端资源,不建议使用
Mysql--由prepared sql statement引发的问题的更多相关文章
- 发现美的眼睛 Prepared SQL Statement
DROP PROCEDURE IF EXISTS truncate_insert_sales_rank_toparow_month; DELIMITER /w/ CREATE PROCEDURE tr ...
- Mysql数据库防SQL注入原理
每个语言都有自己的数据库框架或库,无论是哪种语言,哪种库,它们在数据库防注入方面使用的技术原理无外乎下面介绍的几种方法. 一.特殊字符转义处理 Mysql特殊字符指在mysql中具有特殊含义的字符,除 ...
- 直接放个DB2 SQL STATEMENT大全好了!
SQL statements This topic contains tables that list the SQL statements classified by type. SQL sch ...
- java.sql.preparedstatement和java.sql.statement的区别
本文转自CSDN,然后整理了一遍.原文出处:CSDN JDBC(java database connectivity,java数据库连接)的api中的主要的四个类之一的java.sql.stateme ...
- iReport 5.6.0 Error: net.sf.jasperreports.engine.JRException: Error executing SQL statement for : data 最优解决方案
问题描述 近期学习iReport(个人使用的是最新版本的 iReport-5.6.0,MySQL是 5.5.56版本),遇到一些问题,在安装完成后,创建了数据库,配置了MySQL数据库连接信息,新建报 ...
- atitit.跨语言实现备份mysql数据库 为sql文件特性 api 兼容性java c#.net php js
atitit.跨语言实现备份mysql数据库 为sql文件特性 api 兼容性java c#.net php js 1. 两个方法:: bat vs mysqldump(推荐) vs lang ...
- 技术分析 | 浅谈在MySQL体系下SQL语句是如何在系统中执行的及可能遇到的问题
欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答 SQL语句大家并不陌生,但某种程度上来看,我们只是知道了这条语句是什么功能,它可 ...
- Drop all the tables, stored procedures, triggers, constraints and all the dependencies in one SQL statement
Is there any way in which I can clean a database in SQl Server 2005 by dropping all the tables and d ...
- MySQL 常用的sql语句小结(待续)
mysql 常用的sql语句 1.查看数据库各个表中的记录数 USE information_schema; SELECT table_name,table_rows FROM tables WHER ...
随机推荐
- Clickhouse 在大数据分析平台 - 留存分析上的应用
导语 | 本文实践了对于千万级别的用户,操作总数达万级别,每日几十亿操作流水的留存分析工具秒级别查询的数据构建方案.同时,除了留存分析,对于用户群分析,事件分析等也可以尝试用此方案来解决. 文章作者: ...
- 字节跳动内部微服务架构-Docker实战学习笔记分享 真香
前言 基于 Spring Cloud 的微服务设计和开发,已经越来越多地得到了更多企业的推广和应用,而 Spring Cloud 社区也在不断的迅速发展壮大之中,近几年时间,Spring Cloud ...
- 解决虚拟机联网问题linux VMware eth0
虚拟机坏了n多回,真是让我装机装到吐血,经过两天的折腾终于弄明白怎么配置虚拟机的静态ip了. 方法: 1. 将虚拟机关机,--> 打开编辑 ->点击 虚拟网络映射 ->点击 VMne ...
- OkHttpClient调优案例
OkHttpClient调优案例 作者:Grey 原文地址: 语雀 博客园 Github 实际案例 系统运行一段时间后,线程数量飙升,CPU持续居高不下 排查工具 https://fastthread ...
- 利用302绕过http协议限制
360某处ssrf漏洞可探测内网信息(附内网6379探测脚本) http://xss.one/bug_detail.php?wybug_id=wooyun-2016-0229611
- Django之DRF-- API限速
什么场景下需要限制访问频次呢? 1)防爬虫:爬虫可能会在短时间内大量的访问服务接口,增加服务器压力 2)对于需要限制访问频次的接口 具体使用配置如下: 1,settings.py加入配置 REST_F ...
- EF Core 三 、 骚操作 (导航属性,内存查询...)
EF Core 高阶操作 本文之前,大家已经阅读了前面的系列文档,对其有了大概的了解 我们来看下EF Core中的一些常见高阶操作,来丰富我们业务实现,从而拥有更多的实现选择 1.EF 内存查找 wh ...
- 从0开始快速入门学Java----基本篇
由于是0基础入门java,所以花了比较多的时间学习了基本语法知识,阶段性梳理下知识: 1. Java的介绍+JDK安装及环境变量配置+第一个程序HelloWorld的编写 这部分开始遇到的问题比较多, ...
- VS挂接崩溃包
主要用来在用户机器上对目标进程生成dump文件,定位"卡死".Crash等问题.推荐相关工具DumpTool,WinCrashReport. DumpTool 下载 WinCras ...
- 解决CentOS 8 Docker容器无法上网的问题
发布于:2020-11-28 Docker 2条评论 3,051 views 如需VPS代购.PHP开发.服务器运维等服务,请联系博主QQ:337003006 CentOS 8已经发行好长一段 ...