站長(zhǎng)資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        看看MySQL 5.6, 5.7, 8.0的新特性!

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

        推薦:《mysql視頻教程》

        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ù)。在集成該引擎的過程中,對(duì)源碼進(jìn)行了改造,為后續(xù)可插拔式存儲(chǔ)引擎架構(gòu)奠定了基礎(chǔ)。

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

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

        2005年,MySQL 5.0發(fā)布,開始支持游標(biāo),存儲(chǔ)過程,觸發(fā)器,視圖,XA事務(wù)等特性。同年,Oracle收購(gòu)Innobase公司。

        2008年,Sun以10億美金收購(gòu)MySQL AB。同年,發(fā)布MySQL 5.1,其開始支持定時(shí)器(Event scheduler),分區(qū),基于行的復(fù)制等特性。

        2009年,Oracle以74億美金收購(gòu)Sun公司。

        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),用于控制臟頁(yè)刷新的數(shù)量。

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

        ● GTID復(fù)制。

        ● 無損復(fù)制。

        ● 延遲復(fù)制。

        ● 基于庫(kù)級(jí)別的并行復(fù)制。

        ● mysqlbinlog可遠(yuǎn)程備份binlog。

        ● 對(duì)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ù)庫(kù)重啟后,同一個(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ù)庫(kù)重啟后需要較長(zhǎng)的預(yù)熱時(shí)間。

        ● InnoDB內(nèi)部的性能提升,包括拆分kernel mutex,引入獨(dú)立的刷新線程,可設(shè)置多個(gè)purge線程。

        ● 優(yōu)化器性能提升,引入了ICP,MRR,BKA等特性,針對(duì)子查詢進(jìn)行了優(yōu)化。

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

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

        ● 組復(fù)制

        ● InnoDB Cluster

        ● 多源復(fù)制

        ● 增強(qiáng)半同步(AFTER_SYNC)

        ● 基于WRITESET的并行復(fù)制。

        ● 在線開啟GTID復(fù)制。

        ● 在線設(shè)置復(fù)制過濾規(guī)則。

        ● 在線修改Buffer pool的大小。

        ● 在同一長(zhǎng)度編碼字節(jié)內(nèi),修改VARCHAR的大小只需修改表的元數(shù)據(jù),無需創(chuàng)建臨時(shí)表。

        ● 可設(shè)置NUMA架構(gòu)的內(nèi)存分配策略(innodb_numa_interleave)。

        ● 透明頁(yè)壓縮(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ù)端對(duì)查詢進(jìn)行改寫。

        ● EXPLAIN FORMAT=JSON會(huì)顯示成本信息,這樣可直觀的比較兩種執(zhí)行計(jì)劃的優(yōu)劣。

        ● 引入了虛擬列,類似于Oracle中的函數(shù)索引。

        ● 新實(shí)例不再默認(rèn)創(chuàng)建test數(shù)據(jù)庫(kù)及匿名用戶。

        ● 引入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ù)庫(kù),簡(jiǎn)化了MySQL的管理及異常問題的定位。

        ● 原生支持JSON類型,并引入了眾多JSON函數(shù)。

        ● 引入了新的邏輯備份工具-mysqlpump,支持表級(jí)別的多線程備份。

        ● 引入了新的客戶端工具-mysqlsh,其支持三種語言:JavaScript, Python and SQL。兩種API:X DevAPI,AdminAPI,其中,前者可將MySQL作為文檔型數(shù)據(jù)庫(kù)進(jìn)行操作,后者用于管理InnoDB Cluster。

        ● mysql_install_db被mysqld –initialize代替,用來進(jìn)行實(shí)例的初始化。

        ● 原生支持systemd。

        ● 引入了super_read_only選項(xiàng)。

        ● 可設(shè)置SELECT操作的超時(shí)時(shí)長(zhǎng)(max_execution_time)。

        ● 可通過SHUTDOWN命令關(guān)閉MySQL實(shí)例。

        ● 引入了innodb_deadlock_detect選項(xiàng),在高并發(fā)場(chǎng)景下,可使用該選項(xiàng)來關(guān)閉死鎖檢測(cè)。

        ● 引入了Optimizer Hints,可在語句級(jí)別控制優(yōu)化器的行為,如是否開啟ICP,MRR等,在此之前,只有Index Hints。

        ● GIS的增強(qiáng),包括使用Boost.Geometry替代之前的GIS算法,InnoDB開始支持空間索引。

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

        ● 引入了原生的,基于InnoDB的數(shù)據(jù)字典。數(shù)據(jù)字典表位于mysql庫(kù)中,對(duì)用戶不可見,同mysql庫(kù)的其它系統(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)先級(jí)及其能使用的資源,目前,能被管理的資源只有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引擎,相比于前者,后者支持以變長(zhǎng)方式存儲(chǔ)VARCHAR,VARBINARY等變長(zhǎng)字段。從MySQL 8.0.13開始,TempTable引擎支持BLOB字段。

        ● Grant不再隱式創(chuàng)建用戶。

        ● SELECT … FOR SHARE和SELECT … FOR UPDATE語句中引入NOWAIT和SKIP LOCKED選項(xiàng),解決電商場(chǎ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ǔ)引擎。

        ● 引入了

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
        主站蜘蛛池模板: 国产精品女同久久久久电影院| 成人国产一区二区三区精品| 国产小视频国产精品| 中文字幕一精品亚洲无线一区| 国产精品你懂的在线播放| 国产成人精品综合网站| 人妻少妇精品无码专区二区| 欧美精品人人做人人爱视频| 成人精品一区二区久久久| 69久久精品无码一区二区| 久久久久人妻精品一区二区三区| 热久久国产欧美一区二区精品| 91精品国产91久久久久久蜜臀| 国产精品视频a播放| 99在线精品视频观看免费| 亚洲国产第一站精品蜜芽| 欧美成人精品欧美一级乱黄一区二区精品在线| 9久热这里只有精品| 国产91精品黄网在线观看| 亚洲精品综合一二三区在线| 欧美国产日韩精品| 亚洲日韩精品欧美一区二区| 久久精品国产秦先生| 成人国产精品一区二区网站| 91精品国产高清久久久久久io| 国产精品女同一区二区| 成人区人妻精品一区二区不卡网站| 精品国产一区二区三区久久久狼| 精品久久8x国产免费观看| 国产在线精品一区二区在线观看| 精品亚洲A∨无码一区二区三区| 青青青国产精品一区二区| 日韩精品无码一本二本三本 | 日韩精品久久久久久免费| 亚洲精品乱码久久久久久蜜桃图片| 日韩精品欧美| 在线观看自拍少妇精品| 亚洲av无码乱码国产精品fc2| 全球AV集中精品导航福利| 国产AV国片精品有毛| 亚洲第一精品在线视频|