MySQL 5.7中的更多改進,包括計算列
原文 http://www.infoq.com/cn/news/2015/04/MySQL-5.7
讓我們繼續上一周的內容,討論MySQL 5.7中的新特性,我們將把注意力集中于新的安全方面的特性。首先,新版本中取消了mysql_old_password這個認證插件。其實這個插件從版 本4.x開始就已經被標注為過期了,但直到5.7.5版本中才被正式移除。從5.7.6開始,你必須顯式地在mysql.user表中聲明使用 mysql_native_password方式進行認證。
新版本的MySQL開始支持密碼過期策略了。如果系統管理員需要臨時關閉某個用戶或應用程序的訪問權限,可以簡單地將其帳號鎖定即可。
和其它許多產品一樣,MySQL的發展趨勢是提供“默認的安全性”。這就意味著如果你使用“mysqld –initialize”方式安裝MySQL,安裝程序就會自動為管理員帳號創建一個隨機的密碼。該密碼記錄在錯誤日志中,并且在管理員首次登錄時必須修 改密碼。使用這種安裝選項不會生成任何匿名帳號,也不會創建測試數據庫。
使用GRANT語句自動創建用戶帳號的方式已經被標注為過期特性,同樣,使用GRANT語言修改帳號屬性,例如認證或SSL設置的方式也成為過期特性。
數據完整性
MySQL的事務型存儲引擎現在默認開啟嚴格模式。雖然仍然可以通過INSERT IGNORE或UPDATE IGNORE等語句覆蓋嚴格模式,但對于多數常見的訪問來說,這種默認配置應該能夠大大降低無記載數據損壞的發生次數。
此外,在ALTER TABLE語句中不再支持IGNORE語法了。
ERROR_FOR_DIVISION_BY_ZERO、NO_ZERO_DATE和 NO_ZERO_IN_DATE等SQL模式不再作為單獨的配置存在,它們的功能已經集成在嚴格模式中了。
性能
對于所有的存儲引擎來說,都可以對索引進行重命名,而不會產生表復制操作。
包含GROUP BY子句的語句將不會隱式地根據該子句的內容對數據進行排序了,對于那些依賴于隱式排序特性的應用程序來說,這個變更可能會造成某些問題。
特性
MySQL現在支持計算列了,這一特性被稱為“ 生成列 ”。語法本身有一點古怪的地方,因為它無法從表達式中推斷出數據類型,不過它還是支持你所期待的各種特性,例如可以選擇將計算值保存在表中,也可以選擇在讀取的時候進行計算。被保存的計算列能夠添加索引。
HANDLER 能夠允許客戶端對某張表或索引進行直接訪問,現在這一特性可以在分區表中使用了。
查看英文原文: More Enhancements for MySQL 5.7 including Computed Columns