首页 > 数据库 > MySQL > 正文

MySQL5.6到5.7版本升级采用IN-PLACE的升级方式需要具体关注之处

2024-07-24 12:32:16
字体:
来源:转载
供稿:网友
       MySQL5.6到5.7版本升级采用IN-PLACE的升级方式需要具体关注之处:

一.SQL变更
      GET_LOCK()函数行为
      MySQL 5.7.5之前GET_LOCK()在执行第二次的额时候会释放前面获得的锁,在此版本以后支持同时获得多个锁,如:
 
mysql> select version();
+------------+
| version()  |
+------------+
| 5.6.33-log |
+------------+
1 row in set (0.00 sec)
 
二.derived_merge被自动开启
 
      5.7中优化器使用一致的机制处理from语句中的派生表和视图是为了更好地避免不必要的物化并能够通过条件下放产生更有效的执行计划。
 
      但是,对于修改表的语句(例如DELETE或UPDATE),使用先前物化的派生表的合并策略可能会导致ER_UPDATE_TABLE_USED错误:
 
     错误原因:外部查询表和内部更改的表属于同一张表时,如果将派生表合并到外部查询块就会触发此错误(物化方式不会导致此错误,因为实际上,
它将派生表转换为单独的表)
 
三.关键字和保留字
 
 
如果要引用保留字,必须使用反引号括起或跟在限定名称的逗点后,否则报语法错误,如
 
mysql> CREATE TABLE interval (begin INT, end INT);
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'interval (begin INT, end INT)' at line 1
mysql> CREATE TABLE `interval` (begin INT, end INT);
Query OK, 0 rows affected (1.14 sec)
mysql> CREATE TABLE test.interval (begin INT, end INT);
Query OK, 0 rows affected (1.84 sec)
 
四.表联合查询
 
使用union连接的单个查询语句中如果有order by或limit关键字需要将此单个语句使用括号引起。

(编辑:武林网)

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表