十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
语法不对:
成都创新互联公司主要从事成都做网站、网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务石柱土家族,10多年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18982081108
update tdb_goods a,tdb_goods_cate b set goods_cate = cate_id where goods_cate = cate_name;
其中goods_cate = cate_id和goods_cate = cate_name你每个字段前最好加上a或b的前缀。
本期我们用 MySQL 提供的 DBUG 工具来研究 MySQL 的 SQL 处理流程。
起手先造个实例
这里得稍微改一下实例的启动文件 start,将 CUSTOM_MYSQLD 改为 mysqld-debug:
重启一下实例,加上 debug 参数:
我们来做一两个实验,说明 DBUG 包的作用:
先设置一个简单的调试规则,我们设置了两个调试选项:
d:开启各个调试点的输出
O,/tmp/mysqld.trace:将调试结果输出到指定文件
请点击输入图片描述
然后我们创建了一张表,来看一下调试的输出结果:
请点击输入图片描述
可以看到 create table 的过程中,MySQL 的一些细节操作,比如分配内存 alloc_root 等
这样看还不够直观,我们增加一些信息:
请点击输入图片描述
来看看效果:
请点击输入图片描述
可以看到输出变成了调用树的形式,现在就可以分辨出 alloc_root 分配的内存,是为了解析 SQL 时用的(mysql_parse)
我们再增加一些有用的信息:
请点击输入图片描述
可以看到结果中增加了文件名和行号:
请点击输入图片描述
现在我们可以在输出中找一下统计表相关的信息:
请点击输入图片描述
可以看到 MySQL 在这里非常机智,直接执行了一个内置的存储过程来更新统计表。
沿着 que_eval_sql,可以找到其他类似的统计表,比如下面这些:
请点击输入图片描述
请点击输入图片描述
本次实验中,我们借助了 MySQL 的 DBUG 包,来让 MySQL 将处理过程暴露出来。MySQL 中类似的技术还有不少,比如 performance_schema,OPTIMIZER_TRACE 等等。
这些技术将 MySQL 的不同方向的信息暴露出来,方便大家理解其中机制。
mysql临时表的使用
一、脚本
use edisondb;
drop procedure if exists query_performance_test;
DELIMITER //
create procedure query_performance_test()
begin
declare begintime time;
declare endtime time;
set begintime=curtime();
DROP TEMPORARY TABLE IF EXISTS userinfo_tmp;
CREATE TEMPORARY TABLE userinfo_tmp(
i_userid int,
v_username varchar(30)
) ENGINE = MEMORY;
insert into userinfo_tmp(i_userid,v_username)
select i_userid,v_username
from userinfo
where i_userid1000 and i_userid8000;
select * from userinfo_tmp;
DROP TEMPORARY TABLE IF EXISTS userinfo_tmp;
set endtime=curtime();
select endtime-begintime;
end
//
DELIMITER ;
call query_performance_test();