暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【StoneDB】使用限制

原创 Winter 2022-07-26
871

由于StoneDB是在原生的MySQL中加入的存储引擎,因此是高度兼容MySQL 5.6、5.7协议和MySQL生态等重要特性,支持MySQL常用的功能及语法,但由于StoneDB本身的一些特性,部分操作和功能尚未得到支持,以下列出的是不兼容MySQL的操作和功能。

不支持的DDL

1)修改字段的数据类型

2)修改字段的长度

3)修改表/字段的字符集

4)转换表的字符集

5)optimize table

6)analyze table

7)lock table

8)repair table

9)CTAS

10)重组表

11)重命名字段

12)设置字段的默认值

13)设置字段为空

14)设置字段非空

15)添加唯一约束

16)删除唯一约束

17)创建索引

18)删除索引

19)表修改注释

StoneDB是列式存储,数据是被高度压缩的,因此表和列的相关属性不易被修改,在表设计阶段尽可能定义好字符集、数据类型、约束和索引等。

不支持的DML

1)delete

2)update关联子查询

3)update多表关联

4)replace into

StoneDB不适用于有频繁的更新操作,因为对列式存储来说,更新需要找到对应的每一列,然后分多次更新,而行式存储由于一行紧挨着一行,找到对应的page或者block就可直接在行上更新,因此StoneDB只支持了常规用的单表update和insert。

不支持跨存储引擎关联查询

StoneDB默认不支持跨存储引擎关联查询,也就是说InnoDB存储引擎下的表和StoneDB存储引擎下的表进行关联查询会报错。可在stonedb.cnf参数文件里定义stonedb_ini_allowmysqlquerypath=1,这样就支持跨存储引擎表之间的关联查询了。

不支持的对象

1)全文索引

2)唯一约束

3)触发器

4)临时表

5)含有自定义函数的存储过程

6)含有SQL的自定义函数

不支持的数据类型

1)位类型bit

2)枚举型enum

3)集合型set

4)json类型

5)decimal精度必须小于或等于18,否则不支持,如decimal(18,x)

6)创建表时不支持使用关键字unsigned、zerofill

不支持事务

只有严格遵守ACID四大属性,才能真正的支持事务。而StoneDB由于没有redo和undo,是不支持事务的。

不支持分区

列式存储不支持分区。

不支持行锁、表锁

列式存储不支持行锁、表锁。

只支持statement的binlog格式

列式存储不支持row、mixed格式的binlog。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论