Mysql5.5&Mysql5.6&Mysql5.7特性

黄舟
發布: 2017-02-07 11:13:32
原創
1155 人瀏覽過

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

效能提升

  • 預設InnoDB plugin引擎。具有提交、回滾和crash恢復功能、ACID相容。

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

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

  • 支援dynamic(primary key快取記憶體 避免主鍵查詢所引起的IO )與compressed(支援資料及索引壓縮)行格式。

  • InnoDB plugin檔案格式Barracuda、支援表壓縮、節約儲存、提供記憶體命中率、truncate table速度更快。

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

  • Innodb_thread_concurrency預設為0,執行緒並發數無限制,可依具體應用設定最佳值。

  • Innodb_io_capacity可以動態調整刷新髒頁的數量,改善大批量更新時刷新髒頁跟不上導致的效能下降問題。 Default:200,跟硬碟的IOPS有關。

  • 充分利用CPU多核心處理能力innodb_read_io_threads閾值:1-64innodb_write_io_threads 閾值:1-64根據資料庫的讀寫比靈活設置,充分發揮多CPU、儲存設備的效能,不支援動態負載 。

  • 自適應刷新髒頁

  • 熱資料存活更久

  • buffer pool多實例 :innodb_buffer_pool_instatexs 參數過inn

  • Linux上實現非同步IO

  • 重新支援組提交

穩定性提升

  • 支持半同步Replication。

  • 增加Relay Log 自修功能。

  • Crash recovery。

  • 引入紅-黑樹做插入排序的中間資料結構,時間複雜度大幅降低,減少恢復時間。

  • Thread Pool 分組排隊限流

Mysql5.6 特性,比較5.5

  • 預設參數的改變

  • 支援online達露增參數innodb_page_size可以設定page大小

  • 整合了memcached API,可以使用API​​來直接存取innodb表,並非SQL(減少SQL解析、查詢最佳化代價)

  • innodb只讀取事務,不需要設定TRX_ID字段,

  • 減少內部資料結構開銷,減少read view

  • 僅僅非唯讀事務依然需要TRX_ID
  • innodb
  • undo log可獨立出系統表空間

  • redo log最大可增長到512G

  • innodb後台執行緒獨立出來

    引擎層直接過濾數據,避免二次回表
  •         節省BP空間,提高查詢效能

BKA

        交給MRR介面合併為順序訪問。
  • MRR
  •         全名為Multi Range Read:

            在BKA應用後,透過MRR介面應用程式存取後,透過MRR 對資料進行順序存取。
  •         變大量隨機為順序存取。透過輔助索引擷取大量資料時,效能提昇明顯

            磁頭無需來回尋道,page只需讀取一次,且較好利用了innodb線性預讀功能(每次預讀64個連續page)。
  • 統計資訊持久化,mysqld重啟後不遺失

explain語句支援insert,update,delete,replace語句,並且支援JSON格式
  • 子查詢提升。

  • Mysql5.7 特性,相較於5.5 5.6

     安全性

  • 用戶表sqlmyative 的密碼碼密碼格式;

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

  • 增加密碼過期機制,過期後需要修改密碼,否則可能會停用,或進入沙箱模式;

  • 提供了更為簡單SSL安全存取配置,並且預設連線就採用SSL的加密方式。

靈活性

  • MySQL資料庫從5.7.8版本開始,也提供了對JSON的支援。

  • 可以混合儲存結構化資料和非結構化數據,同時擁有關聯式資料庫和非關係型資料庫的優點

  • 能夠提供完整的事務支援

  • generated column引入的新交易 5.特性,所謂generated column,就是資料庫中這一列由其他欄位計算而得

易用性

  • 在MySQL 5.7 之前,如果使用者輸入了錯誤的SQL語句,按下ctrl+c ,雖然能夠「結束」SQL語句的運行,但是,也會退出目前會話,MySQL 5.7對這違反直覺的地方進行了改進,不再退出會話。

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

  • sys schema是MySQL 5.7.7中引入的一個系統函式庫,包含了一系列視圖、函數和預存過程, 此專案專注於MySQL的易用性。

  • 例如:如何查看資料庫中的冗餘索引;如何取得未使用的索引;如何查看使用全表掃描的SQL語句。

可用性

  • 線上設定 複製的過濾規則 不再需要重新啟動MySQL,只需要停止SQLthread,修改完成以後,啟動SQLthread。

  • 線上修改buffer pool的大小。

  • Online DDL MySQL 5.7支援重新命名索引和修改varchar的大小,這兩個動作在先前的版本中,都需要重建索引或表格。

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

性能

  • 臨時表的性能改進。

            臨時表只可見於目前會話中

            臨時表的生命週期為目前連線(MySQL宕機或重開機

  • MySQL 5.7通過 避免為只讀事務分配事務ID ,不為只讀事務分配回滾段,減少鎖競爭等多種方式,優化了只讀事務的開銷,提高了資料庫的整體效能。

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

    複製效能的改進(支援多執行緒複製(Multi-Threaded Slaves, 簡稱MTS)
  • MySQL的預設設定是函式庫層級的平行複製,為了充分發揮MySQL 5.7的並行複製的功能,我們需要將slave -parallel-type配置成LOGICAL_CLOCK。 ROUP_BY 模式實現了更複雜的特性支持,並且也被預設啟用。後的操作調整為ABORT_SERVER

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

預設開啟mysql崩潰時的binlog安全。安裝不同
  • mysql_install_db已經不再建議使用了,建議改成mysqld --initialize 完成實例初始化。
  • 在初始化時如果加上--initial-insecure,則會建立空密碼的root@localhost 帳號,否則會建立帶密碼的root@localhost 帳號,密碼直接寫在log-error 日誌檔案中;新用戶登入後需要立刻修改密碼,否則無法繼續後續的工作。

以上就是Mysql5.5&Mysql5.6&Mysql5.7特性的內容,更多相關內容請關注PHP中文網(www.php.cn)!




相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!