MySQL 8.0新增特性詳解

      網(wǎng)友投稿 1000 2025-03-31

      Mysql8.0的版本歷史

      2016-09-12第一個(gè)DM(development milestone)版本8.0.0發(fā)布

      2018-04-19第一個(gè)GA(General Availability)版本開始,8.0.11發(fā)布

      2018-07-27 下一個(gè)GA版本,8.0.12發(fā)布

      2018-10-22 下一個(gè)GA版本,8.0.13發(fā)布

      2019-01-21 下一個(gè)GA版本,8.0.14發(fā)布

      最新的GA版本為8.0.15,于2019-02-01發(fā)布

      最近待GA的版本為8.0.16, 8.0.17,

      從中可以看出,大概每1~3個(gè)月一個(gè)版本。

      Mysql8.0中新增的特性

      事務(wù)性數(shù)據(jù)字典

      數(shù)據(jù)字典表以InnoDB表存儲(chǔ)字典數(shù)據(jù),位于mysql數(shù)據(jù)庫(kù)下,對(duì)外不可見(jiàn)。有專門的表空間mysql.idb,位于數(shù)據(jù)目錄下。但是可以通過(guò)informaction_schema下面的一些表來(lái)查詢字典數(shù)據(jù)。

      在以前的版本中,字典數(shù)據(jù)以元數(shù)據(jù)文件、非事務(wù)表等來(lái)存儲(chǔ)。現(xiàn)在這些元數(shù)據(jù)文件被刪除了。比如:

      .frm, .par, .trn, .isl, .db.opt等都在MySQL8.0中不存在了。

      原子DDL

      事務(wù)性數(shù)據(jù)字典的引入,使得原子DDL成為可能。作為事務(wù)要不提交,要不回滾。分為表級(jí)和非表級(jí)語(yǔ)句,表級(jí)支持InnoDB。非表級(jí)包括:create, drop等語(yǔ)句。

      安全和賬號(hào)管理

      Mysql系統(tǒng)數(shù)據(jù)庫(kù)下的權(quán)限表現(xiàn)在都是InnoDB的,以前是MyISAM的,對(duì)于多個(gè)用戶進(jìn)行操作時(shí)會(huì)出現(xiàn)部分成功,部分失敗的情況。現(xiàn)在要不成功,要不rollback。

      新的caching_sha2_password認(rèn)證插件作為默認(rèn)的認(rèn)證插件,比mysql_native_password更安全,性能更好。但可能在現(xiàn)網(wǎng)會(huì)出現(xiàn)一個(gè)連接相關(guān)的問(wèn)題。

      支持角色(role)

      對(duì)于密碼管理更加嚴(yán)格控制,可以維護(hù)密碼歷史信息。啟用密碼重用策略。

      資源管理

      支持資源組的創(chuàng)建和管理,能將運(yùn)行的線程分配給特定的資源組。

      InnoDB增強(qiáng)

      自增列方面。現(xiàn)在自增列計(jì)數(shù)器會(huì)在每次值修改時(shí),將值寫到REDO LOG中,并且在CHECKPOINT時(shí)寫到存儲(chǔ)引擎私有的系統(tǒng)表中。這就消除了以往重啟實(shí)例自增列不連續(xù)的問(wèn)題。

      當(dāng)索引損壞時(shí),會(huì)把損壞標(biāo)識(shí)寫到redo log。在checkpoint時(shí)會(huì)將內(nèi)存的損壞標(biāo)識(shí)數(shù)據(jù)寫到存儲(chǔ)引擎私有的系統(tǒng)表中。

      InnoDB memcached插件支持多個(gè)get操作(在單個(gè)memcached查詢中獲取多個(gè)鍵值對(duì))和范圍查詢。

      新的動(dòng)態(tài)變量innodb_deadlock_detect,可以禁用死鎖檢查。在高并發(fā)的系統(tǒng)中,無(wú)數(shù)個(gè)線程等待同一個(gè)鎖,死鎖檢查可能會(huì)引起系統(tǒng)宕機(jī)。有時(shí),禁用死鎖檢查更有效。當(dāng)死鎖發(fā)生時(shí),可以依賴innodb_lock_wait_timeout設(shè)置讓事務(wù)回滾。

      新的information_schema.innodb_cached_indexes表可以報(bào)告每個(gè)索引在bufferpool中的索引頁(yè)的數(shù)量。

      InnoDB臨時(shí)表現(xiàn)在創(chuàng)建在共享的臨時(shí)表空間中。

      支持redo log和undo log的加密

      對(duì)于select…for share和select…for update 鎖讀語(yǔ)句,支持nowait和skip locked選項(xiàng)。Nowait表示如果請(qǐng)求的行被去其他事務(wù)鎖住了立即返回。SKIP LOCKED則會(huì)從結(jié)果集中移除上鎖的行。

      InnoDB存儲(chǔ)引擎使用MySQL的數(shù)據(jù)字典,而不是用自己的和引擎相關(guān)的數(shù)據(jù)字典。

      mysql庫(kù)的系統(tǒng)表和數(shù)據(jù)字典表創(chuàng)建在單獨(dú)的InnoDB表空間中,文件名為mysql.ibd. 以前這些表都是創(chuàng)建在各自的InnoDB表空間中。

      字符集支持

      默認(rèn)字符集從latin1變成了utf8mb4. ?對(duì)于utf8mb4字符集增加了新的比較規(guī)則,比如utf8mb4_ja_0900_as_cs。

      JSON增強(qiáng)

      數(shù)據(jù)類型支持

      MySQL支持將字符常量或者表達(dá)式作為數(shù)據(jù)類型的默認(rèn)值。包括能將表達(dá)式作為BLOB, TEXT, GEOMETRY, JSON等數(shù)據(jù)類型的默認(rèn)值,這在以前是不可以的。

      優(yōu)化器

      通用表表達(dá)式

      在SELECT等語(yǔ)句前,使用WITH字句來(lái)對(duì)臨時(shí)結(jié)果集進(jìn)行命名。

      MySQL 8.0新增特性詳解

      窗口函數(shù)

      MySQL現(xiàn)在支持窗口函數(shù),在一個(gè)查詢中對(duì)每行進(jìn)行計(jì)算。這些函數(shù)包括RANK(), LAG(), NTILE()。另外,有幾個(gè)聚合函數(shù)也能用作窗口函數(shù)。比如SUM(),AVG()。

      橫向派生表(Lateral derived tables)

      支持正則表達(dá)式

      內(nèi)部臨時(shí)表

      內(nèi)存內(nèi)部臨時(shí)表,默認(rèn)的存儲(chǔ)引擎從MEMORY變成了TempTable。TempTable對(duì)于VARCHAR和VARBINARY字段存儲(chǔ)更高效。

      Internal_tmp_mem_storage_engine:該變量用來(lái)定義內(nèi)存內(nèi)部臨時(shí)表使用哪個(gè)引擎。允許取值有TempTable(默認(rèn))和MEMORY。

      Temtable_max_ram: 內(nèi)存內(nèi)部臨時(shí)表超過(guò)這個(gè)值就會(huì)將數(shù)據(jù)存儲(chǔ)到磁盤上。

      日志記錄

      錯(cuò)誤日志模塊使用MySQL組件架構(gòu)重寫了,使用內(nèi)置的組件來(lái)實(shí)現(xiàn)錯(cuò)誤日志。

      另外,還有一個(gè)可加載的JSON日志記錄器。 要控制啟用哪些日志組件,使用 log_error_services 系統(tǒng)變量。

      備份鎖

      引入了一種新的備份鎖(backup lock),它允許在online備份的時(shí)候進(jìn)行DML操作,同時(shí)可防止快照不一致。備份鎖由lock instance for backup和unlock instance語(yǔ)法支持。使用這些語(yǔ)句需要BACKUP_ADMIN權(quán)限。

      原來(lái)的extrabackup等備份軟件是不是應(yīng)該改寫,不要使用flush table with read lock這樣的語(yǔ)句來(lái)上鎖。

      當(dāng)有大事務(wù)時(shí),會(huì)hung住,無(wú)法備份。

      如果采用lock instance for backup則沒(méi)有問(wèn)題。

      復(fù)制增強(qiáng)

      支持使用壓縮格式,對(duì)JSON文檔的部分更新記錄binlog,能節(jié)省空間。如果使用的STATEMENT格式的binlog,該功能自動(dòng)開啟,或者通過(guò)binlog_row_value_options系統(tǒng)變量設(shè)為PARTIAL_JASON來(lái)開啟。

      連接管理

      允許配置一個(gè)專門端口用于管理連接,當(dāng)連接數(shù)打滿時(shí)可以用于連接數(shù)據(jù)庫(kù)進(jìn)行管理。

      需要設(shè)置admin_address,默認(rèn)該值為空。

      使用的端口默認(rèn)為33062, 由admin_port來(lái)設(shè)置。

      該端口的沒(méi)有連接數(shù)的限制。

      需要有SERVICE_CONNECTION_ADMIN的權(quán)限

      Create_admin_listener_thread系統(tǒng)變量用來(lái)決定是用普通連接的監(jiān)聽(tīng)線程還是采用自己專用的線程。默認(rèn)值為普通監(jiān)聽(tīng)線程。

      操作如下:

      mysql> show variables like 'admin_%';

      +---------------+---------------+

      | Variable_name | Value???????? |

      +---------------+---------------+

      | admin_address | 192.168.1.187 |???????? //這個(gè)IP地址是服務(wù)器的地址,不是客戶端的。一定要設(shè)置這個(gè)變量

      | admin_port??? | 33062???????? |

      +---------------+---------------+

      2 rows in set (0.00 sec)

      然后將max_connections調(diào)小,制造連接數(shù)打滿的場(chǎng)景。

      mysql> set global max_connections=30;

      Query OK, 0 rows affected (0.00 sec)

      mysql> show variables like 'max_connections';

      +-----------------+-------+

      | Variable_name?? | Value |

      +-----------------+-------+

      | max_connections | 30??? |

      +-----------------+-------+

      1 row in set (0.00 sec)

      nohup mysql -h192.168.1.187? -P3306 -uroot -p****** -NBe 'select sleep(2000)' &

      mysql: [Warning] Using a password on the command line interface can be insecure.

      ERROR 1040 (HY000): Too many connections

      此時(shí),發(fā)現(xiàn)還可以用管理端口進(jìn)行連接,并且沒(méi)有數(shù)量限制。

      mysql -h192.168.1.187? -P33062 -uroot -p******

      插件

      以前MySQL的插件可以用C和C++編寫。現(xiàn)在插件使用的MySQL頭文件是c++代碼,意味著現(xiàn)在的插件必須用C++,不能用C編寫。

      數(shù)據(jù)庫(kù)

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:excel表格如何按名稱排序(excel表格按名字怎么排序)
      下一篇:wps怎么隱藏表格(wps怎么隱藏表格的邊框)
      相關(guān)文章
      亚洲精华国产精华精华液好用 | 亚洲啪啪免费视频| 亚洲自偷自偷在线制服| 亚洲成人影院在线观看| 老子影院午夜伦不卡亚洲| 亚洲av片在线观看| 国产成人亚洲毛片| 亚洲国产成人五月综合网| 亚洲成av人片在线观看天堂无码 | 亚洲毛片在线观看| 亚洲成a人片在线观看无码专区| 亚洲乱亚洲乱少妇无码| 久久精品国产亚洲7777| 激情综合色五月丁香六月亚洲| 中文国产成人精品久久亚洲精品AⅤ无码精品| 亚洲av高清在线观看一区二区 | 亚洲免费视频一区二区三区| 国产亚洲精品免费| 久久亚洲2019中文字幕| 黑人大战亚洲人精品一区 | 亚洲欧美日韩综合久久久| 久久亚洲中文无码咪咪爱| 午夜在线亚洲男人午在线| 亚洲精品综合久久| 中国亚洲女人69内射少妇| 亚洲V无码一区二区三区四区观看| 亚洲国产精品久久久久婷婷老年| 久久亚洲AV无码精品色午夜| 亚洲宅男天堂a在线| 亚洲人成77777在线播放网站不卡| 亚洲日韩中文字幕一区| 国产成人亚洲精品91专区高清| 亚洲综合色区在线观看| 久久亚洲国产精品一区二区| 亚洲天堂久久精品| 亚洲一区二区三区国产精品无码| 亚洲日日做天天做日日谢| 色天使色婷婷在线影院亚洲| 亚洲精品色婷婷在线影院| 国产精品亚洲精品日韩已满| 亚洲色图.com|