MySQL 5.5新特性詳解

qinwen740發表於2011-06-17
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

以上的特性在MySQL 5.5的社群版當中都將包括,在MySQL企業版當中,除以上更新之外,Oracle還加強了更多實用的企業級功能,包括:

  1. 實現線上物理熱備

  MySQL 企業版將包含Innodb Hotbackup(這也許是MySQL和InnDB多年之後重新聚首的新亮點),從而一舉解決過去MySQL無法進行可靠的線上實時物理備份的問題, InnoDB Hot Backup 不需要你關閉你的伺服器也不需要加任何鎖或影響其它普通的資料操作,這對MySQL DBA來說應該是一個不錯的訊息。

  2. MySQL Enterprise Monitor 2.2 & Oracle Enterprise Monitor

   是的,你沒有看錯,MySQL將可以被Oracle Enterprise Monitor監控,這是一個實現起來並不複雜,但在過去絕無可能的變化。並且MySQL企業版監控器(MySQL Enterprise Monitor)得到了更大的加強,版本更新至2.2,對MySQL伺服器資源佔用降低到可以忽略的地步,整合了監控,報警,SQL語句分析和給出優化建議,MySQL的一些開源監控方案相比之下顯得過於簡陋,對企業客戶來說,MySQL變得更加可靠。

  3. MySQL Workbench

   過去MySQL的圖形介面工具做的實在是令人難以恭維,當然這也給眾多MySQL管理工具提供了市場空間,現在Oracle打算將MySQL做得比 SQL-Server更加簡單易用,MySQL Workbench是一款專為MySQL設計的ER/資料庫建模工具,可以用來設計和建立新的資料庫圖示,建立資料庫文件,以及進行復雜的MySQL 遷移等操作,因此內建workbench將使MySQL使用起來更簡便高效。

  4. 關於未來的重要提醒:Oracle的管理工具,MySQL也將能夠使用,Oracle比MySQL社群想象要聰明,不是嗎?當然MySQL 5.5我們還沒看到這個變化,但變化已經在時間表上,MySQL社群版也能夠被Oracle管理工具管理,前提你得是Oracle資料庫的使用者。

         版權宣告:

  本文由上海愛可生資訊科技有限公司根據甲骨文公司官方文件翻譯整理而成,版權歸屬甲骨文公司,轉載請保留此版權宣告。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15688952/viewspace-700141/,如需轉載,請註明出處,否則將追究法律責任。

相關文章