mysql insert执行过程_MySQL · 源码分析 · 一条insert语句的执行过程
本文只分析了insert語句執行的主路徑,和路徑上部分關鍵函數,很多細節沒有深入,留給讀者繼續分析
create table t1(id int);
insert into t1 values(1)
略過建立連接,從 mysql_parse() 開始分析
void mysql_parse(THD *thd, char *rawbuf, uint length,
Parser_state *parser_state)
{
/* ...... */
/* 檢查query_cache,如果結果存在于cache中,直接返回 */
if (query_cache_send_result_to_client(thd, rawbuf, length) <= 0)
{
LEX *lex= thd->lex;
/* 解析語句 */
bool err= parse_sql(thd, parser_state, NULL);
/* 整理語句格式,記錄 general log */
/* ...... */
/* 執行語句 */
error= mysql_execute_command(thd);
/* 提交或回滾沒結束的事務(事務可能在mysql_execute_command中提交,用trx_end_by_hint標記事務是否已經提交) */
if (!thd->trx_end_by_hint)
{
if (!error && lex->ci_on_success)
trans_commit(thd);
if (error && lex->rb_on_fail)
trans_rollback(thd);
}
進
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的mysql insert执行过程_MySQL · 源码分析 · 一条insert语句的执行过程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: wordpress php7 mysql
- 下一篇: python语言用什么来表明每行代码的层