1、innodb存儲引擎的增強
A:Online alter table以及索引
alter table t rename index t_idx to t_newidx;

Varchar列的大小在線調整的方法:
Alter table t1 algorithm=inplace,change column c1 c1 varchar(255);
B:Innodb_buffer_pool online change
Mysql5.7.5之后在線調整innodb_buffer的大小,引入chunk的概念,每個chunk默認的大小為128M,innodb_buffer_pool_size以chunk為單位進行動態增大和縮小,innodb_buffer_pool_chunk_size。Innodb_buffer_pool_size 的大小是inndb_buffer_pool_chunk_size*innodb_buffer_pool_instances的倍數,如果不是,將適當調大innodb_buffer_pool_size,值從大改小的過程需要釋放內存。
C:Innodb_buffer_pool_dump和load的增強
通過設置innodb_buffer_pool_dump_pct實現的即dump的百分比,只導出最熱的那部分數據的page,當系統繁忙時,可以通過innodb_io_capacity的參數限制buffer pool_load 的過程。
D:Innodb 臨時表優化
臨時表不在記錄redo log,mysql 5.7把臨時表的數據從系統表空間中抽離出來,形成了自己的獨立表空間,並且把臨時表的相關索引信息保存在信息表information_schema庫下 innodb_temp_table_info表中。

獨立表空間文件名ibtmp1,默認12MB。
E:Page clean的效率提升
show global variables like '%innodb_page%';

Page cleaner線程不再是只有一個,可以通過新增的參數innodb_page_cleaners 來指定page cleaner線程的數量,提高臟頁的刷新效率。
F:Undo log 自動清除
啟動新增的innodb_undo_log_truncate 參數(默認是關閉狀態),設置innodb_undo_log_truncate=1開啟。
當undo log的大小超過innodb_max_undo_log_size參數指定的最大值,undo log 就會自動清除,以防止磁盤空間產生消耗。
2、其他方面的增強
A:安全性的增強
數據庫安裝初始化,廢棄了mysql_install_db命令,改為使用mysqld命令配合--iniialize的方式。Root用戶密碼不在默認為空,而是隨機嘗試一個密碼,保存在錯日志里面。密碼記錄不再是password字段,而是authentication_string字段。
默認安裝之后的test庫沒有了,新增super_read_only參數,來禁止超管的寫操作權限。增加了賬戶密碼有自動過期策略,密碼過期之后需強制進行修改。
B:Sql_mode的變化
默認開啟嚴格的sql mode(STRICT_TRANS_TABLES),5.7版本之前默認是no_engine_substitution,啟用嚴格模式下,如果遇到sql書寫有問題,就會直接拋出錯誤,不會出現超長內容自動被截斷的現象,而且不能再grant命令中直接創建用戶了,需要使用create user命令;
C:Sys schema功能的增強
Sys schema是mysql 5.7.7引入的一個系統庫,包含了一系列的試圖,函數,存儲過程。Sys schema的數據來源主要是performance_shcema。其目的就是為了降低查詢performance_schema的復雜度。
D:復制功能的增強
在復制章節中,我們已經介紹了5.7版本中復制功能的提升,主要分為以下幾點:
並行復制:基於logical-clock(5.7版本引入),一個組內提交的內事物都可以並行,可以達到接近主庫並發效果。
多源復制:
支持又多個master向一個slave復制。多用於多個服務器備份到單個服務器上。可用於異地災備,集中備份。
增強半同步:在mysql5.5半同步復制基礎上的增強,在集群架構切換時可以保證數據的一致性。由after_commit模式變成了after_sysnc,提高了復制的效率和數據的可靠性。
組復制(mgr):有點像Oracle里面的rac集群,可以保證多節點並行寫入數據比較類似PXC,目前不是很成熟,不建議使用。
E:設置查詢SQL的超時(max_execution_time)
5.7.4引入,max_execution_time
Show full processlist;
查看正在執行的線程號。
F:執行計划的增強
Mysql5.7之前,優化器是性能瓶頸點。5.7之后改善了很多功能。比如in語句子查詢優化,mysql5.7的in查詢能夠使用index range scan 方式,union all 不在產生臨時表,新增更多HINTS,並提供HINTS語法。
