程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> 詳解MySQL5.5新特性

詳解MySQL5.5新特性

編輯:關於MYSQL數據庫
 MySQL進入Oracle產品體系,獲得了更多研發投入,新一代MySQL產品---MySQL5.5即將面世,較之之前的5.1版本,將獲得諸多特性方面的提升,簡單總結如下:

  1. 默認存儲引擎更改為InnoDB

  InnoDB作為成熟、高效的事務引擎,目前已經廣泛使用,但MySQL5.1之前的版本默認引擎均為MyISAM,此次MySQL5.5終於做到與時俱進,將默認數據庫存儲引擎改為InnoDB,並且引進了Innodb plugin 1.0.7。此次更新對數據庫的好處是顯而易見的:InnoDB的數據恢復時間從過去的一個甚至幾個小時,縮短到幾分鐘(InnoDB plugin 1.0.7,InnoDB plugin 1.1, 恢復時采用紅-黑樹)。InnoDB Plugin 支持數據壓縮存儲,節約存儲,提高內存命中率,並且支持adaptive flush checkpoint, 可以在某些場合避免數據庫出現突發性能瓶頸。

  Multi Rollback Segments: 原來InnoDB只有一個Segment,同時只支持1023的並發。現已擴充到128個Segments,從而解決了高並發的限制。

  2. 多核性能提升

  Metadata Locking (MDL) Framework替換LOCK_open mutex (lock),使得MySQL5.1及過去版本在多核心處理器上的性能瓶頸得到解決,官方表示將繼續增強對MySQL多處理器支持,直至MySQL性能“不受處理器數量的限制”

  3. 復制功能(Replication)加強

  MySQL復制特性是互聯網公司應用非常廣泛的特性,作為MySQL最實用最簡單的擴展方式,過去的異步復制方式已經有些不上形勢,對某些用戶來說“異步復制”意味著極端情況下的數據風險,MySQL5.5將首次支持半同步(semi-sync replication)在MySQL的高可用方案中將產生更多更加可靠的方案。另外Slave fsync tunning;Relay log corruption recovery和Replication Heartbeat也將實現。

  4. 增強表分區功能

  MySQL 5.5的分區對用戶絕對是個好消息,更易於使用的增強功能,以及TRUNCATE PARTITION命令都可以為DBA節省大量的時間,有時對最終用戶亦如此:

  1) 非整數列分區:任何使用過MySQL分區的人應該都遇到過不少問題,特別是面對非整數列分區時,MySQL 5.1只能處理整數列分區,如果你想在日期或字符串列上進行分區,你不得不使用函數對其進行轉換。很麻煩,而MySQL 5.5中新增了兩類分區方法,RANG和LIST分區法,同時在新的函數中增加了一個COLUMNS關鍵詞。在MySQL 5.1中使用分區另一個讓人頭痛的問題是date類型(即日期列),你不能直接使用它們,必須使用YEAR或TO_DAYS轉換這些列,但在MySQL 5.5中情況發生了很大的變化,現在在日期列上可以直接分區,並且方法也很簡單;

  2) 多列分區:COLUMNS關鍵字現在允許字符串和日期列作為分區定義列,同時還允許使用多個列定義一個分區;

  3) 可用性增強:truncate分區。分區最吸引人的一個功能是瞬間移除大量記錄的能力,DBA都喜歡將歷史記錄存儲到按日期分區的分區表中,這樣可以定期刪除過時的歷史數據。 但當你需要移除分區中的部分數據時,事情就不是那麼簡單了,刪除分區沒有問題,但如果是清空分區,就很頭痛了,要移除分區中的所有數據,但需要保留分區本身,你可以:使用DELETE語句,但我們知道DELETE語句的性能都很差。使用DROP PARTITION語句,緊跟著一個EORGANIZE PARTITIONS語句重新創建分區,但這樣做比前一個方法的成本要高出許多。MySQL 5.5引入了TRUNCATE PARTITION,它和DROP PARTITION語句有些類似,但它保留了分區本身,也就是說分區還可以重復利用。TRUNCATE PARTITION應該是DBA工具箱中的必備工具;

  4) 更多微調功能:TO_SECONDS:分區增強包有一個新的函數處理DATE和DATETIME列,使用TO_SECONDS函數,你可以將日期/時間列轉換成自0年以來的秒數,如果你想使用小於1天的間隔進行分區,那麼這個函數就可以幫到你。

  5. Insert Buffering 如果在buffer pool中沒找到數據,那麼直接buffer起來,避免額外的IO;Delete & Purge Buffering 跟插入一樣,如果buffer pool中沒有命中,先buffer起來,避免額外的IO。

  6. Support for Native AIO on Linux

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved