技术开发 频道

MySQL锁机制 你所不了解的一些事儿

  6.RENAME TABLE例子

  得到源表和目的表的name-lock锁:在table cache缓存内插入特殊的TABLE实例的占位符并等待直到这些表的所有实例都关闭

  重命名这些表的.frm文件和调用handler::rename_table()方法

  删除name-lock锁

  在整个解析过程中,都使用LOCK_open

T@10: | query: rename table t1 to t2
T@
10: | >mysql_parse
T@
10: | | >mysql_execute_command
T@
10: | | | >mysql_rename_tables
T@
10: | | | | >lock_table_names
T@
10: | | | | | >lock_table_name
T@
10: | | | | | | enter: db: test name: t1  T@10: | | | | | <lock_table_name
T@
10: | | | | | >remove_table_from_cache  
T@
10: | | | | | | enter: Table: 'test.t1' flags: 0  
T@10: | | | | | | >hash_delete
T@
10: | | | | | | | >free_cache_entry
T@
10: | | | | | | | | >closefrm
T@
10: | | | | | | | | | >ha_innobase::close  T@10: | | | | | | | | | <ha_innobase::close T@10: | | | | | | | | <closefrm
T@
10: | | | | | | | <free_cache_entry
T@
10: | | | | | | <hash_delete
T@
10: | | | | | <remove_table_from_cache
T@
10: | | | | | >lock_table_name
T@
10: | | | | | | enter: db: test name: t2  T@10: | | | | | <lock_table_name
T@
10: | | | | | >remove_table_from_cache  
T@
10: | | | | | | enter: Table: 'test.t2' flags: 0
T@10: | | | | | <remove_table_from_cache
T@
10: | | | | <lock_table_names
T@
10: | | | | >rename_tables
T@
10: | | | | | >do_rename
T@
10: | | | | | | >mysql_rename_table
T@
10: | | | | | | | >ha_innobase::rename_table
T@
10: | | | | | | | <ha_innobase::rename_table T@10: | | | | | | | >my_rename
T@
10: | | | | | | | | my: from ./test/t1.frm to ./test/t2.frm MyFlags 16
T@
10: | | | | | | | <my_rename
T@
10: | | | | | | <mysql_rename_table
T@
10: | | | | | <do_rename T@10: | | | | <rename_tables
T@
10: | | | | >unlock_table_names
T@
10: | | | | | >unlock_table_name
T@
10: | | | | | | >hash_delete
T@
10: | | | | | | | >free_cache_entry
T@
10: | | | | | | | <free_cache_entry
T@
10: | | | | | | <hash_delete
T@
10: | | | | | <unlock_table_name
T@
10: | | | | | >unlock_table_name
T@
10: | | | | | | >hash_delete
T@
10: | | | | | | | >free_cache_entry
T@
10: | | | | | | | <free_cache_entry
T@
10: | | | | | | <hash_delete
T@
10: | | | | | <unlock_table_name
T@
10: | | | | <unlock_table_names
T@
10: | | | <mysql_rename_tables
T@
10: | | <mysql_execute_command
T@
10: | <mysql_parse
0
相关文章