使用限制
更新時間(jian) 2024-02-18 08:50:23
最近更新時間(jian): 2024-02-18 08:50:23
分(fen)享文章
本(ben)節主(zhu)要介紹使用限制
網絡訪問使用限制
在(zai)使用分(fen)布式關系型數據庫(簡稱DRDS)過(guo)程(cheng)中,對于網絡訪(fang)問存(cun)在(zai)一些使用限制。
- 用戶申請的數據節點、部署應用程序的ECS、DRDS實例必須屬于同一個VPC。
- 當用戶需要在自己電腦訪問DRDS服務時,需要為DRDS開通EIP服務,然后通過EIP訪問DRDS。
MySQL實例使用限制
在(zai)使(shi)用DRDS過程中,對于MySQL實例(li)存在(zai)一些(xie)使(shi)用限制。
- 目前支持5.7及8.0系列版本的MySQL實例。
- DRDS暫不支持MySQL實例配置SSL連接。
- 禁止MySQL實例開啟區分大小寫。
- 對已經被DRDS關聯的MySQL實例進行修改配置等操作時,可能導致使用異常。修改后需要在DRDS的DN管理頁面,單擊“同步DN信息”,將修改的配置進行同步,保證功能可用性。

不支持的特性和使用限制
不支持的特性
- 不支持存儲過程;
- 不支持觸發器;
- 不支持視圖;
- 不支持事件;
- 不支持自定義函數;
- 不支持外鍵約束、外鍵關聯;
- 不支持全文索引和空間函數;
- 不支持臨時表;
- 不支持 BEGIN…END、LOOP…END LOOP、REPEAT…UNTIL…END REPEAT、WHILE…DO…END WHILE 等復合語句;
- 不支持類似 IF ,WHILE 等流程控制類語句;
- 不支持RESET、FLUSH語句;
- 不支持BINLOG語句;
- 不支持HANDLER語句;
- 不支持INSTALL/UNINSTALL PLUGIN語句;
- 不支持非 ascii/latin1/binary/utf8/utf8mb4 的字符集;
- 不支持SYS schema;
- 不支持MySQL追蹤優化器;
- 不支持X-Protocol;
- 不支持CHECKSUM TABLE 語法;
- 不支持表維護語句,包括ANALYZE/CHECK/CHECKSUM/OPTIMIZE/REPAIR TABLE;
- 不支持session變量賦值與查詢,如set @rowid=0;select @rowid:=@rowid+1,id from user;
- 不支持SQL語句中包含單行注釋 ' --' 或者多行(塊)注釋 ' /.../';
- 不完整支持系統變量查詢,系統變量查詢語句返回值為RDS實例相關變量值,而非DRDS引擎內相關變量值。例如select @@autocommit返回的值,并不代表DRDS當前事務狀態;
- 不支持SET Syntax修改全局變量;
- 不支持PARTITION 語法,建議不要使用partition表;
- 不支持LOAD XML語句;
不支持的運算符
- 不支持“:=”賦值運算符;
- 不支持“->”運算符;
- 不支持“->>”運算符;
- 暫不支持“<=>”運算符;
- 暫不支持“IS UNKNOWN”表達式;
不支持的函數
DRDS計(ji)算層暫不支持如下(xia)函(han)(han)(han)數(shu),如果無法確認函(han)(han)(han)數(shu)是否(fou)能下(xia)推到RDS,請不要(yao)使用該(gai)函(han)(han)(han)數(shu)。
- 不支持XML函數;
- 不支持ANY_VALUE()函數;
- 不支持ROW_COUNT()函數;
- 不支持COMPRESS()函數;
- 不支持SHA()函數;
- 不支持SHA1()函數;
- 不支持MD5()函數;
- 不支持AES_ENCRYPT()函數;
- 不支持AES_DECRYPT()函數;
- 不支持JSON_OBJECTAGG()聚合函數;
- 不支持JSON_ARRAYAGG()聚合函數;
- 不支持STD()聚合函數;
- 不支持STDDEV()聚合函數;
- 不支持STDDEV_POP()聚合函數;
- 不支持STDDEV_SAMP()聚合函數;
- 不支持VAR_POP()聚合函數;
- 不支持VAR_SAMP()聚合函數;
- 不支持VARIANCE()聚合函數;
SQL語法使用限制
SELECT
- 不支持DISTINCTROW;
- 不支持[HIGH_PRIORITY]、[STRAIGHT_JOIN]、
[SQL_SMALL_RESULT]、 [SQL_BIG_RESULT] 、[SQL_BUFFER_RESULT]
、[SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]等選項放在DRDS實例下面。 - 不支持SELECT ... GROUP BY ... WITH ROLLUP語句;
- 不支持SELECT ... ORDER BY ... WITH ROLLUP語句;
- 不支持WITH語句;
- 不支持窗口函數;
- SELECT FOR UPDATE僅支持簡單查詢,不支持join、group by、order by、limit等語句。用于修飾FOR UPDATE的[NOWAIT | SKIP LOCKED]選項對于DRDS無效;
- 對于UNION中的每個SELECT, DRDS暫不支持使用多個同名的列。如下SQL的SELECT中存在重復的列名。
SELECT id, id, name FROM t1 UNION SELECT pk, pk, name FROM t2;
排序與Limit
- LIMIT/OFFSET參數支持范圍為0-2147483647;
聚合
- 不支持group by語句后添加asc/desc函數來實現排序語義;
說明DRDS自動忽略(lve)group by后的asc/desc關鍵字(zi)。MySQL 8.0.13以下版本支(zhi)持group by后添(tian)加asc/desc函數來(lai)實現排序語義,8.0.13及以上版本已廢棄該用(yong)法,使(shi)用(yong)時會報語法錯誤。推薦使(shi)用(yong)order by語句來(lai)保(bao)證排序語義。
子查詢
- 不支持孫子和爺爺存在關聯關系的子查詢;
- 不支持HAVING子句中的子查詢,JOIN ON 條件中的子查詢;
- Derived Tables 必須擁有一個別名;
- Derived Tables 不可以成為 Correlated Subqueries,即不能包含子查詢外部表的引用;
LOAD DATA語法限制
- ESCAPED BY只支持'';
- 不支持PARTITION (partition_name [, partition_name] ...);
- 不支持LINES STARTING BY 'string';
INSERT 和(he) REPLACE
- 不支持INSERT DELAYED...;
- 不支持不包含拆分字段的INSERT;
- 暫不支持PARTITION語法,建議不要使用partition表;
- INSERT操作不支持“datetime”字段取值1582年及之前年份;
- INSERT不支持ON DUPLICATE KEY UPDATE 關聯子查詢列;
INSERT INTO t1(a, b)
SELECT * FROM(SELECT c, d FROM t2 UNION SELECT e, f FROM t3) AS dt
ON DUPLICATE KEY UPDATE b = b + c;
示例ON DUPLICATE KEY UPDATE語句中引用了子查詢列c。 - INSERT和REPLACE不支持拆分鍵值為DEFAULT關鍵字;
UPDATE和(he)DELETE
- 不支持更新拆分鍵值為DEFAULT的關鍵字;
- 不支持在一個語句中對同一字段重復更新;
- 不支持關聯更新拆分鍵;
UPDATE tbl_1 a,tbl_2 b set a.name=b.name where a.id=b.id;
示例中“name”為tbl_1的拆分鍵。 - 不支持通過INSERT ON DUPLICATE KEY UPDATE更新拆分鍵;
- 不支持自關聯更新;
UPDATE tbl_1 a,tbl_1 b set a.tinyblob_col=concat(b.tinyblob_col,'aaabbb'); - 不支持不帶關聯條件的關聯更新;
UPDATE tbl_3,tbl_4 SET tbl_3.varchar_col='dsgfdg'; - 關聯更新不支持在目標列的賦值語句或表達式中引用其它目標列;
UPDATE tbl_1 a,tbl_2 b SET a.name=concat(b.name,'aaaa'),b.name=concat(a.name,'bbbb') ON a.id=b.id; - 對拆分字段的更新,將轉換成delete+insert兩個階段操作,操作中間不保證其它涉及到這張表中的拆分字段值的查詢語句的一致性;
DDL
- 庫名不可修改,拆分字段的名稱和類型都不可以變更;
- 不支持通過SQL直接創建、刪除邏輯庫;
- 不支持FULL_TEXT索引;
- 不支持 CREATE TABLE tblName AS SELECT stmt 語法;
- 不支持 CREATE TABLE tblName LIKE stmt 語法;
- 不支持單條語句中DROP多張表;
- DDL語句不支持多語句;
- 廣播表、拆分表不支持創建外鍵;
- 不支持創建以“_drds”為前綴的表;
- 不支持創建TEMPOPARY類型的拆分表、廣播表;
- create table中的unique key只能保證物理表內唯一,無法保證全局唯一;
索引
- 不支持全局二級索引;
- 不支持全局唯一索引, unique key\primary key無法保證全局唯一;
表回收站
- 不支持hint;
- 不支持按邏輯庫清除回收表;
- 不支持按邏輯表清除回收表;
- 表恢復后不保證全局唯一序列無縫銜接遞增,只確保遞增;
- 數據不支持分片變更;
- 不支持無限期保留副本;
- 不支持恢復到任意表名;
- 不支持不限量副本數;
事務
- 不Savepoints;
- 不支持XA語法(DRDS內部已經通過XA實現了分布式事務,不需要用戶層再處理這個語義);
- 不支持自定義事務隔離級別,目前DRDS只支持READ
COMMITTED隔離級別。考慮到兼容性因素,對于設置數據庫隔離級別的語句(如SET GLOBAL TRANSACTION ISOLATION
LEVEL REPEATABLE READ),DRDS不會報錯,但會忽略對事務隔離級別的修改; - 不支持設置事務為只讀(START TRANSACTION READ ONLY),考慮到兼容性因素,DRDS會將只讀事務的開啟自動轉換為開啟讀寫事務;
權限
- 不支持列級權限;
- 不支持子程序層級權限;
數據庫管理語句
- 不支持SHOW TRIGGERS語法;
- 不支持SHOW PROFILES、SHOW ERRORS、show warnings等多數運維SHOW語句;
- 下列的SHOW指令會隨機發到某個物理分片,每個物理分片如果在不同的RDS for MySQL實例上,查得的變量或者表信息可能不同:
SHOW TABLE STATUS;
SHOW VARIABLES Syntax;
SHOW WARNINGS Syntax 不支持 LIMIT/COUNT 的組合;
SHOW ERRORS Syntax 不支持 LIMIT/COUNT 的組合;
INFORMATION_SCHEMA - 僅支持SCHEMATA、TABLES、COLUMNS、STATISTICS、PARTITIONS的簡單查詢(沒有子查詢、JOIN、聚合函數、ORDER BY、 LIMIT);
高危操作提示
在您使(shi)用(yong)DRDS過程中,請不要進行以下(xia)高危(wei)操作:
- 為避免系統表、元數據等信息被誤清理,用戶盡量避免直連DN節點進行數據操作。
- 為避免元數據丟失,用戶請不要清理DRDS系統表(如:TBL_DRDS_TABLE、MYCAT_SEQUENCE)。