本篇内容介绍了“MySQL对 DROP TABLE的处理过程”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
前几天,在DROP TABLE的时候,所有进程不管是DDL还是DML都被HANG起;直到DROP结束才继续执行;
对这个现象甚其不解;
今天研究了一个 MYSQL 源代码,看其对DROP TABLE 的内部处理过程 ;
当用户发出 DROP TABLE 命令后:
############# MYSQL SERVER 处理删除一个表 ##################
bool mysql_rm_table( )
int mysql_rm_table_part2 ()
void mysql_ha_rm_tables ()
remove_table_from_cache ()
LINE 2024
int handler::ha_delete_table(const char *name)
file->ha_delete_table(path) line 1991
int handler::delete_table(const char *name) //删除物理表文件;
int mysys::my_delete_with_symlink(const char *name, myf MyFlags)
int mysys::my_delete(const char *name, myf MyFlags)
LINE 2042
int mysys::my_delete()
query_cache_invalidate3
############# INNODB 处理删除一个表 ##################
int ha_innobase::delete_table( const char* name) ; // 从INNODB删除表
int row_drop_table_for_mysql()
que_eval_sql(info, “PROCEDURE DROP_TABLE_PROC () IS\n”
void dict_table_remove_from_cache(dict_table_t* table))
ibool fil_delete_tablespace()
ibool fil_space_free ()
ibool os_file_delete ()
unlink((const char*)name);
row_mysql_unlock_data_dictionary(trx);
DROP TABLE大概就是这么一个过程 ;
“MySQL对 DROP TABLE的处理过程”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!