MySQL 不能用create table as select 的原因
1、新表不会自动创建创建和原表相同的索引。 2、一个事务中混合了事务和非事务语句。它会提交当前和未完成的事务。 例如,该例子中,第2个update未执行成功,会导致第1个update回滚,但是其中的CTAS语句为DDL操作,无法回滚。 解决办法:使用临时表create temporary table ,退出会话后临时表自动删除。 begin; update accounts set amount
Read more1、新表不会自动创建创建和原表相同的索引。 2、一个事务中混合了事务和非事务语句。它会提交当前和未完成的事务。 例如,该例子中,第2个update未执行成功,会导致第1个update回滚,但是其中的CTAS语句为DDL操作,无法回滚。 解决办法:使用临时表create temporary table ,退出会话后临时表自动删除。 begin; update accounts set amount
Read moreorder by +limit 常用于分页功能。本案例中,用ID列进行排序,除了查询ID列外,还查询了value和stuffing列。这种情况容易出现性能问题或者不是性能最优的SQL写法。
1 2 3 |
SELECT id, value, LENGTH(stuffing) AS len FROM t_limit ORDER BY id LIMIT 150000, 10; |
测试中发现,如果t_limit为MySIAM。很容易出现性能问题,执行计划走全表扫描不走索引。 现在几乎不用MySIAM,所以本文测试结果基于I
Read more很久不关注MHA,最近看到已经升级到 MHA 0.58,开始支持MySQL的GTID。 GTID对于MySQL复制而言,已经是一场革命。复制变得更加简单,创建复制从库时无需指定主库的file和position,新引入的 master_auto_position=1 即可自动比对主从库之间的binlog差异,自动进行同步,无疑大大节省了DBA操作成本。 GTID的引入,对于DBA而言增加了学习成本。
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在os层numa关闭时,打开bios层的numa会影响性能,QPS会下降15-30%; 在bios层面numa关闭时,无论os层面的numa是否打开,都不会影响性能。 安装numactl: #yum install numactl -y #numastat 等同于 cat /sys/devices/system/node/node0/numastat ,在/sys/devices/sys
Read more同事咨询MySQL MEMROY引擎的细节,能否满足需求。没有太多了解,这里做个系统学习总结。 MEMORY存储引擎创建的表数据只能保存在内存。 MySQL宕机、硬件故障或者意外掉电,都会造成MEMORY引擎表丢失数据。所以,MEMROY表中的数据来源于其他表(可落盘永久保存)用于只读适用,或者用于临时工作起到数据周转。 MEMROY 存储引擎特性 Storage limits RAM Trans
Read more公司的一套老Atlas执行delete时报如下错误
1 2 |
mysql> delete from sdb_jos_order_js t ; ERROR 1105 (07000): Proxy Warning - Syntax Forbidden |
猜测atlas对删除全表的操作做了限制。尝试加上limit限制删除的条数,依然报错
1 2 |
mysql> delete from sdb_jos_order_js t limit 1; ERROR 1105 (07000): Proxy Warning - Syntax Forbidden |
看来也可能是没有where条件造成的,添加伪where条件测试,删除成功。 [crayon-6767e5668146f4494536
Read more在实际工作中,一个MySQL实例中可能有多个database。而我们备份时,通常采用完全备份,将所有database都备份到一个文件中。 但是,偶尔会遇到只恢复一个database或者一个表的情况。怎么解决呢? 一、利用全备恢复一个库(database)的数据 案例:朋友在群里问, MySQL全库备份。如何只恢复一个库? 1、采用–one-database 选项。不建议使
Read more