MySQL5.7在更改索引名字時(shí)候不會(huì)鎖表,測(cè)試過程如下:
-
mysql> select count(*) from T_USER_INFO;
-
+----------+
-
| count(*) |
-
+----------+
-
| 7147528 |
-
+----------+
-
mysql> select version();
-
+------------+
-
| version() |
-
+------------+
-
| 5.7.18-log |
-
+------------+
-
mysql> show create table T_USER_INFO \G
-
*************************** 1. row ***************************
-
Table: T_USER_INFO
-
Create Table: CREATE TABLE `T_USER_INFO` (
-
`USER_NAME` varchar(50) DEFAULT NULL,
-
`PHONE` varchar(50) DEFAULT NULL,
-
`CARD_ID` varchar(50) DEFAULT NULL,
-
KEY `idx_user_info_name` (`USER_NAME`)
-
) ENGINE=InnoDB DEFAULT CHARSET=utf8
-
1 row in set (0.00 sec)
此時(shí)打開兩個(gè)窗口,同時(shí)進(jìn)入MySQL命令行
窗口一:
-
mysql> alter table T_USER_INFO rename index idx_user_info_name to idx_user_info_nm;
窗口二:
-
mysql> select * from T_USER_INFO where user_name='rz19930119';
先執(zhí)行更改索引名字的語句,語句執(zhí)行完之前,執(zhí)行第二個(gè)查詢。在索引名字更改完之前,查詢語句可以正常執(zhí)行。
結(jié)論:1、MySQL5.7更改索引不會(huì)鎖表(盡管這是個(gè)雞肋的特性,因?yàn)橐话悴粫?huì)更改索引名字)
2、MySQL5.7增加了alter table tablename rename index idxname1 to idxname2的語法,在5.7之前的版本,更改索引名字只能采取先刪除再創(chuàng)建的方法。
網(wǎng)頁名稱:MySQL5.7新特性之更改索引名字不會(huì)鎖表
本文鏈接:
http://weahome.cn/article/pehicj.html