Mysql 5.6 在效能、延展性、可用性方面的新突破

來源:互聯網
上載者:User
<接上篇> 更好的應用程式可用性:線上 DDL/模式 變化    如今基於web的應用程式被設計用來快速的進化以及自適應業務和生產需求。當一個應用程式必須迅速適應新的產品線或新產品時,後端資料庫模式也必須跟著適應,但是又要求同時應用程式可以正常的業務操作。mysql5.6提供了這種程度的線上模式,此新文法為ALTER TABLE DDL,其他附加有:CREATE INDEX
DROP INDEX
Change AUTO_INCREMENT value for a column
ADD/DROP FOREIGN KEY
Rename COLUMN
Change ROW FORMAT, KEY_BLOCK_SIZE for a table
Change COLUMN NULL, NOT_NULL
Add, drop, reorder COLUMN DBA和開發人員們可以在標準的innoDB表上增加索引或者其他的修改操作,同時資料庫依然可以供應用程式使用。這對於快速迭代的應用非常有益,特別是開發人員需要模式的靈活性,以適應不斷變化的業務需求。 更好的開發靈活性:為innoDB增加Nosql     Mysql5.6為innoDB提供了memcached API。為mysqld增加一個新的memcached守護進程外掛程式,這樣memcached協議被直接映射到原生innoDB API,允許開發人員使用現存的memcached用戶端來直接忽略掉查詢文法的解析消耗,直接對資料進行尋找和修改。這些API可以對現有的memcached庫和用戶端進行重用,整合一個持久、事故安全、交易資料庫後端 來對memcached功能進行了擴充。實現如下:測試結果顯示,在整體輸送量上,SET/INSERT操作效能要提升9倍左右:不僅開發人員和DBA們獲得了更好的效能和靈活性,同樣也減少了複雜性,壓縮之前單獨的緩衝和資料庫層到一個單一的資料管理層次,這樣消除緩衝一致性維護的開銷。 更好的開發靈活性:InnoDB擴充使用案例     mysql5.6新的特徵和最佳化器將innoDB擴充到更多的使用案例中去,這樣開發人員可以標準化一個單一的儲存引擎 已達到簡化應用程式的目的。     新的全文索引(FTS) - 為了取代Myisam的FTS,現在InnoDB允許開發人員在表上建立FULLTEXT索引來標示常值內容,同時也加快了應用搜尋單詞和短語。InnoDB的全文檢索搜尋支援自然語言/邏輯模式、鄰近搜尋 和 相關性排序。一個簡單的使用例子如下:CREATE TABLE quotes 
(id int unsigned auto_increment primary key , author varchar(64) , quote varchar(4000) , source varchar(64) , fulltext(quote) 
) engine=innodb; 

SELECT author AS “Apple" FROM quotes 
WHERE match(quote) against (‘apple' in natural language mode);     新的可運輸式資料表空間 - innoDB為每個表產生一個.idb檔案,現在,這個檔案可以在實體儲存體裝置和資料庫伺服器間自由傳輸;當建立一個新表,開發人員可以在mysql資料空間外指定一個其他的路徑來儲存.idb檔案。這可以將比較“hot”或者比較忙的表資料轉移到外部的網路存放裝置(SSD,HDD),這樣不會對應用或者資料庫的花銷造成競爭。這個新功能還支援快速無縫的應用,允許使用者方便地匯出/匯入InnoDB表
轉移到其他正在啟動並執行MySQL伺服器。    例子匯出:CREATE TABLE t(c1 INT) engine=InnoDB; 

FLUSH TABLE t FOR EXPORT; -- quiesce the table and create the meta data file 
$innodb_data_home_dir/test/t.cfg
UNLOCK TABLES; 

    相應的匯入:

CREATE TABLE t(c1 INT) engine=InnoDB; -- if it doesn't already exist 
ALTER TABLE t DISCARD TABLESPACE; 
-- The user must stop all updates on the tables, prior to the IMPORT 

ALTER TABLE t IMPORT TABLESPACE;     改進的複製和高可用性    複製是最常用的mysql功能,經常表現在在擴充性和高可用性上(HA)。mysql5.6包含了新的功能,允許開發人員為下一代網路、雲端運算、社交和行動裝置 App程式和服務等建立自愈式的複寫拓撲和高效能的主從叢集。關鍵點包括:     新的全域事務標識符(GTIDs) (介紹的不太懂,可自行google相關GTID的資料)- GTIDs來強化資料庫的主備一致性,故障恢複,以及容錯能力。允許跟蹤複製事務完整性,實現的相關技術為複製主/從拓撲、提供一個可自愈的復原點、以及允許DBA和開發人員們更加容易的標示master失敗後最新的那個slave。通過直接構建到二進位日誌流中,GTID不在需要其他的第三方外掛程式來提供這種層級的跟蹤報告。     新的mysql複製工具 - 一套新的python工具可以用來使用GTID來提供複製管理和監控的功能,它可以將失敗的master關閉或者進行替換維護。這樣,如果在沒有操作員幹預的情況下發生了計劃內和計劃外的停機事故,遍不在需要額外的第三方高可用性解決方案、保護性網路和雲端服務等。     新的多線程slave - 基於模式的背景工作執行緒間的分割處理,允許可以並行的進行更新操作,不在是原先的順序執行。這樣為那些在資料庫上對應用隔離的資料進行更新帶來的好處。如,多租戶系統:測試顯示,在一定的環境下,同時開啟10個背景工作執行緒,效能提升5倍以上。     新的二進位日誌組提交(BGC) - 在mysql5.6中,對master群的複製以組的形式寫進二進位檔案中,而不再是一次性提交,顯著的提高了master拓撲的效能。BGC同樣支援了更好的細部鎖定,這樣減少鎖等待,再次增加了效能增益。效果如下:在主伺服器的輸送量方面,mysql5.6的效能比5.5提升了180%。BGC很大程度的消除了那些使用者不得不在master效能開銷、擴充性、MySQL複製所提供高效能收益 之間進行的選擇。     新的基於行複製的最佳化 - mysql5.6提供了一個新的選項binlog-row-image=minimal,這個選項允許應用程式只能對行的鏡像資料進行複製,而不在關心行是否已經進行了DML操作。這提高了主從機器的複製輸送量,減少了二進位日誌所佔用的磁碟空間、網路資源和記憶體佔用。     新的事故安全slave - mysql5.6儲存了基於表的二進位記錄檔,這樣從機器就可以自動復原到上一次成功複製的版本,並且不再需要管理員介入。她不僅降低了運營開銷,同樣也降低了從資料庫試圖恢複損壞檔案時所帶來的磁碟資料丟失的風險。更進一步說,如果主伺服器突然出現事故而造成了二進位檔案的丟失,那麼伺服器可以自動回復到當前可以正確讀取的位置。     新的複製效驗和 - mysql5.6可以確保了正在複製到從伺服器上的資料的完整性,方法是檢測資料是否損壞,並且在從伺服器資料損毀之前返回一個錯誤資訊,從而防止從伺服器本身被損壞。     新的延時複製 - mysql5.6提供了一個保護措施,允許開發人員在複製流中添加定義延遲,從而防止主伺服器上產生的錯誤被傳播到從伺服器中。通過配置主到從之間的時間延遲,如果發生了故障或者事故,從伺服器可以被提升為新的主伺服器,方便了將資料庫恢複到以前的狀態。它同樣可以 在錯誤和故障發生之前 檢查一個資料庫的狀態,而不再需要重新載入一個備份。 改進效能模式    在mysql5.5中就對mysql的效能模式做了介紹,他被設計用來味關鍵效能指標提供一個度量時間點。mysql5.6改善了效能模式,新的測試點包括:     Statements/Stages - 我的哪些查詢是最耗資源的?他們把時間花在哪兒?     Table/Index I/O, Table Locks - 哪些應用的表或索引佔用了大多數的負載?     Users/Hosts/Accounts - 哪個應用程式的使用者、主機和帳號最佔資源?     Network I/O - 網路負載如何?session空閑了多久?    mysql5.6現在在my.cnf檔案中預設開啟效能模式,同時預設開啟的還有最佳化及自動修正設定,這樣減少了開銷,所以使用效能模式生產伺服器來監控最常見應用程式的用例並不是太大的問題。另外,新的原子層級的測試能夠捕獲更加細粒度層級的資源消耗,比如使用者、主機、賬戶、應用程式等等,特別 雲端運算環境中 用於支付和退款。    mysql5.6在效能模式中有許多獨創專利,其中的許多都已經發表在blog中,你可以參考其中技術和實用的細節。你可以從這裡來閱讀部落格內容Mark Leith 和Marc Alff.  其他一些效能的增強     新的自動設定最佳化 - mysql5.6改變了原來的伺服器預設配置,在當前的系統架構下支援更好的開箱即用效能。當更改大部分一般的配置時,這些新的預設配置將會減少前期準備所花費的時間。現在許多配置選項可以根據環境自動化佈建大小值,當伺服器啟動時也可人為的設定或更改。     改進的TIME/TIMESTAMP/DATETIME資料類型:
  • TIME/TIMESTAMP/DATETIME - 現在支援了微妙層級的精度。
  • TIMESTAMP/DATETIME - 在5.5就已經支援了,允許開發人員指定目前時間戳或者自動更新值或者兩者同時作為TIMESTAMP和DATETIME的預設值。
  • TIMESTAMP -  現在預設值為空白。當不再被指定值的時候,TIMESTAMP 列不再如原來一樣自動擷取DEFAULT NOW()或 ON UPDATE NOW() 的值,而是用空來替代。
     更好的條件處理 -  GET DIAGNOSTICS     mysql5.6允許開發人員更加容易去對錯誤和代碼異常進行檢查,通過使用新引入的mysql診斷地區和GET DIAGNOSTICS命令介面。診斷地區可以使用多個選項,提供以下兩種資訊:
  • 陳述- 它提供了受影響的行數和執行命令的數量;
  • 條件 - 返回所有執行條件的前一個操作所產生的錯誤碼和錯誤資訊。
    新的GET DIAGNOSTICS命令為診斷地區提供了一個標準介面,通過CLI或者應用程式代碼,可以輕鬆的檢索和處理最近語句的執行結果: mysql> DROP TABLE test.no_such_table; 
ERROR 1051 (42S02): Unknown table 'test.no_such_table' 
mysql> GET DIAGNOSTICS CONDITION 1 
-> @p1 = RETURNED_SQLSTATE, @p2 = MESSAGE_TEXT; 
mysql> SELECT @p1, @p2; 
+-------+------------------------------------+
| @p1 | @p2 | 
+-------+------------------------------------+
| 42S02 | Unknown table 'test.no_such_table' | 
+-------+------------------------------------+
Options for leveraging the MySQL Diagnostics Area are detailed here. You can learn more about GET
DIAGNOSTICS here.        改進的ipv6支援
  • mysql5.6改進了INET_ATON() 來轉換和儲存基於字串的IPv6地址,將其作為位元據進行儲存,已達到最小空間消耗。
  • mysql5.6改變了綁定地址選項的預設值,從 “0.0.0.0”到“0::0”,這樣MySQL伺服器接受串連所有IPv4和IPv6地址。You can learn more here. 
     改進的分區
  • 提高分區的數量來提高表的效能 - mysql5.6現在在高度分區系統中進行執行和擴充,特別是insert操作,涉及到數百個分區。
  • 匯入/匯出 表 從/到 分區表 - mysql5.6允許使用者交換表分區或者子分區,命令為ALTER TABLE ... EXCHANGE PARTITION,已經存在於原來的分區或者子分區中的行將會被轉移去一個非分區表,相應的,任何存在於非分區表中的行也可以被轉移到分區表或子分區表中。
  • 明確分區選擇 - mysql5.6支援明確選取分區和子分區,當給定一個where條件時,將會對行進行上述檢查。和自動分區類似,被檢查的分區也是可被 指定/控制 的,都支援查詢和大量的DML語句(SELECT, DELETE, INSERT, REPLACE, UPDATE, LOAD DATA, LOAD XML)。

    改進GIS:精確的空間操作 - mysql5.6通過精確的對象形狀來幾何操作提供支援,按照OpenGis的標準來對兩個幾何值之間的關係進行相應測試。總結    mysql5.5已經被稱為是有史以來最好的mysql版本。mysql5.6在這基礎上進行了改進,提高了效能、延展性、可用性、事務輸送量等,為了滿足當下最苛刻的web、雲以及嵌入式等各方面的需求。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.