我建了一个简单的表,插入一个简单的数据。
主要跟踪这个简单的插入语句在插入过程的经历。主要集中在插入流程和提交流程,不包含前期的其他阶段。
下面是这个语句经历的所有的阶段:
主要集中在:
两个阶段
对于 begindelete from t1 where id=2;insert into t1 values(2) 的会调用row_ins_clust_index_entry_by_modify函数直接去掉del flag,避免额外开销(t1(id int primary key))
可以看到整个语句的流程大概为
这只是大概流程其中很多很多的细节,不过有了入口函数也许好分析一些。
我有点建议:在过程或者程序中不要使用与参数的名字的局部变量,或者参数不应该与要使用的表字段名字想同。你这里使用@ID说明你想声明局部变量ID,在存储过程和函数中应该使用DECLARE 变量名 类型 [DEFAULT value]的格式,然后SET 变量名=value。
上面SET@ID=ID改为 DECLARE NEWID INT DEFAULT 0SET NEWID=ID以此类推
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)