mysql5.5 5.6 5.7新特性

1,5.5默認存儲引擎爲innodb

2,5.5增加cpu多核處理能力:innodb_read_io_threads

 innodb_write_io_threads

3,5.5改善磁盤IO

提高髒頁刷新增也數量和合並插入數量:innodb_io_capacity

增加自適應刷新髒頁功能:innodb_adaptive_flushing

(innodb刷新髒頁的規則是在如下三種情況下才會把innodb_buffer_pool的髒頁輸入磁盤:

1,當超過innodb_max_dirty_pages_pct設定的值時,

2,重做日誌ib_logfile文件寫滿時,

3,機器空閒的時候。)

4,5.5innodb的數據恢復時間加快

 redo log 最大可以設置爲4GB,降低了IO需求,刷髒頁頻率降低,極大提高了Innodb寫的性能

5,5.5innodb支持多個bufferPool :innodb_buffer_pool_instances

6,5.5支持關閉自適應哈希索引功能

哈希索引可以提高查詢性能,但是高併發情況下會造成RW-latch掙用,堵塞進程

可以:show engine innodb status\G; 監控SEMA-PHORES ,如果waits很多那麼應該關閉該功能,從而提升寫性能

innodb_adaptive_hash_index參數開啓或關閉hash索引

7,5.5innodb可以宣誓使用內存分配程序

   TCMalloc每個線程均有緩衝區,可以大幅度提高mysql性能和內存使用

   mysql多線程小內存分配

8,5.5提高默認innodb線程併發數

      innodb_thread_concurrency默認爲0,表示不顯示併發數

9,5.5實現了異步I/O

 innodb_use_native_aio參數

10,5.5恢復組提交

 組提交模式只支持sync_binlog=0,innodb_support_xa=0的情況下 目的是保證innodb存儲引擎redo log事物日誌與binlog日誌順序一致

11,5.5更新創建索引更快,增加刪除索引不會鎖表

創建和刪除非聚集索引不用複製整張表內容了,聚集索引還需要,聚集索引是把primary key和row data 保存在一起,而secondary

index 是單獨存放,有個指針指向primary key

12,5.5支持創建壓縮數據頁

barracuda文件格式且是獨立表空間,才支持數據頁壓縮,另壓縮會帶來額外的cpu消耗

13,5.5可以動態關閉數據元統計功能

       innodb_stats_on_metadata=OFF 5.6默認是關閉 提升mysql性能

14,5.5開啓innodb嚴格檢查模式,增加安全性

innodb_strict_mode=1 默認是off

         sql_mode

15,5.5支持動態更改獨立表空間

       set global innodb_file_per_table=1 默認共享表空間

  支持動態更改innodb鎖超時時間

  set global innodb_lock_wait_timeout= 10  默認50秒

16,5.5增加半同步複製功能

      master上4個相關參數

 rpl_semi_sync_master_enabled=ON 表示master開啓半同步功能

 rpl_semi_sync_master_timeout=10000 默認10000毫秒即10秒等待slave,即某次事物中等待超過10秒降級爲異步複製

 rpl_semi_sync_master_wait_no_slave, 默認ON,表示master每個事務提交後都等待slave接受確認信號,若爲off,slave追趕上後不會開啓半同步複製

 rpl_semi_sync_master_trace_level=32,默認32,開啓半同步複製的模式的調試級別

 slave上2個參數

 rpl_semi_sync_slave_enabled=ON 表示master開啓半同步功能

 rpl_semi_sync_slave_trace_level=32,默認32,開啓半同步複製的模式的調試級別

 

 半同步複製跟IO_therad有直接關係與sql_therad沒關係,也就是說slave 從庫接受到二進制日誌後會給master主一個確認,並不會管relay-log中繼日誌否是執行完。

      異步複製的性能(吞吐率)要好於半同步複製。

17,5.5複製功能加強,增加中繼日誌relay_log自我修復功能

relay_log_recovery=1

5.6同步複製新特性

mysql可以通過GTID自動找同步點,無需指定binglog和pos點(基於事務,myisam不支持)另無法跳過錯誤,gtid模式下不支持:sql_slave_skip_counter參數

開啓參數:gtid-mode=ON

 disable-gtid-unsafe-statements=ON

增加基於庫的多線程複製,多個庫複製可以使用多線程複製,一個庫的表裏多線程複製無效

開啓參數:slave_parallel_workers 默認爲0 不開啓,最大可以開啓1024個線程。

18,5.6版本後子查詢被改爲join方式

19,5.6新特性 快速預熱buffer_pool 

     my.cnf中添加:

innodb_buffer_pool_dump_at_shutdown=1 關閉時把熱數據備份到本地磁盤ib_buffer_pool文件中

innodb_buffer_pool_load_at_startup=1  啓動時加載熱數據到內存

20,5.6新加binlog-row-imaeg參數

      當binlog_format=row時,binlog-row-imaeg=full ,binlog日誌會記錄影響的行所有記錄

binlog-row-imaeg=minimal,binlog日誌只記錄影響的那一行的記錄

21,5.6year(2)自動轉換爲year(4)參數

22,5.6在線ddl功能,即增加字段時,增、刪、改、查均不受影響,不鎖表(5.5鎖表)

23,5.6一條sql可以使用兩個索引,支持全文索引

24,5.6支持explain update

mysql5.7版本

1、安全性 

  mysql.user表的改變

  初始化方式的改變

  MySQL官方已經刪除了test數據庫

  提供了更爲簡單SSL安全訪問配置,並且默認連接就採用SSL的加密方式

  可以爲用戶設置密碼過期策略,一定時間以後,強制用戶修改密碼:

   ALTER USER 'jeffrey'@'localhost' PASSWORD EXPIRE INTERVAL 90 DAY; 

   可以”鎖”住用戶,用以暫時禁用某個用戶:

   ALTER USER  'jeffrey'@'localhost' ACCOUNT LOCK;

   ALTER USER l 'jeffrey'@'localhost'  ACCOUNT UNLOCK; 

 

2、靈活性

支持json

1.可以混合存儲結構化數據和非結構化數據,同時擁有關係型數據庫和非關係型數據庫的優點

2.能夠提供完整的事務支持

新增功能generated column

就是在CREATE | ALTER TABLE時,可以在某張表已有列的基礎上,對新增的列進行運算: 

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,8); 

mysql> SELECT * FROM triangle; 

+——-+——-+——————–+ 

| sidea | sideb | sidec | 

+——-+——-+——————–+ 

| 1 | 1 | 1.4142135623730951 | 

| 3 | 4 | 5 | 

| 6 | 8 | 10 | 

+——-+——-+——————–+ 

新增sys schema系統庫

通過sys schema快速的知道,哪些語句使用了臨時表,哪個用戶請求了最多的io,哪個線程佔用了最多的內存,哪些索引是無用索引等

sys schema中包含了大量的視圖,使用performance schema信息,通過視圖的方式給出解決實際問題的答案。


2、innodb引擎增強

   優化了DDL操作 

   MySQL 5.7支持重命名索引和修改varchar的大小,這兩項操作在之前的版本中,都需要重建索引或表

   

   優化了臨時表 InnoDB臨時表會存儲在一個非壓縮的、單獨的表空間中,每次啓動MySQL服務,都會自動創建該表空間,默認存儲在DATADIR下,其路徑由參數innodb_temp_data_file_path指定; 

   

   在線修改buffer pool的大小

   支持online buffer pool resize

   

   在線開啓GTID

   

   

3、SQL_MODE

默認啓用STRICT_TRANS_TABLES模式; 

對ONLY_FULL_GROUP_BY模式實現了更復雜的特性支持,並且也被默認啓用; 

其他被默認啓用的sql mode還有NO_ENGINE_SUBSTITUTION。 

在5.6中對一個10字符長度的VARCHAR列寫入15個字符,會自動截斷並給出告警,而在5.7,則直接拋出錯誤了。 

4、優化online操作,例如修改buffer pool、修改索引名(非主鍵)、修改REPLICATION FILTER、修改MASTER而無需關閉SLAVE線程等衆多特性。 

5、在5.7中,可以在INFORMATION_SCHEMA裏面的表中查看MySQL的系統參數 

6、支持一個表上有多個觸發器,這樣一來,原先已有觸發器表也可以支持用pt-osc 了 

7、支持對在線某個連接直接查看執行計劃,比如EXPLAIN FOR CONNECTION 1024 

8、新增log_syslog選項,可將MySQL日誌打印到系統日誌文件中 

9、在MySQL 5.6以前,在客戶端CTRL+C後會直接退出啊MySQL客戶端,在5.7以後不會退出客戶端而是終端當前的操作 

10、

11、支持多源複製,可以把多個MASTER的數據歸併到一個實例上,如果是同一個表的話,會存在主鍵和唯一索引衝突的風險,需要提前做好規劃。 

12、支持多線程複製。並行複製


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章