MySQL5.5 , 5.6, 5.7, 8.0的新特性

對于MySQL的歷史,相信很多人早已耳熟能詳逻淌,這里就不要贅述。下面僅從產(chǎn)品特性的角度梳理其發(fā)展過程中的里程碑事件疟暖。

1995年卡儒,MySQL 1.0發(fā)布,僅供內(nèi)部使用俐巴。

1996年骨望,MySQL 3.11.1發(fā)布,直接跳過了MySQL 2.x版本欣舵。

1999年擎鸠,MySQL AB公司成立。同年缘圈,發(fā)布MySQL 3.23劣光,該版本集成了Berkeley DB存儲(chǔ)引擎。該引擎由Sleepycat公司開發(fā)糟把,支持事務(wù)绢涡。在集成該引擎的過程中,對源碼進(jìn)行了改造遣疯,為后續(xù)可插拔式存儲(chǔ)引擎架構(gòu)奠定了基礎(chǔ)雄可。

2000年,ISAM升級為MyISAM存儲(chǔ)引擎。同年数苫,MySQL基于GPL協(xié)議開放源碼聪舒。

2002年,MySQL 4.0發(fā)布虐急,集成了后來大名鼎鼎的InnoDB存儲(chǔ)引擎箱残。該引擎由Innobase公司開發(fā),支持事務(wù)戏仓,支持行級鎖疚宇,適用于OLTP等高并發(fā)場景。

2005年赏殃,MySQL 5.0發(fā)布敷待,開始支持游標(biāo),存儲(chǔ)過程仁热,觸發(fā)器榜揖,視圖,XA事務(wù)等特性抗蠢。同年举哟,Oracle收購Innobase公司。

2008年迅矛,Sun以10億美金收購MySQL AB妨猩。同年,發(fā)布MySQL 5.1秽褒,其開始支持定時(shí)器(Event scheduler)拒贱,分區(qū)节仿,基于行的復(fù)制等特性。

2009年,Oracle以74億美金收購Sun公司笼吟。

MySQL 5.5

2010年春畔,MySQL 5.5發(fā)布仗谆,其包括如下重要特性及更新碗啄。

  • InnoDB代替MyISAM成為MySQL默認(rèn)的存儲(chǔ)引擎。
  • 多核擴(kuò)展犁钟,能更充分地使用多核CPU棱诱。
  • InnoDB的性能提升,包括支持索引的快速創(chuàng)建特纤,表壓縮军俊,I/O子系統(tǒng)的性能提升,PURGE操作從主線程中剝離出來捧存,Buffer Pool可拆分為多個(gè)Instances粪躬。
  • 半同步復(fù)制担败。
  • 引入utf8mb4字符集,可用來存儲(chǔ)emoji表情镰官。
  • 引入metadata locks(元數(shù)據(jù)鎖)提前。
  • 分區(qū)表的增強(qiáng),新增兩個(gè)分區(qū)類型:RANGE COLUMNS和LIST COLUMNS泳唠。
  • MySQL企業(yè)版引入線程池狈网。
  • 可配置IO讀寫線程的數(shù)量(innodb_read_io_threads,innodb_write_io_threads)笨腥。在此之前拓哺,其數(shù)量為1,且不可配置脖母。
  • 引入innodb_io_capacity選項(xiàng)士鸥,用于控制臟頁刷新的數(shù)量。

MySQL 5.6

2013年谆级,MySQL 5.6發(fā)布烤礁,其包括如下重要特性及更新。

  • GTID復(fù)制肥照。
  • 無損復(fù)制脚仔。
  • 延遲復(fù)制。
  • 基于庫級別的并行復(fù)制舆绎。
  • mysqlbinlog可遠(yuǎn)程備份binlog鲤脏。
  • 對TIME, DATETIME和TIMESTAMP進(jìn)行了重構(gòu),可支持小數(shù)秒吕朵。DATETIME的空間需求也從之前的8個(gè)字節(jié)減少到5個(gè)字節(jié)凑兰。
  • Online DDL。ALTER操作不再阻塞DML边锁。
  • 可傳輸表空間(transportable tablespaces)。
  • 統(tǒng)計(jì)信息的持久化波岛。避免主從之間或數(shù)據(jù)庫重啟后茅坛,同一個(gè)SQL的執(zhí)行計(jì)劃有差異。
  • 全文索引则拷。
  • InnoDB Memcached plugin贡蓖。
  • EXPLAIN可用來查看DELETE,INSERT煌茬,REPLACE斥铺,UPDATE等DML操作的執(zhí)行計(jì)劃,在此之前坛善,只支持SELECT操作晾蜘。
  • 分區(qū)表的增強(qiáng)邻眷,包括最大可用分區(qū)數(shù)增加至8192,支持分區(qū)和非分區(qū)表之間的數(shù)據(jù)交換剔交,操作時(shí)顯式指定分區(qū)肆饶。
  • Redo Log總大小的限制從之前的4G擴(kuò)展至512G。
  • Undo Log可保存在獨(dú)立表空間中岖常,因其是隨機(jī)IO驯镊,更適合放到SSD中。但仍然不支持空間的自動(dòng)回收竭鞍。
  • 可dump和load Buffer pool的狀態(tài)板惑,避免數(shù)據(jù)庫重啟后需要較長的預(yù)熱時(shí)間。
  • InnoDB內(nèi)部的性能提升偎快,包括拆分kernel mutex冯乘,引入獨(dú)立的刷新線程,可設(shè)置多個(gè)purge線程滨砍。
  • 優(yōu)化器性能提升往湿,引入了ICP,MRR惋戏,BKA等特性领追,針對子查詢進(jìn)行了優(yōu)化。

可以說响逢,MySQL 5.6是MySQL歷史上一個(gè)里程碑式的版本绒窑,這也是目前生產(chǎn)上應(yīng)用得最廣泛的版本。

MySQL 5.7

2015年舔亭,MySQL 5.7發(fā)布些膨,其包括如下重要特性及更新。

  • 組復(fù)制
  • InnoDB Cluster
  • 多源復(fù)制
  • 增強(qiáng)半同步(AFTER_SYNC)
  • 基于WRITESET的并行復(fù)制钦铺。
  • 在線開啟GTID復(fù)制订雾。
  • 在線設(shè)置復(fù)制過濾規(guī)則。
  • 在線修改Buffer pool的大小矛洞。
  • 在同一長度編碼字節(jié)內(nèi)洼哎,修改VARCHAR的大小只需修改表的元數(shù)據(jù),無需創(chuàng)建臨時(shí)表沼本。
  • 可設(shè)置NUMA架構(gòu)的內(nèi)存分配策略(innodb_numa_interleave)噩峦。
  • 透明頁壓縮(Transparent Page Compression)。
  • UNDO表空間的自動(dòng)回收抽兆。
  • 查詢優(yōu)化器的重構(gòu)和增強(qiáng)识补。
  • 可查看當(dāng)前正在執(zhí)行的SQL的執(zhí)行計(jì)劃(EXPLAIN FOR CONNECTION)。
  • 引入了查詢改寫插件(Query Rewrite Plugin)辫红,可在服務(wù)端對查詢進(jìn)行改寫凭涂。
  • EXPLAIN FORMAT=JSON會(huì)顯示成本信息祝辣,這樣可直觀的比較兩種執(zhí)行計(jì)劃的優(yōu)劣。
  • 引入了虛擬列导盅,類似于Oracle中的函數(shù)索引较幌。
  • 新實(shí)例不再默認(rèn)創(chuàng)建test數(shù)據(jù)庫及匿名用戶。
  • 引入ALTER USER命令白翻,可用來修改用戶密碼乍炉,密碼的過期策略,及鎖定用戶等滤馍。
  • mysql.user表中存儲(chǔ)密碼的字段從password修改為authentication_string岛琼。
  • 表空間加密。
  • 優(yōu)化了Performance Schema巢株,其內(nèi)存使用減少槐瑞。
  • Performance Schema引入了眾多instrumentation。常用的有Memory usage instrumentation阁苞,可用來查看MySQL的內(nèi)存使用情況困檩,Metadata Locking Instrumentation,可用來查看MDL的持有情況那槽,Stage Progress instrumentation悼沿,可用來查看Online DDL的進(jìn)度。
  • 同一觸發(fā)事件(INSERT骚灸,DELETE糟趾,UPDATE),同一觸發(fā)時(shí)間(BEFORE甚牲,AFTER)义郑,允許創(chuàng)建多個(gè)觸發(fā)器。在此之前丈钙,只允許創(chuàng)建一個(gè)觸發(fā)器非驮。
  • InnoDB原生支持分區(qū)表,在此之前雏赦,是通過ha_partition接口來實(shí)現(xiàn)的院尔。
  • 分區(qū)表支持可傳輸表空間特性。
  • 集成了SYS數(shù)據(jù)庫喉誊,簡化了MySQL的管理及異常問題的定位。
  • 原生支持JSON類型纵顾,并引入了眾多JSON函數(shù)伍茄。
  • 引入了新的邏輯備份工具-mysqlpump,支持表級別的多線程備份施逾。
  • 引入了新的客戶端工具-mysqlsh敷矫,其支持三種語言:JavaScript, Python and SQL例获。兩種API:X DevAPI,AdminAPI曹仗,其中榨汤,前者可將MySQL作為文檔型數(shù)據(jù)庫進(jìn)行操作,后者用于管理InnoDB Cluster怎茫。
  • mysql_install_db被mysqld --initialize代替收壕,用來進(jìn)行實(shí)例的初始化。
  • 原生支持systemd轨蛤。
  • 引入了super_read_only選項(xiàng)蜜宪。
  • 可設(shè)置SELECT操作的超時(shí)時(shí)長(max_execution_time)。
  • 可通過SHUTDOWN命令關(guān)閉MySQL實(shí)例祥山。
  • 引入了innodb_deadlock_detect選項(xiàng)圃验,在高并發(fā)場景下,可使用該選項(xiàng)來關(guān)閉死鎖檢測缝呕。
  • 引入了Optimizer Hints澳窑,可在語句級別控制優(yōu)化器的行為,如是否開啟ICP供常,MRR等摊聋,在此之前,只有Index Hints话侧。
  • GIS的增強(qiáng)栗精,包括使用Boost.Geometry替代之前的GIS算法,InnoDB開始支持空間索引瞻鹏。

MySQL 8.0

2018年悲立,MySQL 8.0發(fā)布,其包括如下重要特性及更新新博。

  • 引入了原生的薪夕,基于InnoDB的數(shù)據(jù)字典。數(shù)據(jù)字典表位于mysql庫中赫悄,對用戶不可見原献,同mysql庫的其它系統(tǒng)表一樣,保存在數(shù)據(jù)目錄下的mysql.ibd文件中埂淮。不再置于mysql目錄下姑隅。
  • Atomic DDL。
  • 重構(gòu)了INFORMATION_SCHEMA倔撞,其中讲仰,部分表已重構(gòu)為基于數(shù)據(jù)字典的視圖,在此之前痪蝇,其為臨時(shí)表鄙陡。
  • PERFORMANCE_SCHEMA查詢性能提升冕房,其已內(nèi)置多個(gè)索引。
  • 不可見索引(Invisible index)趁矾。
  • 降序索引耙册。
  • 直方圖。
  • 公用表表達(dá)式(Common table expressions)毫捣。
  • 窗口函數(shù)(Window functions)详拙。
  • 角色(Role)。
  • 資源組(Resource Groups)培漏,可用來控制線程的優(yōu)先級及其能使用的資源溪厘,目前,能被管理的資源只有CPU牌柄。
  • 引入了innodb_dedicated_server選項(xiàng)畸悬,可基于服務(wù)器的內(nèi)存來動(dòng)態(tài)設(shè)置innodb_buffer_pool_size,innodb_log_file_size和innodb_flush_method珊佣。
  • 快速加列(ALGORITHM=INSTANT)蹋宦。
  • JSON字段的部分更新(JSON Partial Updates)。
  • 自增主鍵的持久化咒锻。
  • 可持久化全局變量(SET PERSIST)冷冗。
  • 默認(rèn)字符集由latin1修改為utf8mb4。
  • 默認(rèn)開啟UNDO表空間惑艇,且支持在線調(diào)整數(shù)量(innodb_undo_tablespaces)蒿辙。在MySQL 5.7中,默認(rèn)不開啟滨巴,若要開啟思灌,只能初始化時(shí)設(shè)置。
  • 備份鎖恭取。
  • Redo Log的優(yōu)化泰偿,包括允許多個(gè)用戶線程并發(fā)寫入log buffer,可動(dòng)態(tài)修改innodb_log_buffer_size的大小蜈垮。
  • 默認(rèn)的認(rèn)證插件由mysql_native_password更改為caching_sha2_password耗跛。
  • 默認(rèn)的內(nèi)存臨時(shí)表由MEMORY引擎更改為TempTable引擎,相比于前者攒发,后者支持以變長方式存儲(chǔ)VARCHAR调塌,VARBINARY等變長字段。從MySQL 8.0.13開始惠猿,TempTable引擎支持BLOB字段羔砾。
  • Grant不再隱式創(chuàng)建用戶。
  • SELECT ... FOR SHARE和SELECT ... FOR UPDATE語句中引入NOWAIT和SKIP LOCKED選項(xiàng),解決電商場景熱點(diǎn)行問題蜒茄。
  • 正則表達(dá)式的增強(qiáng),新增了4個(gè)相關(guān)函數(shù)餐屎,REGEXP_INSTR()檀葛,REGEXP_LIKE(),REGEXP_REPLACE()腹缩,REGEXP_SUBSTR()屿聋。
  • 查詢優(yōu)化器在制定執(zhí)行計(jì)劃時(shí),會(huì)考慮數(shù)據(jù)是否在Buffer Pool中藏鹊。而在此之前润讥,是假設(shè)數(shù)據(jù)都在磁盤中。
  • ha_partition接口從代碼層移除楚殿,如果要使用分區(qū)表脆粥,只能使用InnoDB存儲(chǔ)引擎蟹倾。
  • 引入了更多細(xì)粒度的權(quán)限來替代SUPER權(quán)限肌厨,現(xiàn)在授予SUPER權(quán)限會(huì)提示warning。
  • GROUP BY語句不再隱式排序竖配。
  • MySQL 5.7引入的表空間加密特性可對Redo Log和Undo Log進(jìn)行加密。
  • information_schema中的innodb_locks和innodb_lock_waits表被移除,取而代之的是performance_schema中的data_locks和data_lock_waits表盯漂。
  • 引入performance_schema.variables_info表,記錄了參數(shù)的來源及修改情況空郊。
  • 增加了對于客戶端報(bào)錯(cuò)信息的統(tǒng)計(jì)(performance_schema.events_errors_summary_xxx)廓旬。
  • 可統(tǒng)計(jì)查詢的響應(yīng)時(shí)間分布(call sys.ps_statement_avg_latency_histogram())。
  • 支持直接修改列名(ALTER TABLE ... RENAME COLUMN old_name TO new_name)旁赊。
  • 用戶密碼可設(shè)置重試策略(Reuse Policy)竟闪。
  • 移除PASSWORD()函數(shù)妖爷。這就意味著無法通過“SET PASSWORD ... = PASSWORD('auth_string') ”命令修改用戶密碼理朋。
  • 代碼層移除Query Cache模塊絮识,故Query Cache相關(guān)的變量和操作均不再支持。
  • BLOB, TEXT, GEOMETRY和JSON字段允許設(shè)置默認(rèn)值嗽上。
  • 可通過RESTART命令重啟MySQL實(shí)例次舌。

需要注意的是,上面提到的發(fā)布兽愤,一般指的是GA版本彼念。

來挪圾,看看MySQL 5.6, 5.7, 8.0的新特性
https://www.cnblogs.com/ivictor/p/9807284.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市逐沙,隨后出現(xiàn)的幾起案子哲思,更是在濱河造成了極大的恐慌,老刑警劉巖吩案,帶你破解...
    沈念sama閱讀 206,013評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件也殖,死亡現(xiàn)場離奇詭異,居然都是意外死亡务热,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,205評論 2 382
  • 文/潘曉璐 我一進(jìn)店門己儒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來崎岂,“玉大人,你說我怎么就攤上這事闪湾〕甯剩” “怎么了?”我有些...
    開封第一講書人閱讀 152,370評論 0 342
  • 文/不壞的土叔 我叫張陵途样,是天一觀的道長江醇。 經(jīng)常有香客問我,道長何暇,這世上最難降的妖魔是什么陶夜? 我笑而不...
    開封第一講書人閱讀 55,168評論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮裆站,結(jié)果婚禮上条辟,老公的妹妹穿的比我還像新娘。我一直安慰自己宏胯,他們只是感情好羽嫡,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,153評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著肩袍,像睡著了一般杭棵。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上氛赐,一...
    開封第一講書人閱讀 48,954評論 1 283
  • 那天魂爪,我揣著相機(jī)與錄音,去河邊找鬼鹰祸。 笑死甫窟,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蛙婴。 我是一名探鬼主播粗井,決...
    沈念sama閱讀 38,271評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了浇衬?” 一聲冷哼從身側(cè)響起懒构,我...
    開封第一講書人閱讀 36,916評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎耘擂,沒想到半個(gè)月后胆剧,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,382評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡秩霍,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,877評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蚁阳。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片铃绒。...
    茶點(diǎn)故事閱讀 37,989評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖螺捐,靈堂內(nèi)的尸體忽然破棺而出颠悬,到底是詐尸還是另有隱情,我是刑警寧澤定血,帶...
    沈念sama閱讀 33,624評論 4 322
  • 正文 年R本政府宣布赔癌,位于F島的核電站,受9級特大地震影響澜沟,放射性物質(zhì)發(fā)生泄漏灾票。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,209評論 3 307
  • 文/蒙蒙 一茫虽、第九天 我趴在偏房一處隱蔽的房頂上張望铝条。 院中可真熱鬧,春花似錦席噩、人聲如沸班缰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,199評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽埠忘。三九已至,卻和暖如春馒索,著一層夾襖步出監(jiān)牢的瞬間莹妒,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,418評論 1 260
  • 我被黑心中介騙來泰國打工绰上, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留旨怠,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,401評論 2 352
  • 正文 我出身青樓蜈块,卻偏偏與公主長得像鉴腻,于是被迫代替她去往敵國和親迷扇。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,700評論 2 345