检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
事务 GaussDB数据库兼容MySQL的事务,但存在部分差异。本章节介绍GaussDB的M-Compatibility数据库中事务相关的差异。 事务默认隔离级别 M-Compatibility默认隔离级别为READ COMMITTED,MySQL默认隔离级别为REPEATABLE-READ。
JDBC JDBC接口参考 父主题: 驱动
选择存储模型 进行数据库设计时,表设计上的一些关键项将严重影响后续整库的查询性能。表设计对数据存储也有影响:好的表设计能够减少I/O操作及最小化内存使用,进而提升查询性能。 表的存储模型选择是表定义的第一步。客户业务属性是表的存储模型的决定性因素,依据下面表格选择适合当前业务的存储模型。
选择存储模型 进行数据库设计时,表设计上的一些关键项将严重影响后续整库的查询性能。表设计对数据存储也有影响:好的表设计能够减少I/O操作及最小化内存使用,进而提升查询性能。 表的存储模型选择是表定义的第一步。客户业务属性是表的存储模型的决定性因素,依据下面表格选择适合当前业务的存储模型。
为保留关键字,在MySQL中为非保留关键字,其差异为:在M-Compatibility模式下不可作为表名、列名、列别名、AS列别名、AS表别名、表别名、函数名和变量名,在MySQL中支持。 当关键字在M-Compatibility模式下为非保留关键字,在MySQL中为保留关键字,
认情况下会与MySQL有一定差异,需要设置GUC参数set standard_conforming_strings= off;的情况下,对于转义字符的场景才会与MySQL兼容,但是会产生非标准字符输入的warning告警,在转义字符中\t、\u与转义数字与MySQL有差异。JSO
JSON数据类型 表1 JSON数据类型 序号 MySQL数据库 GaussDB数据库 1 JSON 不完全兼容 父主题: 数据类型
GaussDB的数据类型的大部分功能场景与MySQL一致,但存在部分差异。 除特别说明,部分数据类型精度、标度、位数大小等不支持用浮点型数值定义,建议使用合法的整型数值定义。 GaussDB回显以\0结束,MySQL会把整个字符串显示,因此GaussDB会将被解析为\0后的字节截断,MySQL不会。 示例:
选择存储模型 进行数据库设计时,表设计上的一些关键项将严重影响后续整库的查询性能。表设计对数据存储也有影响:好的表设计能够减少I/O操作及最小化内存使用,进而提升查询性能。 表的存储模型选择是表定义的第一步。客户业务属性是表的存储模型的决定性因素,依据下面表格选择适合当前业务的存储模型。
GaussDB的数据类型的大部分功能场景与MySQL一致,但存在部分差异。 除特别说明,部分数据类型精度、标度、位数大小等不支持用浮点型数值定义,建议使用合法的整型数值定义。 数值数据类型 日期与时间数据类型 字符串数据类型 二进制数据类型 数据类型支持的属性 数据类型转换 父主题: MySQL数据库兼容性M-Compatibility模式
右侧括号中的是一个数组表达式,它必须产生一个数组值。左侧表达式的结果使用操作符对数组表达式的每一行结果都进行计算和比较,比较结果必须是布尔值。 如果对比结果至少获取一个真值,则ANY的结果为true。 如果对比结果没有真值,则ANY的结果为false。 如果结果没有真值,并且数组表达式生成
右侧括号中的是一个数组表达式,它必须产生一个数组值。左侧表达式的结果使用操作符对数组表达式的每一行结果都进行计算和比较,比较结果必须是布尔值。 如果对比结果至少获取一个真值,则ANY的结果为true。 如果对比结果没有真值,则ANY的结果为false。 如果结果没有真值,并且数组表达式生成
ALL (array expression) 右侧括号中的是一个数组表达式,它必须产生一个数组值。左侧表达式的结果使用操作符对数组表达式的每一行结果都进行计算和比较,比较结果必须是布尔值。 如果所有的比较结果都为真值(包括数组不含任何元素的情况),则ALL的结果为true。 如果存在一
DCL 表1 DCL语法兼容介绍 序号 概述 详细语法说明 差异 1 SET NAMES指定COLLATE字句 SET [ SESSION | LOCAL ] NAMES {'charset_name' [COLLATE 'collation_name'] | DEFAULT};
持20200101数值输入。MySQL支持数值输入转换为date类型。 分隔符:GaussDB不支持加号“+”、冒号“:”作为年、月、日之间的分隔符,其他的符号都支持。MySQL所有符号均可作为分隔符。 分隔符混合使用的某些场景也不支持,与MySQL也有差异,如'2020-01>
5”插入表后值为2。 表2 任意精度类型 序号 MySQL数据库 GaussDB数据库 差异 1 DECIMAL[(M[,D])] [ZEROFILL] 支持,存在差异 MySQL decimal用一个9*9的数组存储数值,整数部分和小数部分分开存储,超过该长度时优先截小数部分。GaussDB只会在整数位数超过81位时截断。
raise info '%', a; end; / INFO: {2} ANONYMOUS BLOCK EXECUTE 集合类型函数 以下函数定义说明里[]中的内容代表可选项,如:count[()]表示可以写成count或count()。 在内层表达式中,不支持通过嵌套的方式调用集合类型函数。
by列为分布列可以最大程度的实现这点。 从上述描述来看表定义中最重要的一点是分布列的选择。创建表定义一般遵循图1所示流程。表定义在数据库设计阶段创建,在SQL调优过程中进行审视和修改。 图1 表定义流程 父主题: 审视和修改表定义
ALL (array expression) 右侧括号中的是一个数组表达式,它必须产生一个数组值。左侧表达式的结果使用操作符对数组表达式的每一行结果都进行计算和比较,比较结果必须是布尔值。 如果所有的比较结果都为真值(包括数组不含任何元素的情况),则ALL的结果为true。 如果存在一
数据类型支持的属性 表1 数据类型支持的属性 序号 MySQL数据库 GaussDB数据库 1 NULL 支持 2 NOT NULL 支持 3 DEFAULT 支持 4 ON UPDATE 支持 5 PRIMARY KEY 支持 6 CHARACTER SET name 支持 7