mysql5.7新特性


 

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語法。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM