时间:2021-04-16
alter table运行时会对原表进行临时复制,在副本上进行更改,然后删除原表,再对新表进行重命名。在执行alter table时,其它用户可以阅读原表,但是对表的更新和修改的操作将被延迟,直到新表生成为止。
alter table运行时会对原表进行临时复制,在副本上进行更改,然后删除原表,再对新表进行重命名。在执行alter table时,其它用户可以阅读原表,但是对表的更新和修改的操作将被延迟,直到新表生成为止。新表生成后,这些更新和修改信息会自动转移到新表上。
注意,如果您在执行alter table时使用除了rename以外的选项,则MySQL会创建一个临时表。即使数据并不需要进行复制(例如当您更改列的名称时),MySQL也会这么操作。对于Myisam表,您可以通过把myisam_sort_buffer_size系统变量设置到一个较高的值,来加快重新创建索引(该操作是变更过程中速度最慢的一部分)的速度。
如果您使用alter table tbl_name rename to new_tbl_name并且没有其它选项,则MySQL只对与table tbl_name相对应的文件进行重命名。不需要创建一个临时表。
也就是说我们在执行alter table操作时,会阻塞所有的dml操作,但可以进行select查询,这个和oracle有很大的不同。
mysql> select count(*) from test;
+----------+
| count(*) |
+----------+
| 2097152 |
+----------+
1 row in set (2.11 sec)
mysql> alter table test add c varchar(100);
Query OK, 2097152 rows affected (1 min 24.02 sec) --用了85s秒左右
Records: 2097152 Duplicates: 0 Warnings: 0
mysql> alter table test modify c int;
Query OK, 2097152 rows affected (1 min 21.69 sec) --用了85s秒左右
Records: 2097152 Duplicates: 0 Warnings: 0
mysql> alter table test rename to test_new; --这个操作是直接文件名的,所以很快
Query OK, 0 rows affected (0.03 sec)
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
mysql中alter命令的用法,用于编辑表结构。具体内容如下修改字段类型mysql>altertableemployeechangedepnodepnoint
前言在实际开发中,业务需求修改的情况时有发生,这样,不可避免的需要修改存储过程的特征MySQL中,使用ALTER语句修改存储过程的特性语法格式ALTER{PRO
前言想必玩过mysql的人对Waitingfortablemetadatalock肯定不会陌生,一般都是进行alter操作时被堵住了,导致了我们在showpro
mysql数据库的表已经存在。 1.设置默认值。 ALTERTABLE表名ALTER字段名SETDEFAULT默认值; 例:test表中设置age字段
1.MySQL数据库主从同步延迟原理。要说延时原理,得从mysql的数据库主从复制原理说起,mysql的主从复制都是单线程的操作,主库对所有DDL和DML产生b