新聞中心
這篇文章將為大家詳細講解有關如何進行MySQL metadata鎖實驗,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
創(chuàng)新互聯(lián)-專業(yè)網站定制、快速模板網站建設、高性價比博羅網站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式博羅網站制作公司更省心,省錢,快速模板網站建設找我們,業(yè)務覆蓋博羅地區(qū)。費用合理售后完善,十載實體公司更值得信賴。
在對已經存在的表執(zhí)行DDL語句(例如更改表結構、DROP表等操作)的時候,如果有與這個表相關聯(lián)的事務沒有提交,就會產生metadata鎖等待。
這個時候,需要提交與這張表相關聯(lián)的事務,才會將metadata鎖釋放。
創(chuàng)建一張表
mysql> CREATE TABLE `travelrecord` (
-> `id` bigint(20) NOT NULL,
-> `user_id` varchar(100) DEFAULT NULL,
-> `traveldate` date DEFAULT NULL,
-> `fee` decimal(10,0) DEFAULT NULL,
-> `days` int(11) DEFAULT NULL,
-> PRIMARY KEY (`id`)
-> ) ENGINE=InnoDB DEFAULT CHARSET=gbk;
Query OK, 0 rows affected (0.09 sec)
會話一
開啟一個事務,查詢新創(chuàng)建的表
mysql> begin;
Query OK, 0 rows affected (0.00 sec)
mysql> select * from travelrecord;
Empty set (0.00 sec)
會話二
drop剛剛創(chuàng)建的表,會發(fā)生鎖等待
mysql> drop table travelrecord;
會話一
查詢會話
mysql> show processlist;
+----+------+-----------------+------+---------+------+---------------------------------+-------------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+-----------------+------+---------+------+---------------------------------+-------------------------+
| 3 | root | 127.0.0.1:34875 | sale | Query | 0 | init | show processlist |
| 24 | root | 127.0.0.1:34876 | sale | Query | 1058 | Waiting for table metadata lock | drop table travelrecord |
+----+------+-----------------+------+---------+------+---------------------------------+-------------------------+
2 rows in set (0.00 sec)
提交事務
mysql> commit;
Query OK, 0 rows affected (0.03 sec)
會話二
鎖釋放,DROP語句順利執(zhí)行
mysql> drop table travelrecord;
Query OK, 0 rows affected (58 min 40.02 sec)
數據庫中沒有了鎖
mysql> show processlist;
+----+------+-----------------+------+---------+------+-------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+-----------------+------+---------+------+-------+------------------+
| 3 | root | 127.0.0.1:34875 | sale | Sleep | 76 | | NULL |
| 24 | root | 127.0.0.1:34876 | sale | Query | 0 | init | show processlist |
+----+------+-----------------+------+---------+------+-------+------------------+
2 rows in set (0.00 sec)
關于如何進行MySQL metadata鎖實驗就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
分享標題:如何進行MySQLmetadata鎖實驗
網頁鏈接:http://www.ef60e0e.cn/article/pjooeo.html