下載地址:https://www.mysql.com/downloads/mysql
Oracle MySQL Cloud Service(commercial)
商業付費軟件,基於MySQL企業版和Oracle雲服務提供企業級的MySQL數據庫服務。linux
MySQL Enterprise Edition (commercial)
商業付費軟件,提供如下服務算法
MySQL Cluster CGE (commercial)
商業付費軟件,基於MySQL Cluster和企業版擁有的各項功能提供企業級的高併發、高吞吐的數據庫服務。sql
MySQL Community Edition (GPL)
免費社區軟件,提供基礎的數據庫服務和其餘衍生服務。數據庫
下載地址:https://dev.mysql.com/downloads/windows
MySQL Community Server (GPL)
MySQL社區服務是世界上最流行的開源數據庫。後端
MySQL Cluster (GPL)
MySQL集羣是一個實時的、開放源碼的事務數據庫。基於MySQL數據庫而實現的集羣服務,自身提供高併發高負載等特性。安全
MySQL Router (GPL)
MySQL路由器是輕量級的中間件,能夠在您的應用程序和任何後端MySQL服務器之間提供透明的路由。性能優化
MySQL Utilities (GPL)
MySQL實用程序提供了用於維護和管理MySQL服務器的命令行實用程序的集合。服務器
MySQL Shell (GPL)
是一個交互式的Javascript、Python或sql接口,支持的開發和管理MySQL服務,是MySQL服務的一個組件。
MySQL Workbench (GPL)
是一個下一代可視化數據庫設計應用程序,能夠用來高效地設計、管理和記錄數據庫模式。它既是開源的,也是商業版的。
MySQL Connectors
MySQL鏈接器提供了標準的數據庫驅動程序鏈接,以便使用與工業標準ODBC和jdbc兼容的應用程序和工具。
MySQL on Windows (Installer & Tools)
爲您提供了一套工具,用於開發和管理基於windows的MySQL業務關鍵應用程序。
MySQL Yum Repository
提供了一個Yum軟件庫,用於簡化在各類linux操做系統上安裝和更新MySQL產品。
MySQL APT Repository
MySQL provides an APT-style software repository for installing the MySQL server, client, and other components on a variety of Linux operating systems.
提供了一個APT-style軟件庫以便在各類linux操做系統上安裝MySQL服務器、客戶端和其餘組件。
MySQL SUSE Repository
MySQL存儲庫使用在包管理工具提供了一種簡單而方便的方法,能夠經過最新的軟件包來安裝和更新MySQL產品。
MySQL 4.0版本
增長了子查詢的支持,字符集增長UTF-8,GROUP BY語句增長了ROLLUP,mysql.user表採用了更好的加密算法,InnoDB開始支持單獨的表空間
MySQL 5.0版本
增長了Stored procedures、Views、Cursors、Triggers、XA transactions的支持,增長了INFORATION_SCHEMA系統數據庫
MySQL 5.1版本
增長了Event scheduler,Partitioning,Pluggable storage engine API ,Row-based replication、Global級別動態修改general query log和slow query log的支持。
MySQL 5.5版本
1)默認存儲引擎更改成InnoDB
2)提升性能和可擴展性
3)提升實用性
4)提升易管理性和效率
5)提升可用性
6)改善檢測和診斷
Mysql5.5引入了一種新的性能架構(performancn_shema,P_S),用於監控mysql監控服務器運行時的性能。
MySQL 5.6版本
提升InnoDB性能,支持延遲複製
1)InnoDB如今能夠限制大量表打開的時候內存佔用過多的問題(好比這裏提到的)(第三方已有補丁)
2)InnoDB性能增強。如分拆kernel mutex;flush操做從主線程分離;多個perge線程;大內存優化等
3)InnoDB死鎖信息能夠記錄到 error 日誌,方便分析
4)MySQL5.6支持延時複製,可讓slave跟master之間控制一個時間間隔,方便特殊狀況下的數據恢復。
5)表分區功能加強
6)MySQL行級複製功能增強,能夠下降磁盤、內存、網絡等資源開銷(只記錄能肯定行記錄的字段便可)
7)Binlog實現 crash-safe
8)複製事件採用crc32校驗,加強master/slave 複製數據一致性
9)新增 log_bin_basename (之前variables裏面沒有binlog位置信息,對數據庫的監管很不方便)
(1)安全性
安全性是數據庫永恆的話題,在MySQL 5.7中,有很多安全性相關的改進。包括:
ALTER USER 'jeffrey'@'localhost' PASSWORD EXPIRE INTERVAL 90 DAY;
ALTER USER 'jeffrey'@'localhost' ACCOUNT LOCK; ALTER USER l 'jeffrey'@'localhost' ACCOUNT UNLOCK;
(2)靈活性
MySQL 5.7的兩個全新的功能,即JSON和generate column。
1)JSON
隨着非結構化數據存儲需求的持續增加,各類非結構化數據存儲的數據庫應運而生(如MongoDB)。從最新的數據庫使用 排行榜 來看,MongoDB已經超過了PostgreSQL,其火熱程度可見一斑。
各大關係型數據庫也不甘示弱,紛紛提供對JSON的支持,以應對非結構化數據庫的挑戰。MySQL數據庫從5.7.8版本開始,也提供了對JSON的支持。其使用方式以下:
CREATE TABLE t1 (jdoc JSON); INSERT INTO t1 VALUES('{"key1": "value1", "key2": "value2"}');
MySQL對支持JSON的作法是,在server層提供了一堆便於操做JSON的函數,至於存儲,就是簡單地將JSON編碼成BLOB,而後交由存儲引擎層進行處理,也就是說,MySQL 5.7的JSON支持與存儲引擎沒有關係,MyISAM 存儲引擎也支持JSON 格式。
MySQL支持JSON之後,老是避免不了拿來與MongoDB進行一些比較。可是,MySQL對JSON的支持,至少有兩點可以完勝MongoDB:
2)generate column
generated column是MySQL 5.7引入的新特性,所謂generated column,就是數據庫中這一列由其餘列計算而得。
例如,知道直角三角形的兩條直角邊,要求直角三角形的面積。很明顯,面積能夠經過兩條直角邊計算而得,那麼,這時候就能夠在數據庫中只存放直角邊,面積使用generated column,以下所示:
CREATE TABLE triangle (sidea DOUBLE, sideb DOUBLE, area DOUBLE AS (sidea * sideb / 2)); insert into triangle(sidea, sideb) values(3, 4); select * from triangle; +-------+-------+------+ | sidea | sideb | area | +-------+-------+------+ | 3 | 4 | 6 | +-------+-------+------+
在MySQL 5.7中,支持兩種generated column,即virtual generated column和stored generated column,前者只將generated column保存在數據字典中(表的元數據),並不會將這一列數據持久化到磁盤上;後者會將generated column持久化到磁盤上,而不是每次讀取的時候計算所得。很明顯,後者存放了能夠經過已有數據計算而得的數據,須要更多的磁盤空間,與virtual column相比並無優點。所以,在不指定generated column的類型時,默認是virtual column,以下所示:
show create table triangle\G *************************** 1. row *************************** Table: triangle Create Table: CREATE TABLE `triangle` ( `sidea` double DEFAULT NULL, `sideb` double DEFAULT NULL, `area` double GENERATED ALWAYS AS (((`sidea` * `sideb`) / 2)) VIRTUAL ) ENGINE=InnoDB DEFAULT CHARSET=latin1
若是讀者以爲generate column提供的功能,也能夠在用戶代碼裏面實現,並無什麼了不得的地方,那麼,或許還有一個功能可以吸引挑剔的你,那就是爲generate column建立索引。在這個例子中,若是咱們須要根據面積建立索引以加快查詢,就沒法在用戶代碼裏面實現,使用generate column就變得很是簡單:
alter table triangle add index ix_area(area);
(3)易用性
在MySQL 5.7中,有不少易用性方面的改進,小到一個客戶端快捷鍵 ctrl+c 的使用,大到專門提供一個系統庫(sys)來幫助DBA和開發人員使用數據庫。
sys schema是MySQL 5.7.7中引入的一個系統庫,包含了一系列視圖、函數和存儲過程, 該項目專一於MySQL的易用性。
例如,咱們能夠經過sys schema快速的知道,哪些語句使用了臨時表,哪一個用戶請求了最多的io,哪一個線程佔用了最多的內存,哪些索引是無用索引等;
sys schema中包含了大量的視圖,那麼,這些視圖的信息來自哪裏呢?
視圖中的信息均來自performance schema統計信息。
這裏 有一個很好的比喻:
For Linux users I like to compare performance_schema to /proc, and SYS to vmstat.
也就是說,performance schema提供了信息源,可是,沒有很好的將這些信息組織成有用的信息,從而沒有很好的發揮它們的做用。而sys schema使用performance schema信息,經過視圖的方式給出解決實際問題的答案。
例如,下面這些問題,在MySQL 5.7以前,須要藉助外部工具才能知道,在MySQL 5.7中,直接查詢sys庫下相應的表就能獲得答案:
select * from sys.schema_redundant_indexes;
select * from schema_unused_indexes;
select * from statements_with_full_table_scans
(4)可用性
MySQL 5.7在可用性方面的改進也帶給人很多驚喜。這裏介紹特別有用的幾項改進,包括:
ALTER TABLE t1 ALGORITHM=INPLACE, CHANGE COLUMN c1 c1 VARCHAR(255);
(5)性能
性能一直都是用戶最關心的問題,在MySQL每次新版本中,都會有很多性能提高。在MySQL 5.7中,性能相關的改進很是多,這裏僅介紹部分改進,包括臨時表相關的性能改進、只讀事務的性能優化、鏈接創建速度的優化和複製性能的改進。
1)臨時表的性能改進
MySQL 5.7 爲了提升臨時表相關的性能,對臨時表相關的部分進行了大幅修改,包括引入新的臨時表空間;對於臨時表的DDL,不持久化相關表定義;對於臨時表的DML,不寫redo,關閉change buffer等。全部臨時表的改動,都基於如下兩個事實 :
也就是說,對於臨時表的操做,不須要其餘數據同樣嚴格地進行一致性保證。經過不持久化元信息,避免寫redo等方式,減小臨時表操做的IO,以提升臨時表操做的性能。
2)只讀事務性能改進
衆所周知,在傳統的OLTP應用中,讀操做遠多於寫操做,而且,讀操做不會對數據庫進行修改,若是是非鎖定讀,讀操做也不須要進行加鎖。所以,對只讀事務進行優化,是一個不錯的選擇。
在MySQL 5.6中,已經對只讀事務進行了許多優化。例如,將MySQL內部實現中的事務鏈表分爲只讀事務鏈表和普通事務鏈表,這樣在建立ReadView的時候,須要遍歷事務鏈表長度就會小不少。
在MySQL 5.7中,首先假設一個事務是一個只讀事務,只有在該事務發起了修改操做時,纔會將其轉換爲一個普通事務。MySQL 5.7經過避免爲只讀事務分配事務ID ,不爲只讀事務分配回滾段,減小鎖競爭等多種方式,優化了只讀事務的開銷,提升了數據庫的總體性能。
3)加速鏈接處理
在MySQL 5.7以前,變量的初始化操做(THD、VIO)都是在鏈接接收線程裏面完成的,如今將這些工做下發給工做線程,以減小鏈接接收線程的工做量,提升鏈接的處理速度。這個優化對那些頻繁創建短鏈接的應用,將會很是有用。
4)複製性能的改進
MySQL的複製延遲是一直被詬病的問題之一,欣喜的是,MySQL 5.7版本已經支持」真正」的並行複製功能。MySQL 5.7並行複製的思想簡單易懂,簡而言之,就是」一個組提交的事務都是能夠並行回放的」,由於這些事務都已進入到事務的prepare階段,則說明事務之間沒有任何衝突(不然就不可能提交)。MySQL 5.7之後,複製延遲問題永不存在。
這裏須要注意的是,爲了兼容MySQL 5.6基於庫的並行複製,5.7引入了新的變量slave-parallel-type,該變量能夠配置成DATABASE(默認)或LOGICAL_CLOCK。能夠看到,MySQL的默認配置是庫級別的並行複製,爲了充分發揮MySQL 5.7的並行複製的功能,咱們須要將slave-parallel-type配置成LOGICAL_CLOCK。
咱們選擇Generally Available(GA)Release 去下載。GA 是指軟件的通用版本,通常指正式發佈的版本。