MySQL各版本的比較


Mysql5.5特性,相對於Mysql5.1

性能提升

  默認InnoDB plugin引擎。具有提交、回滾和crash恢復功能、ACID兼容。

  行級鎖(一致性的非鎖定讀 MVCC)

  表與索引存儲在表空間、表大小無限制。

  支持dynamic(primary key緩存內存 避免主鍵查詢引起的IO )compressed(支持數據及索引壓縮)行格式。

  InnoDB plugin文件格式Barracuda、支持表壓縮、節約存儲、提供內存命中率、truncate table速度更快。

  原InnoDB只有一個UndoSegment,最多支持1023的並發;現在有128Segments,支持128K個並發(同樣,解決高並發帶來的事務回滾)。

  Innodb_thread_concurrency默認為0,線程並發數無限制,可根據具體應用設置最佳值。

  Innodb_io_capacity可以動態調整刷新臟頁的數量,改善大批量更新時刷新臟頁跟不上導致的性能下降問題。 Default200,跟硬盤的IOPS有關。

  充分利用CPU多核處理能力innodb_read_io_threads閾值:1-64innodb_write_io_threads閾值:1-64根據數據庫的讀寫比靈活設置,充分發揮多CPU、高性能存儲設備的性能,不支持動態加載 。

  自適應刷新臟頁

  熱數據存活更久

  buffer pool多實例:innodb_buffer_pool_instances參數增加innodb_buffer_pool實例個數,大大降低buffer poolmutex爭搶過熱情況。

  Linux上實現異步IO

  重新支持組提交

 

穩定性提升

  支持半同步Replication

  增加Relay Log 自我修復功能。

  Crash recovery

  引入紅-黑樹做插入排序的中間數據結構,時間復雜度大大降低,減少恢復時間。

  Thread Pool分組排隊限流

 

 

 

Mysql5.6特性,相比5.5

默認參數的改變

  Back_log排隊隊列

  支持全文索引

  支持online DDL create,alter,drop

  可以在建表時指定表空間位置

          create table external (x int unsigned not null primary key)data directory = '/volumes/external1/data';

  新增參數innodb_page_size可以設置page大小

  整合了memcached API,可以使用API來直接訪問innodb表,並非SQL(減少SQL解析、查詢優化代價)

  innodb只讀事務,不需要設置TRX_ID字段,

  減少內部數據結構開銷,減少read view

  僅僅非只讀事務依然需要TRX_ID

 

innodb改進點

  innodb表空間在線遷移(TransportableTablespaces)

  undo log可獨立出系統表空間

  redo log最大可增長到512G

  innodb后台線程獨立出來

優化器改進

  ICP:可以在引擎層直接過濾數據,避免二次回表節省BP空間,提高查詢性能

  BKA:SQL通過輔助索引要訪問表數據時候,將大量的隨機訪問放入緩存,交給MRR接口合並為順序訪問。

  MRR:BKA算法應用之后,通過MRR接口合並隨機訪問為順序訪問,再去檢索表數據。

       變大量隨機為順序訪問。在通過輔助索引檢索大量數據時,性能提升明顯

       磁頭無需來回尋道,page只需讀取一次,且較好利用了innodb線性預讀功能(每次預讀64個連續page)。

   統計信息持久化,mysqld重啟后不丟失

  explain語句支持insertupdatedeletereplace語句,並且支持JSON格式

  子查詢優化提升。

 

 

Mysql5.7特性,相比5.5 5.6

  MySQL 5.6:初始化數據時需要進到家目錄的script目錄下

  MySQL 5.7:初始化數據時需要進到家目錄的bin目錄下

  已然已經廢棄了使用mysql_install_db這個命令進行初始化數據的操作了。使用mysqld --initialize

 

安全性用戶表mysql.userplugin字段不允許為空,默認值是mysql_native_password,而不是mysql_old_password,不再支持舊密碼格式;

  增加密碼過期機制,過期后需要修改密碼,否則可能會被禁用,或者進入沙箱模式;

  增加密碼過期機制,過期后需要修改密碼,否則可能會被禁用,或者進入沙箱模式;

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

 

靈活性:MySQL數據庫從5.7.8版本開始,也提供了對JSON的支持。

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

  能夠提供完整的事務支持

  generated columnMySQL 5.7引入的新特性,所謂generated column,就是數據庫中這一列由其他列計算而得

 

易用性MySQL 5.7之前,如果用戶輸入了錯誤的SQL語句,按下ctrl+c,雖然能夠結束”SQL語句的運行,但是,也會退出當前會話,MySQL 5.7對這一違反直覺的地方進行了改進,不再退出會話。

  MySQL 5.7可以explain一個正在運行的SQL,這對於DBA分析運行時間較長的語句將會非常有用。

  sys schemaMySQL 5.7.7中引入的一個系統庫,包含了一系列視圖、函數和存儲過程, 該項目專注於MySQL的易用性。

    例如:如何查看數據庫中的冗余索引;如何獲取未使用的索引;如何查看使用全表掃描的SQL語句。

 

可用性:MySQL 5.7通過避免為只讀事務分配事務ID,不為只讀事務分配回滾段,減少鎖競爭等多種方式,優化了只讀事務的開銷,提高了數據

  在線設置復制的過濾規則 不再需要重啟MySQL,只需要停止SQL thread,修改完成以后,啟動SQL thread

  在線修改buffer pool的大小。

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

  在線開啟GTID,在之前的版本中,由於不支持在線開啟GTID,用戶如果希望將低版本的數據庫升級到支持GTID的數據庫版本,需要先關閉數據庫,再以GTID模式啟動,所以導致升級起來特別麻煩。

 

性能

  臨時表的性能改進。

  臨時表只在當前會話中可見

  臨時表的生命周期是當前連接(MySQL宕機或重啟,則當前連接結束)

  只讀事務性能改進庫的整體性能。

  加速連接處理。

  在MySQL 5.7之前,變量的初始化操作(THDVIO)都是在連接接收線程里面完成的,現在將這些工作下發給工作線程,以減少連接接收線程的工作量,提高連接的處理速度。這個優化對那些頻繁建立短連接的應用,將會非常有用。

  復制性能的改進 (支持多線程復制(Multi-Threaded Slaves, 簡稱MTS

  MySQL的默認配置是庫級別的並行復制,為了充分發揮MySQL 5.7的並行復制的功能,我們需要將slave-parallel-type配置成LOGICAL_CLOCK

  支持多源復制(Multi-source replication

 

嚴格性改變

  默認啟用STRICT_TRANS_TABLES模式。

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

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

 

默認參數的改變

  默認binlog格式調整為ROW格式

  默認binlog錯誤后的操作調整為ABORT_SERVER

  在先前的選項下(binlog_error_action=IGNORE_ERROR),如果一個錯誤發生,導致無法寫入binlogmysql-server會在錯誤日志中記錄錯誤並強制關閉binlog功能。這會使mysql-server在不記錄binlog的模式下繼續運行,導致從庫無法繼續獲取到主庫的binlog

  默認開啟mysql崩潰時的binlog安全。

  默認調低slave_net_timeout

 

安裝不同

  mysql_install_db已經不再推薦使用了,建議改成mysqld --initialize完成實例初始化。如果datadir指向的目標目錄下已經有數據文件,則會有[ERROR] Aborting

  在初始化時如果加上--initial-insecure,則會創建空密碼的root@localhost賬號,否則會創建帶密碼的 root@localhost賬號,密碼直接寫在log-error日志文件中;新用戶登入后需要立刻修改密碼,否則無法繼續后續的工作。


免責聲明!

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



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