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://pwwzsj.com/article/ddoigoi.html