MySQL 5.7.9 GA穩(wěn)定版新特性解讀
2015年10月22日,MySQL發(fā)布5.7.9穩(wěn)定版,雖然MySQL官方手冊里已經(jīng)有很多關(guān)于MySQL 5.7新特性的介紹,在這里,還是讓我們一起看看在MySQL 5.7里有哪些值得
我們關(guān)注的新特性吧。
1、安全性 用戶表mysql.user的plugin字段不允許為空,默認(rèn)值是mysql_native_password,而不是mysql_old_password,不再支持舊密碼格式;
增加密碼過期機(jī)制,過期后需要修改密碼,否則可能會被禁用,或者進(jìn)入沙箱模式;
使用mysql_install_db初始化時,默認(rèn)會自動生成隨機(jī)密碼,并保存到/var/log/mysqld.log中(grep 'temporary password' /var/log/mysqld.log),而且不創(chuàng)建除
root@localhost 外的其他賬號,也不創(chuàng)建test庫;
在5.7中,推薦使用mysqld --initialize對數(shù)據(jù)庫進(jìn)行初始化,在初始化時如果加上–initial-insecure,則會創(chuàng)建空密碼的 root@localhost 賬號,否則會創(chuàng)建帶密碼的
root@localhost 賬號,密碼直接寫在 log-error 日志文件中(在5.6中是放在~/.mysql_secret里);
在5.7中可以對普通用戶進(jìn)行unlock及l(fā)ock操作。
2、增強(qiáng)了InnoDB引擎的一些功能
優(yōu)化了DDL操作,在涉及到InnoDB臨時表時,性能顯著提升;
在5.6及以前,InnoDB臨時表的元數(shù)據(jù)存儲在InnoDB系統(tǒng)表里,在5.7中,臨時表的信息及元數(shù)據(jù)都存儲在新多出來的表INNODB_TEMP_TABLE_INFO中;
在5.7中,InnoDB臨時表會存儲在一個非壓縮的、單獨(dú)的表空間中,每次啟動MySQL服務(wù),都會自動創(chuàng)建該表空間,默認(rèn)存儲在DATADIR下,其路徑由參數(shù)
innodb_temp_data_file_path指定;
支持在線(INPLACE)增加VARCHAR列的長度。不過0-255長度是一個區(qū)間,256以上是另一個區(qū)間,不能跨越255這個坎,比如把長度從100擴(kuò)展成1000(因?yàn)?55長度以內(nèi)
額外用1個字節(jié)表示,大于255長度則需要額外2個字節(jié)表示);
不支持在線縮小VARCHAR的長度 ;
支持innodb_page_cleaners選項(xiàng)可設(shè)置多個page cleaner線程提高臟頁刷新效率 ;
可通過設(shè)置innodb_undo_log_truncate等選項(xiàng)自動刪除不用的undo log ;
加強(qiáng)InnoDB read-only模式的性能 ;
在5.7中,可以創(chuàng)建一個普通的表空間:
CREATE TABLESPACE `tablespace_name`
ADD DATAFILE 'file_name.ibd'
[FILE_BLOCK_SIZE = n]
3、SQL_MODE 默認(rèn)啟用STRICT_TRANS_TABLES模式; 對ONLY_FULL_GROUP_BY模式實(shí)現(xiàn)了更復(fù)雜的特性支持,并且也被默認(rèn)啟用; 其他被默認(rèn)啟用的sql mode
還有NO_ENGINE_SUBSTITUTION。
在5.6中對一個10字符長度的VARCHAR列寫入15個字符,會自動截斷并給出告警,而在5.7,則直接拋出錯誤了。
4、優(yōu)化online操作,例如修改buffer pool、修改索引名(非主鍵)、修改REPLICATION FILTER、修改MASTER而無需關(guān)閉SLAVE線程等眾多特性。
5、在5.7中,可以在INFORMATION_SCHEMA里面的表中查看MySQL的系統(tǒng)參數(shù)
6、支持一個表上有多個觸發(fā)器,這樣一來,原先已有觸發(fā)器表也可以支持用pt-osc 了
7、支持對在線某個連接直接查看執(zhí)行計劃,比如EXPLAIN FOR CONNECTION 1024
8、新增log_syslog選項(xiàng),可將MySQL日志打印到系統(tǒng)日志文件中
9、在MySQL 5.6以前,在客戶端CTRL+C后會直接退出啊MySQL客戶端,這一點(diǎn)比較惡心,在5.7以后不會退出客戶端而是終端當(dāng)前的操作
10、新增一個比較好的功能,就是在CREATE | ALTER TABLE時,可以在某張表已有列的基礎(chǔ)上,對新增的列進(jìn)行運(yùn)算:
CREATE TABLE triangle (
sidea DOUBLE,
sideb DOUBLE,
sidec DOUBLE AS (SQRT(sidea * sidea + sideb * sideb))
);
INSERT INTO triangle (sidea, sideb) VALUES(1,1),(3,4),(6, ;
mysql> SELECT * FROM triangle;
+-------+-------+--------------------+
| sidea | sideb | sidec |
+-------+-------+--------------------+
| 1 | 1 | 1.4142135623730951 |
| 3 | 4 | 5 |
精彩學(xué)習(xí)內(nèi)容:
我贏職場二維.png (14.31 KB, 下載次數(shù): 60)
下載附件
2016-04-26 16:47 上傳
|