PolarDB-X 1.0-SQL 手册-Prepare SQL-Prepare 协议使用说明

本文涉及的产品
云原生数据库 PolarDB 分布式版,标准版 2核8GB
简介: Prepare 协议介绍PolarDB-X提供对服务器端预处理语句的支持,支持利用高效的客户端/服务器二进制协议。使用准备好的语句和占位符来获取参数值具有以下好处:每次执行时解析语句的开销都较小。通常情况下,数据库应用程序处理大量几乎相同的语句,只改变 Prepare 语句中的变量值,这样可以大幅度提升 SQL 执行效率。防止 SQL 注入攻击。

Prepare 协议介绍

PolarDB-X提供对服务器端预处理语句的支持,支持利用高效的客户端/服务器二进制协议。使用准备好的语句和占位符来获取参数值具有以下好处:

  • 每次执行时解析语句的开销都较小。通常情况下,数据库应用程序处理大量几乎相同的语句,只改变 Prepare 语句中的变量值,这样可以大幅度提升 SQL 执行效率。
  • 防止 SQL 注入攻击。

协议详细说明

  • Prepare 协议支持范围
  • Prepare 协议目前支持:
  • 即 Prepare 协议支持使用 JDBC 及其他各种语言使用
  • MySQL支持范围参见Prepared Statements
  • Prepare 协议 SQL 支持范围
  • 支持所有 DML 语句,例如:SELECT、UPDATE、DELETE、INSERT 等
  • Prepare 协议 SQL 不支持范围
  • 不支持 DML 以外其他 SQL 语句,例如: SHOW、SET 等
  • Prepare 协议不支持在 MySQL 命令行使用
  • 如:以下方法不支持
  1.   mysql> SET @s='SELECT SQRT(POW(?,2) + POW(?,2)) AS hypotenuse';
  2.   mysql> PREPARE stmt2 FROM @s;
  3.   mysql> SET @a=6;
  4.   mysql> SET @b=8;
  5.   mysql> EXECUTE stmt2 USING @a,@b;

在Java中开启 Prepare 协议

  • 在Java客户端中,如果需要使用 Prepare 协议,需要强行在 URL 连接串中增加 useServerPrepStmts=true 参数,如果不指定此参数,则 PreparedStatement 默认会走普通查询
  • 如:jdbc:mysql://xxxxxx:3306/xxxxxx?useServerPrepStmts=true

Java 使用示例:


  1. Class.forName("com.mysql.jdbc.Driver");
  2. Connection connection =  DriverManager.getConnection("jdbc:mysql://xxxxxx:3306/xxxxxx?useServerPrepStmts=true","xxxxx","xxxxx");
  3. String sql ="insert into batch values(?,?)";
  4. PreparedStatement preparedStatement = connection.prepareStatement(sql);
  5. preparedStatement.setInt(1,0);
  6. preparedStatement.setString(2,"corona-db");
  7. preparedStatement.executeUpdate();
相关实践学习
快速体验PolarDB开源数据库
本实验环境已内置PostgreSQL数据库以及PolarDB开源数据库:PolarDB PostgreSQL版和PolarDB分布式版,支持一键拉起使用,方便各位开发者学习使用。
相关文章
|
5月前
|
SQL 关系型数据库 分布式数据库
PolarDB产品使用问题之相同的SQL语句在不同时间执行EXPLAIN计划显示出不同的索引类型,是什么原因
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
PolarDB产品使用问题之相同的SQL语句在不同时间执行EXPLAIN计划显示出不同的索引类型,是什么原因
|
5月前
|
SQL 关系型数据库 分布式数据库
PolarDB产品使用问题之遇到慢SQL问题,该如何解决
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
5月前
|
SQL 关系型数据库 分布式数据库
PolarDB产品使用问题之sql运行报错是神么原因
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
5月前
|
SQL 关系型数据库 Serverless
PolarDB产品使用问题之如何控制队列中排队的SQL的等待时间
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
5月前
|
SQL 关系型数据库 分布式数据库
PolarDB产品使用问题之出现部分SQL抛出7543错误,该如何解决
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
5月前
|
SQL 缓存 关系型数据库
PolarDB产品使用问题之SQL语句是否可以参数化
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
5月前
|
关系型数据库 分布式数据库 数据库
PolarDB产品使用问题之将RDS切换到PolarDB-X 2.0时,代码层的SQL该如何改动
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
5月前
|
SQL 监控 关系型数据库
PolarDB产品使用问题之SQL防火墙怎么拦截没有指定WHERE条件的特定表的SQL语
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
5月前
|
SQL 关系型数据库 分布式数据库
PolarDB产品使用问题之SQL查询该如何优化
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
5月前
|
SQL 自然语言处理 关系型数据库
PolarDB自然语言到SQL语言转义
PolarDB自然语言到SQL语言转义

相关产品

  • 云原生分布式数据库 PolarDB-X