随笔分类 - MySQL Table
摘要:检查当前实例是否有外键/视图/触发器/事件等 ## 检查非系统数据库外视图 SELECT * FROM information_schema.views WHERE TABLE_SCHEMA NOT IN('information_schema','sys','performance_schema'
阅读全文
摘要:数据库表空间 独立表空间 在MySQL 5.6 中引入独立表空间的概念,启用独立表空间后,每个表将生成独立的文件来进行存储。 创建表时可以指定表存放的文件路径 共享表空间优缺点 独立表空间优缺点
阅读全文
摘要:主键索引维护 1、新增主键索引 2、删除主键索引 3、删除并新增主键索引 4、修改主键列类型 二级索引维护 1、新增二级索引 2、删除二级索引 3、修改二级索引名 4、修改二级索引列类型 自增属性修改 1、修改普通主键列为自增主键列 2、修改自增主键列为普通主键列 3、修改表自增开始值 列属性修改
阅读全文
摘要:FIC(Fast index creation)特性在MySQL 5.5版本中引入FIC(Fast index creation)特性,创建索引时无需再拷贝整表数据,以提升索引的创建速度。 FCI 操作流程:(1)对表加共享S锁,允许其他会话读操作,但禁止写操作,(2)扫描Cluster index
阅读全文
摘要:在MySQL 5.5/5.6/5.7版本中,DDL操作是非原子型操作,在执行过程中遇到实例故障重启,可能导致DDL没有完成也没有回滚。如 1、执行DROP TABLE T1,T2操作,实例重启恢复后,表T1被删除,表T2仍存在。 2、执行CREATE TABLE操作,创建过程中实例重启,表创建失败但
阅读全文
摘要:MySQL 5.5版本 在MySQL 5.5版本前,所有DDL操作都使用Copy Table的方式完成,操作过程中原表数据库不允许写入,只能读取,在MySQL 5.5版本中引入FIC(Fast index creation)特性。 FCI特性: 在MySQL 5.6.7版本前,DDL操作主要有cop
阅读全文
摘要:可以用show table status 来查看表的信息,如: show table status like '%waybill5%' \G 但使用information_schema.`TABLES`更方便查看。 查看数据库级别的使用情况 SELECT TABLE_SCHEMA AS databa
阅读全文
摘要:在MySQL中,可以通过lower_case_table_names参数来设置是否区分表名大小写问题,参数有效取值为:0,1,2:0表示,表在文件系统存储的时候,对应的文件名是按建表时指定的大小写存的,MySQL 内部对表名的比较也是区分大小写的;1表示,表在文件系统存储的时候,对应的文件名都小写的
阅读全文
摘要:MySQL 5.5版本DDL在MySQL 5.6.7版本前,DDL操作主要有copy和inplace两种方式,两种方式全程都需要锁表禁止写操作,允许部分时间段的读操作。copy方式: (1)新建带索引的临时表 (2)锁原表,禁止DML,允许查询 (3)将原表数据拷贝到临时表(无排序,一行一行拷贝)
阅读全文
摘要:MySQL可以使用MODIFY COLUMN / ALTER COLUMN / CHANGE三种方式修改列属性。 对于部分只需要修改表定义而不需要修改表数据的操作,使用ALTER COLUMN操作可以避免数据发生移动,提高ALTER 操作效率。 仅需要修改表结构的操作有:1、更改字段的默认值2、增加
阅读全文
摘要:##========================================================================## ## 修改表字段 ## CHANGE和MODIFY区别在于CHANGE 可以修改列名,而MODIFY不可以,其他修改一样 ALTER TABLE [TABLE_NAME] CHANGE [COLUMN] old_col_name new_co...
阅读全文
摘要:##=============================================## ## 在创建表的时候为字段添加注释 ## CREATE TABLE TB003 ( ID INT PRIMARY KEY AUTO_INCREMENT COMMENT '自增ID', C1 INT COMMENT 'C1列' )ENGINE=InnoDB DEFAULT CHARSET=utf...
阅读全文
摘要:##================================## ## 修改表的存储引擎 ## SHOW TABLE STATUS LIKE 'TB_001' \G; ALTER TABLE TB_001 TYPE = MYISAM; ##================================## ## 查看表中列属性 ## SHOW COLUMNS FROM TB_001...
阅读全文
摘要:DROP TABLE与MySQL版本 MySQL在5.5版本中引入自适应hash索引,用于提升经常访问的数据页的性能,在删除表时,需要先通过扫描LRU链表找到该表在自适应hash索引使用的数据页,将这些数据从自适应hash索引中删除。如果为MySQL实例配置较多的物理内存,扫描自适应hash索引的L
阅读全文
摘要:ALTER TABLE 和FLUSH TABLE导致的间接等待 场景:1、会话A执行耗时较长的操作;2、会话B执行ALTER TABLE 或FLUSH TABLES等操作时,会向其他会话(线程)发送表变更通知,要求其他会话关闭再重新打开相关表;3、会话A执行过程中收到会话B的变更通知,在会话A执行结
阅读全文
摘要:操作方式 在操作系统层对要删除的表添加硬连接 ln demo_table.ibd demo_table.ibd.bak 在MySQL实例上执行DROP TABLE命令 DROP TABLE demo_table; 使用TRUNCATE命令批量删除大文件 ## 设置truncate命令路径 trunc
阅读全文