MySQL 5.7 新特性之二

簡介

本系列基於5.7.20 版原本講述MySQL的新特性,從安裝,文件結構,SQL ,優化 ,運維層面 複製,等幾個方面展開介紹5.7 的新特性和功能,同時也建議你們跟蹤官方blog和文檔,以儘快知悉其新的變化。html

1 SQL_MODE的變化mysql

5.7版本默認設置SQL_MODE爲"ONLY_FULL_GROUP_BY, STRICT_TRANS_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION"sql

master (none) 09:44:16> show  variables like 'sql_mode';
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------+
| Variable_name | Value                                                                                                                                     |
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------+
| sql_mode      | ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.07 sec)

看着這麼多的值不少DBA小夥伴是否是眼前一亮,這裏說一下我測試過程當中遇到的「坑」,其餘的須要各位去探索。 shell

STRICT_TRANS_TABLES 意思是說要存儲的字段的長度大於字段定義的大小,直接報錯而非像5.6版本以及以前,截斷數據進行存儲,同時拋出一個warning。app

圖片

NO_AUTO_CREATE_USER 意思是不能像5.6 那樣經過grants建立用戶並賦權了,而是像Oracle那樣,先create user,而後再對帳號進行賦權。運維

5.7 對於null,'00000000 00:00:00' 這類default值的影響.工做中遇到不少開發的同窗喜歡用'00000000 00:00:00'來做爲默認時間,在5.6 版本以前能夠,可是在5.7版本中會有必定的問題。ide

注意: 升級版本的時候 確保sql_mode 向前兼容,不然會和開發哥哥吵起來。測試

詳細瞭解SQL_MODE 請移步《sql_mode官方文檔》[2]優化

2 online ddl支持 rename index namespa

我的感受這個功能比較不怎麼實用,一般改變索引名稱的時候,索引中的字段也須要調整,單獨修改索引的狀況比較少。

mysql> alter table yy rename index idxname to idxnm; Query OK, 0 rows affected (0.01 sec) Records: 0 Duplicates: 0 Warnings: 0

3 新增內置的full text 插件,支持中文 ,韓文,日文全文索引。 以前的版本 只能依賴單詞之間空格進行分詞,對於依賴於語義分詞而非空格分詞的其餘語言種類,5.7 版本的引入支持解析中文,韓文,日文的全文索引--ngram full-text parser解決了該問題。具體請移步《ngram Full-Text Parser》

參考文章

[1] https://dev.mysql.com/doc/refman/5.7/en/mysql-nutshell.html

[2] https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sql-mode-changes

相關文章
相關標籤/搜索