MySQL 8 0的新特性(二)

2021-09-20 11:34:53 字數 3353 閱讀 7504

8.0 版本提供對地形的支援,其中包括了對空間參照系的資料來源資訊的支援,srs aware spatial資料型別,空間索引,空間函式。總而言之,8.0版本可以理解地球表面的經緯度資訊,而且可以在任意受支援的5000個空間參照系中計算地球上任意兩點之間的距離。

st_spatial_reference_systems 存在於information schema檢視庫中,提供了可供使用的srs座標系統的名稱。

每個srs座標系統都有乙個srid編號。8.0版本支援epsg geodetic parameter dataseset中的5千多個座標系統(包括立體模和2d平面地球模型)

空間類的資料型別可以直接從srs座標系統的定義中獲取,例如:使用srid 4326定義進行建表: create table t1 (g geometry srid 4326); 。

srid是適用於地理型別的資料型別。只有同一srid的的資料才會被插入到行中。與當前srid資料型別的資料嘗試插入時,會報錯。未定義srid編號的表將可以接受所有srid編號的資料。

8.0版本增加了 information_schema.st_geometry_columns 檢視,可以顯示當前例項中所有地理資訊的資料行及其對應的srs名稱,編號,地理型別名稱。

在空間資料型別上可以建立空間索引,建立空間索引的列必須非空,例如: create table t1 (g geometry srid 4326 not null, spatial index(g));

建立空間索引的列必須具有srid資料標識以用於優化器使用,如果將空間索引建在沒有srid資料標識的列上,將輸出waring資訊。

8.0 增加了諸如 st_distance() 和 st_length() 等用於判斷資料的引數是否在srs中,並計算其空間上的距離。到目前為止,st_distance和其他的空間關係型函式諸如st_within,st_intersects,st_contains,st_crosses都支援地理計算。其運算邏輯與行為參見 sql/mm part 3 spatial

8.0版本預設使用utf8mb4作為預設字符集。相比較5.7版本,sql效能(諸如排序utf8mb4字串)得到了很大的提公升。utf8mb4型別在網頁編碼上正佔據著舉足輕重的地位,將其設為預設資料型別後,將會給絕大多數的mysql使用者帶來便利。

8.0版本擴充套件了 bit-wise操作(如bit-wise and等)的使用範圍,使得其在所有 binary 資料型別上都適用。在此之前只支援整型資料,若強行在二進位制資料型別上使用bit-wise操作,將會隱式轉換為64位的bitint型別,並可能丟失若干位的資料。

從8.0版本之後,bit-wise操作可以在 binary 和blob型別上使用,且不用擔心精確度下降的問題。

8.0版本通過支援 binary 上的bit-wise操作提公升了ipv6資料的可操作性。5.6版本中引入了支援ipv6位址和16位二進位制資料的互相轉換的inet6_aton() 和 inet6_ntoa() 函式。

但是直到8.0之前,由於上一段中的問題我們都無法講ipv6轉換函式和bit-wise操作結合起來。由於 inet6_aton() 可以正確的返回128bit的varbinary(16),如果我們想要將乙個ipv6位址與閘道器位址進行比對,現在就可以使用 inet6_aton(address)& inet6_aton(network) 操作。

8.0版本通過增加了三個新的函式(uuid_to_bin(), bin_to_uuid(), 和 is_uuid())提公升了uuid的可用性。uuid_to_bin()可以將uuid格式的文字轉換成varbinary(16), bin_to_uuid()則與之相反, is_uuid()用來校驗uuid的有效性。將uuid以 varbinary(16) 的方式儲存後,就可以使用實用的索引了。

uuid_to_bin() 函式可以原本轉換後的二進位制數值中的時間相關位(uuid生成時有時間關聯)移到資料的開頭,這樣對索引來說更加友好而且可以減少在b樹中的隨機插入,從而減少了插入耗時。

8.0版本自動地根據資料是否存在於記憶體中而選擇查詢計畫,在以往的版本中,消耗敏感的模型始終假設資料在磁碟上。

正因為現在查詢記憶體資料和查詢硬碟資料的消耗常數不同,因此優化器會根據資料的位置選擇更加優化的讀取資料方式。

8.0版本加入了直方圖統計資料。使用者可以根據直方圖針對表中的某列(一般為非索引列)生成資料分布統計資訊,這樣優化器就可以利用這些資訊去尋覓更加優化的查詢計畫。

直方圖最常見的使用場景就是計算欄位的選擇性。

用以建立直方圖的 analyze table 語法現已被擴充套件了兩個新子句: update histogram on column [, column] [with n buckets]和drop histogram on column [, column]。

直方圖的總計總數(桶)是可以選的,預設100。直方圖的統計資訊被儲存在詞典表column_statistics中,並可以使用

information_schema.column_statistics進行檢視。由於json資料格式的靈活性,直方圖現在以json物件儲存。

根據表的大小,analyze table命令會自動的判斷是否要表進行取樣,甚至會根據表中資料的分布情況和統計總量來決定建立等頻或者等高的直方圖。

與utf8mb4的正則支援一同,8.0版本也增加了諸如 regexp_instr(), regexp_like(), regexp_replace(), 和regexp_substr()等新函式。

另外,系統中還增加了用以控制正規表示式致性的 regexp_stack_limit (預設8000000位元) 和 regexp_time_limit (預設32步) 引數。regexp_replace()也是社群中受呼聲比較高的特性。

六、運維自動化特性

開發向的運維關心資料庫例項的可操作型,通常即可靠性,可用性,效能,安全,可觀測性,可管理性。關於innodb cluster和mgr的可靠性我們將會另起新篇單獨介紹,接下來的段落將會介紹關於8.0版本針對表在其他可操作性上的改變。

七、可靠性

8.0版本在整體上 增加了可靠性,原因如下:

1、8.0版本將元資訊儲存與久經考驗的事務性儲存引擎innodb中。諸如使用者許可權表,資料字典表,現在都使用 innodb進行儲存。

2、8.0版本消除了會導致非一致性的一處隱患。在5.7及以前的版本中,存在著服務層和引擎層兩份資料字典,因而可能導致在故障情況下的資料字典間的同步失敗。在8.0版本中,只有乙份資料字典。

3、8.0版本實現了原子化,無懼宕機的ddl。根據這個特性,ddl語句要麼被全部執行,要麼全部未執行。對於複製環境來說這是至關重要的,否則會導致主從之間因為表結構不一致,資料漂移的情況。

基於新的事務型資料字典,可靠性得到了提高。

原文發布時間為:2018-05-30

」。

MySQL 8 0新特性 資料字典

mysql現在包含乙個事務資料字典,用於儲存有關資料庫物件的資訊。在以前的mysql版本中,字典相關資料是儲存在元資料檔案和非事務表中。資料字典的好處 資料字典表是不可見的。不能用select語句查詢,也無法通過show tables命令檢視,也不儲存在information schema中。但是,...

Mysql8 0新增特性

1.資料字典 新增了事務型的資料字典,用來儲存資料庫物件資訊 之前,字典資料是儲存在元資料檔案和非事務型表中的 2.賬號許可權管理 新增了對 角色 的支援,角色會對應一套許可權,角色可以被新增 刪除,角色上的許可權也可以進行增刪 可以對使用者賬號新增和刪除角色 3.innodb 提公升 完善了對自增...

MySQL 8 0版本新特性詳解

原文 前言 mysql 8.0 正式版本已發布。本文介紹幾個 8.0 在關聯式資料庫方面的主要新特性。你可能已經知道 mysql 從版本 5.7 開始提供了 nosql 儲存的功能,在 8.0 中這部分功能也得到了一些改進,但鑑於這個在實際當中用得極少,本人也是沒用過,所以本文不會介紹這方面的東西,...