MySQL 创建触发器引起的元数据锁
同事反映,在主库使用pt-online-schema-change工具修改字段长度时,引起三个从库中的一个从库产生了元数据锁,此时一个创建触发器的语句在等待获取元数据(Waiting for table metadata lock)。 pt-online-schema-change执行时,会创建三个触发器,用于数据同步,分别是insert、update、delete触发器。 同事在描述问题时,我脑
Read more同事反映,在主库使用pt-online-schema-change工具修改字段长度时,引起三个从库中的一个从库产生了元数据锁,此时一个创建触发器的语句在等待获取元数据(Waiting for table metadata lock)。 pt-online-schema-change执行时,会创建三个触发器,用于数据同步,分别是insert、update、delete触发器。 同事在描述问题时,我脑
Read moreMySQL修改字段默认值的三种方法 1、使用 pt-online-schema-change 工具,通过创建新表,修改字段默认值,copy原表数据到新表,最后将新表rename原表。 成本高,基本对业务无影响。 2、alter table table_name modify column_name default ‘xxx’; 成本很高,等于将原表复制一遍。业务影响大。 3
Read more在MySQL中IP地址可以使用varchar字段类型存储,但是若查找某个IP区间的IP地址就很麻烦。 但是通过 INET_ATON() 函数将IP地址转换为数字(二进制数字格式)就能实现IP地址比较的功能。 inet_aton() converts the Internet host address cp from the IPv4 numbers-and-dots notation into b
Read more基于行复制(row-base replication,RBR)的情况下, binlog_row_image 参数决定了行的镜像(image)是如何写入到binlog日志,改参数从MySQL 5.6引入。 binlog_row_image 是动态参数,可以直接修改,无需重启MySQL实例。 在RBR 中,每个行的变化都会含有两个镜像,前镜像(before image)和后镜像(aft
Read more公司MySQL CRM库有大量不再使用的表(前缀相同),其中19年之前表就多大8000多张。使用批量备份脚本备份这些表后,批量生成truncate脚本开始执行truncate。 truncate过程并不快,一张表大概0.6秒,原以为几分钟内就能搞定,没想到执行了大概一小时。 那么,MySQL 执行truncate table 到底干了啥呢,不看不知道,一看真的刷新认知。 1、MySQ
Read more创建临时表
1 |
mysql> create temporary table t(id int); |
创建的临时表只对当前会话可见,用于存放临时数据,关闭会话临时表自动删除。 show tables看不到表,但是可以通过show create table t\G 来查看表结构。
1 2 3 4 5 6 7 8 9 10 11 |
mysql> show tables; Empty set (0.00 sec) mysql> mysql> show create table t\G *************************** 1. row *************************** Table: t Create Table: CREATE TEMPORARY TABLE `t` ( `id` int(11) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 1 row in set (0.00 sec) |
临时表的默认存储引擎,由 default_tmp_storage
Read moremysql 5.7.20,mysql.user中默认有2个陌生的用户,mysql.session 和 mysql.sys。
1 2 3 4 5 6 7 8 9 |
[mysql]>select user,host from mysql.user; +---------------+-----------+ | user | host | +---------------+-----------+ | mysql.session | localhost | | mysql.sys | localhost | | root | localhost | +---------------+-----------+ 3 rows in set (0.00 sec) |
‘mysql.sys’@’localhost’: 用于 sys schema中对象的定义。使用 mysql.sys 用户可避免DBA重命名或者删除root用户
Read more