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

一体化实时HTAP数据库 StoneDB 的使用限制

原创 Winter 2022-07-25
389

使用限制

由于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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论