哪些公司做網(wǎng)站開(kāi)發(fā)百度163黃頁(yè)關(guān)鍵詞挖掘
↑ 關(guān)注“少安事務(wù)所”公眾號(hào),歡迎?收藏,不錯(cuò)過(guò)精彩內(nèi)容~
MySQL 8.4.0 LTS 已經(jīng)發(fā)布 ,作為發(fā)版模型變更后的第一個(gè)長(zhǎng)期支持版本,注定要承擔(dān)未來(lái)生產(chǎn)環(huán)境的重任,那么這個(gè)版本都有哪些新特性、變更,接下來(lái)少安將帶大家一起來(lái) get 新知識(shí)點(diǎn)。
INFORMATION_SCHEMA 變更
表 INFORMATION_SCHEMA.TABLESPACES 從 MySQL 8.0.22 開(kāi)始被廢棄,現(xiàn)已移除。
-
8.4.0
mysql>?select?version()\G
***************************?1.?row?***************************
version():?8.4.0-ShawnYan-debug
1?row?in?set?(0.00?sec)
mysql>?desc?INFORMATION_SCHEMA.TABLESPACES;
ERROR?1109?(42S02):?Unknown?table?'TABLESPACES'?in?information_schema
-
8.3.0
mysql>?select?version()\G
***************************?1.?row?***************************
version():?8.3.0
1?row?in?set?(0.01?sec)
mysql>?desc?INFORMATION_SCHEMA.TABLESPACES;
+--------------------+-----------------+------+-----+---------+-------+
|?Field??????????????|?Type????????????|?Null?|?Key?|?Default?|?Extra?|
+--------------------+-----------------+------+-----+---------+-------+
|?TABLESPACE_NAME????|?varchar(64)?????|?NO???|?????|?????????|???????|
|?ENGINE?????????????|?varchar(64)?????|?NO???|?????|?????????|???????|
|?TABLESPACE_TYPE????|?varchar(64)?????|?YES??|?????|?????????|???????|
|?LOGFILE_GROUP_NAME?|?varchar(64)?????|?YES??|?????|?????????|???????|
|?EXTENT_SIZE????????|?bigint?unsigned?|?YES??|?????|?????????|???????|
|?AUTOEXTEND_SIZE????|?bigint?unsigned?|?YES??|?????|?????????|???????|
|?MAXIMUM_SIZE???????|?bigint?unsigned?|?YES??|?????|?????????|???????|
|?NODEGROUP_ID???????|?bigint?unsigned?|?YES??|?????|?????????|???????|
|?TABLESPACE_COMMENT?|?varchar(2048)???|?YES??|?????|?????????|???????|
+--------------------+-----------------+------+-----+---------+-------+
9?rows?in?set?(0.20?sec)
對(duì)于 InnoDB 表,Information Schema 中的表 INNODB_TABLESPACES 和 INNODB_DATAFILES 來(lái)提供表空間元信息。
mysql>?table?INFORMATION_SCHEMA.INNODB_TABLESPACES;
+------------+------------------+-------+----------------------+-----------+---------------+------------+---------------+-----------+----------------+-----------------+----------------+---------------+------------+--------+
|?SPACE??????|?NAME?????????????|?FLAG??|?ROW_FORMAT???????????|?PAGE_SIZE?|?ZIP_PAGE_SIZE?|?SPACE_TYPE?|?FS_BLOCK_SIZE?|?FILE_SIZE?|?ALLOCATED_SIZE?|?AUTOEXTEND_SIZE?|?SERVER_VERSION?|?SPACE_VERSION?|?ENCRYPTION?|?STATE??|
+------------+------------------+-------+----------------------+-----------+---------------+------------+---------------+-----------+----------------+-----------------+----------------+---------------+------------+--------+
|?4294967294?|?mysql????????????|?18432?|?Any??????????????????|?????16384?|?????????????0?|?General????|??????????4096?|??26214400?|???????26214400?|???????????????0?|?8.4.0??????????|?????????????1?|?N??????????|?normal?|
|?4294967293?|?innodb_temporary?|??4096?|?Compact?or?Redundant?|?????16384?|?????????????0?|?System?????|??????????4096?|??12582912?|???????12582912?|???????????????0?|?8.4.0??????????|?????????????1?|?N??????????|?normal?|
|?4294967279?|?innodb_undo_001??|?????0?|?Undo?????????????????|?????16384?|?????????????0?|?Undo???????|??????????4096?|??16777216?|???????16777216?|???????????????0?|?8.4.0??????????|?????????????1?|?N??????????|?active?|
|?4294967278?|?innodb_undo_002??|?????0?|?Undo?????????????????|?????16384?|?????????????0?|?Undo???????|??????????4096?|??16777216?|???????16777216?|???????????????0?|?8.4.0??????????|?????????????1?|?N??????????|?active?|
|??????????1?|?sys/sys_config???|?16417?|?Dynamic??????????????|?????16384?|?????????????0?|?Single?????|??????????4096?|????114688?|?????????114688?|???????????????0?|?8.4.0??????????|?????????????1?|?N??????????|?normal?|
|??????????2?|?yandb/t??????????|?16417?|?Dynamic??????????????|?????16384?|?????????????0?|?Single?????|??????????4096?|????114688?|?????????114688?|???????????????0?|?8.4.0??????????|?????????????1?|?N??????????|?normal?|
+------------+------------------+-------+----------------------+-----------+---------------+------------+---------------+-----------+----------------+-----------------+----------------+---------------+------------+--------+
6?rows?in?set?(0.00?sec)
mysql>?table?INFORMATION_SCHEMA.INNODB_DATAFILES;
+------------------------+----------------------+
|?SPACE??????????????????|?PATH?????????????????|
+------------------------+----------------------+
|?0x30???????????????????|?ibdata1??????????????|
|?0x34323934393637323739?|?./undo_001???????????|
|?0x34323934393637323738?|?./undo_002???????????|
|?0x31???????????????????|?./sys/sys_config.ibd?|
|?0x32???????????????????|?./yandb/t.ibd????????|
+------------------------+----------------------+
5?rows?in?set?(0.00?sec)
?知識(shí)擴(kuò)展
表 INNODB_TABLESPACES 和 INNODB_DATAFILES 自 MySQL 8.0.3 發(fā)生過(guò)表名變更,如果從 MySQL 5.7 升級(jí)上來(lái),需要注意。
Old Name | New Name |
---|---|
INNODB_SYS_TABLESPACES | INNODB_TABLESPACES |
INNODB_SYS_DATAFILES | INNODB_DATAFILES |
權(quán)限變更
1. FLUSH_PRIVILEGES
MySQL 8.4.0 LTS 添加了特定于 FLUSH PRIVILEGES
語(yǔ)句的使用的權(quán)限。與現(xiàn)有的 RELOAD
權(quán)限不同,新的 FLUSH_PRIVILEGES
權(quán)限僅適用于 FLUSH PRIVILEGES
語(yǔ)句。此權(quán)限的范圍是全局的,并且適用于用戶和角色。
示例:
-
創(chuàng)建帶有 FLUSH_PRIVILEGES
權(quán)限的用戶。
mysql>?create?user?u1;
Query?OK,?0?rows?affected?(0.02?sec)
mysql>?grant?FLUSH_PRIVILEGES?on?*.*?to?u1;
Query?OK,?0?rows?affected?(0.01?sec)
mysql>?show?grants?for?u1;
+-------------------------------------------+
|?Grants?for?u1@%???????????????????????????|
+-------------------------------------------+
|?GRANT?USAGE?ON?*.*?TO?`u1`@`%`????????????|
|?GRANT?FLUSH_PRIVILEGES?ON?*.*?TO?`u1`@`%`?|
+-------------------------------------------+
2?rows?in?set?(0.00?sec)
-
使用 u1 用戶連接數(shù)據(jù)庫(kù)。
mysql>?select?current_user()\G
***************************?1.?row?***************************
current_user():?u1@%
1?row?in?set?(0.00?sec)
mysql>?flush?privileges;
Query?OK,?0?rows?affected?(0.04?sec)
-
回收權(quán)限后再次使用 u1 刷新權(quán)限,執(zhí)行報(bào)錯(cuò),提示需要 RELOAD 或 FLUSH_PRIVILEGES 權(quán)限。
mysql>?flush?privileges;
ERROR?1227?(42000):?Access?denied;?you?need?(at?least?one?of)?the?RELOAD?or?FLUSH_PRIVILEGES?privilege(s)?for?this?operation
同時(shí),RELOAD
權(quán)限將繼續(xù)提供向后兼容性; 具有此權(quán)限的用戶在升級(jí)后仍然可以執(zhí)行 FLUSH PRIVILEGES 語(yǔ)句。作為升級(jí)到 MySQL 8.4 版本的一部分,將執(zhí)行檢查以查看是否有任何用戶具有 FLUSH_PRIVILEGES 權(quán)限; 如果沒(méi)有,則具有 RELOAD 權(quán)限的用戶也會(huì)自動(dòng)分配新權(quán)限。
2. OPTIMIZE_LOCAL_TABLE
MySQL 8.4.0 LTS 添加了新的 OPTIMIZE_LOCAL_TABLE
權(quán)限。
用戶必須具有此權(quán)限才能執(zhí)行 OPTIMIZE LOCAL TABLE
和 OPTIMIZE NO_WRITE_TO_BINLOG TABLE
語(yǔ)句。
從以前的版本升級(jí)時(shí),已具有 SYSTEM_USER
權(quán)限的用戶將被自動(dòng)授予 OPTIMIZE_LOCAL_TABLE 權(quán)限。
mysql>?show?grants;
+-----------------------------------------------+
|?Grants?for?u1@%???????????????????????????????|
+-----------------------------------------------+
|?GRANT?USAGE?ON?*.*?TO?`u1`@`%`????????????????|
|?GRANT?OPTIMIZE_LOCAL_TABLE?ON?*.*?TO?`u1`@`%`?|
|?GRANT?REFERENCES?ON?`yandb`.*?TO?`u1`@`%`?????|
+-----------------------------------------------+
3?rows?in?set?(0.00?sec)
mysql>?OPTIMIZE?LOCAL?TABLE?t;
+---------+----------+----------+-------------------------------------------------------------------+
|?Table???|?Op???????|?Msg_type?|?Msg_text??????????????????????????????????????????????????????????|
+---------+----------+----------+-------------------------------------------------------------------+
|?yandb.t?|?optimize?|?note?????|?Table?does?not?support?optimize,?doing?recreate?+?analyze?instead?|
|?yandb.t?|?optimize?|?status???|?OK????????????????????????????????????????????????????????????????|
+---------+----------+----------+-------------------------------------------------------------------+
2?rows?in?set?(0.20?sec)
mysql>?OPTIMIZE?NO_WRITE_TO_BINLOG?TABLE?t;
+---------+----------+----------+-------------------------------------------------------------------+
|?Table???|?Op???????|?Msg_type?|?Msg_text??????????????????????????????????????????????????????????|
+---------+----------+----------+-------------------------------------------------------------------+
|?yandb.t?|?optimize?|?note?????|?Table?does?not?support?optimize,?doing?recreate?+?analyze?instead?|
|?yandb.t?|?optimize?|?status???|?OK????????????????????????????????????????????????????????????????|
+---------+----------+----------+-------------------------------------------------------------------+
2?rows?in?set?(0.19?sec)
關(guān)鍵字
從 MySQL 8.0 到 8.4,增加了幾個(gè)關(guān)鍵字,標(biāo)記為(R)的是保留關(guān)鍵字:
AUTO, BERNOULLI, GTIDS, LOG, MANUAL (R), PARALLEL (R), PARSE_TREE, QUALIFY (R), S3, and TABLESAMPLE (R).
在準(zhǔn)備升級(jí)數(shù)據(jù)庫(kù)版本時(shí),需要確認(rèn)庫(kù)、表有無(wú)使用到保留關(guān)鍵字,如果有建議先改名。
-
確認(rèn) SCHEMA 名稱沒(méi)有使用保留關(guān)鍵字
with?t?as?(?
select?'manual'?as?rk?
union?select?'parallel'?
union?select?'qualify'?
union?select?'tablesample'?
)
select?SCHEMA_NAME?from?information_schema.SCHEMATA
where?lower(SCHEMA_NAME)?in?(select?rk?from?t);
示例輸出:
+-------------+
|?SCHEMA_NAME?|
+-------------+
|?manual??????|
+-------------+
1?row?in?set?(0.00?sec)
-
確認(rèn) TABLE 名稱沒(méi)有使用保留關(guān)鍵字
with?t?as?(?
select?'manual'?as?rk?
union?select?'parallel'?
union?select?'qualify'?
union?select?'tablesample'?
)
select?table_schema,?table_name,?table_type?
from?information_schema.tables?
where?lower(table_schema)?in?(select?rk?from?t)?or?lower(table_name)?in?(select?rk?from?t);
示例輸出:
+--------------+------------+------------+
|?TABLE_SCHEMA?|?TABLE_NAME?|?TABLE_TYPE?|
+--------------+------------+------------+
|?yandb????????|?manual?????|?BASE?TABLE?|
|?yandb????????|?manuaL?????|?VIEW???????|
+--------------+------------+------------+
2?rows?in?set?(0.00?sec)
客戶端
-
mysql_upgrade 移除
在之前的文章 MySQL 升級(jí):使用 mysql_upgrade 注意事項(xiàng)(再見(jiàn) mysql_upgrade) 中介紹過(guò) mysql_upgrade
的變化。
MySQL 8.4.0 移除了該客戶端。
-
mysqlpump 移除
移除了已棄用的 mysqlpump 客戶端,及其關(guān)聯(lián)的 lz4_decompress 和 zlib_decompress 輔助工具。
請(qǐng)使用 mysqldump 或 MySQL Shell 的轉(zhuǎn)儲(chǔ)程式。
-
mysqldump 新選項(xiàng)
mysqldump 新增選項(xiàng) --output-as-version
,用于確定與復(fù)制和時(shí)間相關(guān)的語(yǔ)句所使用的術(shù)語(yǔ)級(jí)別,從而創(chuàng)建兼容老版本的備份。
該選項(xiàng)有3個(gè)可選值,SERVER
,BEFORE_8_0_23
,BEFORE_8_2_0
,默認(rèn)為 SERVER
BEFORE_8_2_0 將輸出已棄用的事件 DISABLE ON SLAVE 術(shù)語(yǔ)
BEFORE_8_0_23 將使用已棄用的 SLAVE/CHANGE MASTER 術(shù)語(yǔ)來(lái)表示復(fù)制命令
-
客戶端注釋保留
這里還有一個(gè)變更點(diǎn)值得注意。在之前的版本中,MySQL 客戶端默認(rèn)剝離注釋。從 MySQL 8.1 開(kāi)始,默認(rèn)情況已更改為保留此類注釋。
更多精彩
[MySQL]
-
再見(jiàn) mysql_upgrade -
MySQL 8.1.0 已來(lái)! -
從鳥(niǎo)山明到 MySQL 5.7 EOL -
MySQL Server 8.3.0 重要變更解析 -
MySQL 數(shù)據(jù)庫(kù)認(rèn)證考試介紹(2024 版) -
如何選擇適合的 MySQL Connector/J 版本 -
MySQL 8.4.0 LTS 發(fā)布 (MySQL 第一個(gè)長(zhǎng)期支持版本) -
MySQL 8.4.0 LTS 變更解析:InnoDB 參數(shù)默認(rèn)值變化 -
MySQL 8.4.0 LTS 變更解析:MySQL 的復(fù)制與組復(fù)制 -
MySQL 8.4.0 LTS 變更解析:源碼編譯(類庫(kù)變更)和密碼插件
[Oracle]
-
Oracle 數(shù)據(jù)庫(kù)全面升級(jí)為 23ai -
python-oracledb 已率先支持 Oracle 23ai -
一文帶你了解 Oracle 23ai 新特性 Vector 的基礎(chǔ)用法 -
SOP for Oracle 23ai:Python 連接 Oracle 的兩種方法
-- / END / --

如果這篇文章為你帶來(lái)了靈感或啟發(fā),就請(qǐng)幫忙點(diǎn)『贊』or『在看』or『轉(zhuǎn)發(fā)』吧,感謝!(??????)
本文由 mdnice 多平臺(tái)發(fā)布