MySQL 不能用create table as select 的原因

1、新表不会自动创建创建和原表相同的索引。 2、一个事务中混合了事务和非事务语句。它会提交当前和未完成的事务。 例如,该例子中,第2个update未执行成功,会导致第1个update回滚,但是其中的CTAS语句为DDL操作,无法回滚。 解决办法:使用临时表create temporary table ,退出会话后临时表自动删除。 begin; update accounts set amount

Read more

order by + limit 改写优化

order by +limit 常用于分页功能。本案例中,用ID列进行排序,除了查询ID列外,还查询了value和stuffing列。这种情况容易出现性能问题或者不是性能最优的SQL写法。

测试中发现,如果t_limit为MySIAM。很容易出现性能问题,执行计划走全表扫描不走索引。 现在几乎不用MySIAM,所以本文测试结果基于I

Read more

Last_IO_Error: Got fatal error 1236 from master when reading data from binary log

很久不关注MHA,最近看到已经升级到 MHA 0.58,开始支持MySQL的GTID。 GTID对于MySQL复制而言,已经是一场革命。复制变得更加简单,创建复制从库时无需指定主库的file和position,新引入的 master_auto_position=1 即可自动比对主从库之间的binlog差异,自动进行同步,无疑大大节省了DBA操作成本。 GTID的引入,对于DBA而言增加了学习成本。

Read more

MySQL 5.7 新增默认账号 mysql.session和mysql.sys

mysql 5.7.20,mysql.user中默认有2个陌生的用户,mysql.session  和 mysql.sys。

‘mysql.sys’@’localhost’:  用于 sys schema中对象的定义。使用 mysql.sys 用户可避免DBA重命名或者删除root用户

Read more

MySQL MEMROY引擎及性能比对

同事咨询MySQL MEMROY引擎的细节,能否满足需求。没有太多了解,这里做个系统学习总结。 MEMORY存储引擎创建的表数据只能保存在内存。 MySQL宕机、硬件故障或者意外掉电,都会造成MEMORY引擎表丢失数据。所以,MEMROY表中的数据来源于其他表(可落盘永久保存)用于只读适用,或者用于临时工作起到数据周转。 MEMROY 存储引擎特性 Storage limits RAM Trans

Read more

Atlas ERROR 1105 (07000): Proxy Warning – Syntax Forbidden

公司的一套老Atlas执行delete时报如下错误

猜测atlas对删除全表的操作做了限制。尝试加上limit限制删除的条数,依然报错

看来也可能是没有where条件造成的,添加伪where条件测试,删除成功。 [crayon-662b4cef41d5c3590017

Read more

利用MySQL全备份,如何只恢复一个库或者一个表?

  在实际工作中,一个MySQL实例中可能有多个database。而我们备份时,通常采用完全备份,将所有database都备份到一个文件中。 但是,偶尔会遇到只恢复一个database或者一个表的情况。怎么解决呢? 一、利用全备恢复一个库(database)的数据 案例:朋友在群里问, MySQL全库备份。如何只恢复一个库? 1、采用–one-database 选项。不建议使

Read more