189 8069 5689

mysql是怎么预编译的 mysql 预编译

Mysql存储过程是在创建时预编译还是在执行时预编译,怎么能看出来或者怎么测出来

语法

创新互联专业为企业提供治多网站建设、治多做网站、治多网站设计、治多网站制作等企业网站建设、网页设计与制作、治多企业网站模板建站服务,十载治多做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。

show create {procedure|function} sp_name;

例如查看存储过程myPro的创建语句

show create procedure myPro;

查看自定义函数myFunc的创建语句

show create function myFunc;

mysql 5.5.54 不支持 预编译吗

mysql 5.5.54 支持 预编译

开始安装mysql

1.1 创建用户和组

groupadd mysql

useradd mysql -s /sbin/nologin -M -g mysql

1.2 解压编译MySQL

cd /root/tools

tar zxf mysql-5.5.32.tar.gz

cd mysql-5.5.32

#图一

cmake . -DCMAKE_INSTALL_PREFIX=/application/mysql-5.5.32 \

-DMYSQL_DATADIR=/application/mysql-5.5.32/data \

-DMYSQL_UNIX_ADDR=/application/mysql-5.5.32/tmp/mysql.sock \

-DDEFAULT_CHARSET=utf8 \

-DDEFAULT_COLLATION=utf8_general_ci \

-DEXTRA_CHARSETS=gbk,gb2312,utf8,ascii \

-DENABLED_LOCAL_INFILE=ON \

-DWITH_INNOBASE_STORAGE_ENGINE=1 \

-DWITH_FEDERATED_STORAGE_ENGINE=1 \

-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \

-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \

-DWITHOUT_PARTITION_STORAGE_ENGINE=1 \

-DWITH_FAST_MUTEXES=1 \

-DWITH_ZLIB=bundled \

-DENABLED_LOCAL_INFILE=1 \

-DWITH_READLINE=1 \

-DWITH_EMBEDDED_SERVER=1 \

-DWITH_DEBUG=0

#图二

make make install

#图三

3

1.3添加链接

ln -s /application/mysql-5.5.32/ /application/mysql

mysql——预处理Prepared

某需求某一条 SQL 语句可能会被反复调用执行,或者每次执行的时候只有个别的值不同(比如 select 的 where 子句值不同,update 的 set 子句值不同,insert 的 values 值不同)。如果每次都需要经过上面的词法语义解析、语句优化、制定执行计划等,则效率就明显不行了。

所谓预编译语句就是将此类 SQL 语句中的值用占位符替代,可以视为将 SQL 语句模板化或者说参数化,一般称这类语句叫Prepared Statements。

预编译语句的优势在于归纳为:一次编译、多次运行,省去了解析优化等过程;此外预编译语句能防止 SQL 注入。

注意:虽然可能是通过预处理 SQL 的方式一定程度的提高了效率,但是对于优化而言,最优的执行计划不是光靠 SQL 语句的模板化来实现的,往往还是需要通过具体值来预估出成本代价。

MySQL 官方将 prepare、execute、deallocate 统称为 PREPARE STATEMENT。

步骤大概分为四步:

1 set —— SET @s = 'SELECT SQRT(POW(?,2) + POW(?,2)) AS hypotenuse';

2 prepare —— PREPARE stmt2 FROM @s;

3 execute —— EXECUTE stmt2;

4 deallocate —— DEALLOCATE PREPARE stmt2;


分享文章:mysql是怎么预编译的 mysql 预编译
文章链接:http://cdxtjz.cn/article/ddoigoi.html

其他资讯