Mycat2 Sql兼容性 簡(jiǎn)介

2021-09-09 13:47 更新

Mycat雖然使用MySQL網(wǎng)絡(luò)通信協(xié)議實(shí)現(xiàn)與客戶端的通信,但是SQL執(zhí)行引擎實(shí)現(xiàn)技術(shù)與MySQL完全不相同.而且Mycat后端數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)也未必是MySQL數(shù)據(jù)庫,所以會(huì)有一些限制。

Explain語句

Mycat2支持Explain語句,僅支持select,delete,insert,update語句。 其他語法也一定程度上支持explain語句,但是不在實(shí)現(xiàn)目標(biāo)之內(nèi),可能存在不能運(yùn)行的情況。 語法

explain statement

結(jié)果

plan
sql:
SELECT *
FROM db1.`travelrecord`
rel:
View(
relNode=[SELECT *
FROM `db1`.`travelrecord`], 
distribution=[
{targetName='c0', schemaName='db1_0',tableName='travelrecord_0'},
{targetName='c0', schemaName='db1_0',tableName='travelrecord_1'},
...])

一般來說包含三個(gè)方面信息

  1. Mycat接收到的sql
  2. 下推的關(guān)系表達(dá)式以及最終執(zhí)行的sql模板
  3. 一個(gè)或多個(gè)存儲(chǔ)節(jié)點(diǎn)的信息

不支持的SQL高級(jí)功能

  1. 不支持UDF
  2. 不支持自定義數(shù)據(jù)類型
  3. 不支持外鍵
  4. 不支持Mycat運(yùn)算的邏輯視圖
  5. 不支持游標(biāo)
  6. 不支持觸發(fā)器
  7. 不支持Mycat運(yùn)算的存儲(chǔ)過程
  8. 不支持流程控制語句

不支持的DML

  1. 不支持一條SQL多表插入,刪除,更新
  2. 不支持子查詢內(nèi)使用for update
  3. 語法頂層的for update語句在非讀寫分離的功能上(即涉及分布式查詢)會(huì)把涉及的每個(gè)存儲(chǔ)節(jié)點(diǎn)的sql加上for update
  4. 插入,刪除,更新SQL中使用子查詢不能運(yùn)算跨分片的數(shù)據(jù)
  5. 不支持 STRAIGHT_JOINNATURAL JOIN
  6. 不支持MySQL注解
  7. 不支持跨分片刪除,更新使用order by/limit語法
  8. 不支持INSERT INTO ... SELECT ... FROM語法
  9. 不支持loaddata
  10. 不支持跨分片UPDATE DELETE有JOIN語法
  11. 不支持SELECT INTO OUTFILE/INTO DUMPFILE/INTO
  12. 兼容支持SQL中對(duì)變量讀寫,但是沒有副作用

不支持的DDL

  1. 所有DDL都不支持多表操作,只支持單表操作
  2. 所有DDL都不支持多庫操作,只支持單庫操作

不支持函數(shù)

  1. 不支持GTID函數(shù)
  2. 不支持全文檢索函數(shù)
  3. 不支持企業(yè)加密函數(shù)
  4. 不支持row_count函數(shù)

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

  1. 不支持空間數(shù)據(jù)類型
  2. JSON,XML類型需要使用字符串類型表示
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)