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 ...
随机推荐
- Collections.synchronizedList 并发
1.背景 集合类中的map,大家一定熟悉,知道它非线程安全.使用的方法有两种,一种是在map上加同步器(锁),另一种是创建容器时使用Collections中的静态方法对map进行包装. java ap ...
- 使用Canvas绘制分享海报
这几天接到一个需求,需要将一个邀请链接转换为一个带有二维码并且能够分享出去的海报图,网上找了很多的方法,也踩了不少的坑,希望大家遇到类似的需求能够少走弯路.. 具体效果图如下: 效果图 首先我采用了 ...
- 服务器安装ESXI6.7
1 从官网下载ESXI镜像文件到本地 https://my.vmware.com/web/vmware/details?downloadGroup=ESXI670&productId=7 ...
- 管理Windows上的路由表
路由器获取目录帮助手册: route /? 修改路由的时候最高以管理员运行cmd程序 默认路由只是临时生效的,只要管理员禁用在启用网卡,默认路由就消失了(重启计算机默认路由也会消失),可以在后面添加一 ...
- 【红日安全-VulnStack】ATT&CK实战系列——红队实战(二)
一.环境搭建 1.1 靶场下载 靶场下载地址:http://vulnstack.qiyuanxuetang.net/vuln/detail/3/ 靶机通用密码: 1qaz@WSX 1.2 环境配置 ...
- Loki 初体验
Loki 是什么 Loki 是 Grafana Lab开发的一套日志系统,使用Go语言实现.根据官方的介绍, Loki,高可用性,多租户的日志聚合系统,受到Prometheus的启发.它的设计非常经济 ...
- svn忽略idea生成的本地配置文件
为根目录添加svn属性svn:global-ignores 值为 *.iml .idea 多个值之间用换行分隔
- java中token的生成和验证
package com.zjn.token; /** * token编码工具类 * @author ouyangjun */ public class TokenEncryptUtils { // 编 ...
- 万恶的NPE差点让我半个月工资没了
引言 最近看到<阿里巴巴Java开发手册>(公众号回复[开发手册]免费获取)第11条规范写到: 防止 NPE ,是程序员的基本修养 NPE(Null Pointer Exception)一 ...
- [leetcode]54. Spiral Matrix2生成螺旋数组
import java.util.Arrays; /** * Created by lvhao on 2017/7/6. * Given an integer n, generate a square ...