华为云用户手册

  • 审计 云审计 服务(Cloud Trace Service, CTS ),是华为 云安全 解决方案中专业的日志审计服务,提供对各种云资源操作记录的收集、存储和查询功能,可用于支撑安全分析、合规审计、资源跟踪和问题定位等常见应用场景。 CTS的详细介绍和开通配置方法,请参见CTS快速入门。 通过云审计服务,您可以记录与 GaussDB 实例相关的操作事件,便于日后的查询、审计和回溯。具体内容请参见支持审计的关键操作列表。
  • 日志 出于分析或审计等目的,用户可以开启实例的日志记录功能。当用户开启日志记录功能后,GaussDB可以通过管理控制台下载日志。 错误日志 GaussDB支持下载错误日志。错误日志记录了数据库运行时的日志,通过错误日志有助于分析系统中存在的问题。错误日志的详细介绍,请参见错误日志。 慢日志 GaussDB支持下载慢日志。慢日志可以帮助您定位SQL语句执行慢的问题,从而进行优化。慢日志的详细介绍,请参见慢日志。
  • 其他语句 表1 其他语法兼容介绍 概述 详细语法说明 差异 事务相关语法 数据库默认隔离级别 M-Compatibility默认隔离级别为READ COMMITTED,MySQL默认隔离级别为REPEATABLE READ。 M-Compatibility隔离级别只有READ COMMITTED、REPEATABLE READ生效。 事务相关语法 事务嵌套 M-Compatibility中嵌套事务不会自动提交,MySQL会自动提交。 事务相关语法 自动提交 M-Compatibility使用GaussDB存储,继承GaussDB事务机制,事务中执行DDL,DCL不会自动提交。MySQL在DDL、DCL、管理类语句,锁相关语句会自动提交。 事务相关语法 报错后需rollback M-Compatibility事务中报错,需要执行rollback,MySQL无限制。 事务相关语法 锁机制 M-Compatibility锁机制只能在事务块中使用,MySQL无限制。 锁机制 锁机制 MySQL获取read锁后,当前会话无法进行写操作,M-Compatibility获取read锁后,当前会话可以进行写操作。 MySQL给表上锁后,读取其他表报错,M-Compatibility无限制。 MySQL同一会话中获取同一个表的锁,会自动释放上一个锁,并提交事务,M-Compatibility无该机制。 M-Compatibility中LOCK TABLE只能在一个事务块的内部有用,且无UNLOCK TABLE命令,锁总是在事务结束时释放。 PBE PBE 重复创建同名的PREPARE语句,M-Compatibility会报已经存在的错误,需要先删除已有statement,MySQL会覆盖旧的statement。 M-Compatibility和MySQL在SQL语句执行过程中对异常场景的报错阶段不同,例如解析层、执行层等;而PREPARE语句对预备语句只处理到解析层。因此PBE下对于异常场景,报错位置在PREPARE阶段还是EXECUTE阶段,M-Compatibility和MySQL存在可能差异。 父主题: SQL
  • 网络地址函数 表1 网络地址函数列表 MySQL数据库 GaussDB数据库 差异 INET_ATON() 支持 - INET_NTOA() 支持 - INET6_ATON() 支持 - INET6_NTOA() 支持,存在差异 GaussDB中,有效入参类型支持VARBINARY或BINARY类型; MySQL中,有效入参类型还支持TINYBLOB、MEDIUMBLOB、LONGBLOB或BLOB类型。 IS_IPV6() 支持 - IS_IPV4() 支持 - 父主题: 系统函数
  • 流程控制函数 表1 流程控制函数列表 MySQL数据库 GaussDB数据库 差异 IF() 支持,存在差异 当第一个参数为TRUE且第三个参数表达式中存在隐式类型转换错误,或者第一个参数为FALSE且第二个参数表达式中存在隐式类型转换错误时,MySQL会忽略该错误,GaussDB会提示类型转换错误。 IFNULL() 支持,存在差异 第一个参数不为NULL且第二个参数表达式中存在隐式类型转换错误时,MySQL会忽略该错误,GaussDB会提示类型转换错误。 NULLIF() 支持,存在差异 函数返回值类型在MySQL 5.7和MySQL 8.0中存在差异,考虑到MySQL 8.0更合理,因此函数返回值类型兼容MySQL 8.0。 父主题: 系统函数
  • 聚合函数 表1 聚合函数列表 MySQL数据库 GaussDB数据库 差异 AVG() 支持,存在差异 GaussDB中指定DISTINCT且SQL语句包含GROUP BY子句时,不保证返回结果的顺序。 GaussDB中当expr中的列为BIT、BOOL、整数类型,且所有行的和超过BIGINT的范围时,会发生溢出导致整数翻转。 BIT_AND() 支持 - BIT_OR() 支持 - BIT_XOR() 支持 - COUNT() 支持,存在差异 GaussDB中指定DISTINCT且SQL语句包含GROUP BY子句时,不保证结果的顺序。 GROUP_CONCAT() 支持,存在差异 GaussDB中指定DISTINCT且SQL语句包含GROUP BY子句时,不保证结果的顺序。 GaussDB中当GROUP_CONCAT参数中同时有DISTINCT和ORDER BY语法时,所有ORDER BY后的表达式必须也在DISTINCT的表达式之中。 GaussDB中GROUP_CONCAT(... ORDER BY 数字)不代表按照第几个参数的顺序,数字只是一个常量表达式,相当于不排序。 GaussDB中使用参数group_concat_max_len限制GROUP_CONCAT最大返回长度,超长截断,目前能返回的最大长度是1073741823,小于MySQL。 MAX() 支持,存在差异 GaussDB中指定DISTINCT且SQL语句包含GROUP BY子句时,不保证结果的顺序。当参数为非表字段时,MAX函数返回值类型和MySQL 5.7不一致。 MIN() 支持,存在差异 GaussDB中指定DISTINCT且SQL语句包含GROUP BY子句时,不保证结果的顺序。当参数为非表字段时,MIN函数返回值类型和MySQL 5.7不一致。 SUM() 支持,存在差异 GaussDB中指定DISTINCT且SQL语句包含GROUP BY子句时,不保证结果的顺序。 GaussDB中当expr中的列为BIT、BOOL、整数类型,且所有行的和超过BIGINT的范围时,会发生溢出导致整数翻转。 父主题: 系统函数
  • GaussDB与其他服务的关系 GaussDB与其他服务的关系如表1。 表1 与其他服务的关系 相关服务 交互功能 弹性云服务器(E CS ) 通过弹性云服务器(Elastic Cloud Server,简称ECS)远程连接GaussDB可以有效地降低应用响应时间、节省公网流量费用。 虚拟私有云(VPC) 对您的GaussDB实例进行网络隔离和访问控制。 对象存储服务 (OBS) 存储GaussDB实例的自动和手动备份数据。 云监控服务 (Cloud Eye) 云监控 服务是一个开放性的监控平台,帮助用户实时监测GaussDB资源的动态。云监控服务提供多种告警方式以保证及时预警,为您的服务正常运行保驾护航。 云审计服务(CTS) 云审计服务(Cloud Trace Service,简称CTS),为用户提供云服务资源的操作记录,供您查询、审计和回溯使用。 企业管理服务(EPS) 企业管理服务(Enterprise Project Management Service,简称EPS)提供统一的云资源按企业项目管理,以及企业项目内的资源管理、成员管理。 标签管理服务(TMS) 标签管理服务(Tag Management Service,简称TMS)是一种快速便捷将标签集中管理的可视化服务,提供跨区域、跨服务的集中标签管理和资源分类功能。 数据管理服务(DAS) 使用数据管理服务(Data Admin Service,简称DAS),通过专业优质的可视化操作界面,提高数据管理工作的效率和安全。
  • 排序规则 GaussDB数据库支持指定库、模式、表或列的排序规则,支持的范围如下。 排序规则差异说明: 当前仅有字符串类型、部分二进制类型支持指定排序规则,其他类型不支持指定排序规则,可以通过查询pg_type系统表中类型的typcollation属性不为0来判断该类型支持字符序。MySQL中所有类型可以指定字符序,但除字符串、二进制类型其他排序规则无实际意义。 当前排序规则(除binary外)仅支持在其对应字符集与库级字符集一致时可以指定,GaussDB数据库中,字符集必须与数据库的字符集一致,且不支持表内多种字符集混合使用。 utf8mb4字符集下默认字符序为utf8mb4_general_ci,与MySQL 5.7保持一致。 GaussDB中utf8和utf8mb4为同一个字符集。 表1 排序规则列表 MySQL数据库 GaussDB数据库 utf8mb4_general_ci 支持 utf8mb4_unicode_ci 支持 utf8mb4_bin 支持 gbk_chinese_ci 支持 gbk_bin 支持 gb18030_chinese_ci 支持 gb18030_bin 支持 binary 支持 utf8mb4_0900_ai_ci 支持 utf8_general_ci 支持 utf8_bin 支持 父主题: MySQL兼容性B模式
  • 二进制数据类型 表1 二进制数据类型 MySQL数据库 GaussDB数据库 差异 BINARY[(M)] 不支持 - VARBINARY(M) 不支持 - TINYBLOB 支持 取值范围:GaussDB中该类型由BYTEA类型映射得来,长度不能超过1GB,超过长度限制后会报错。MySQL中该类型不能超过255字节,超过长度限制后,在严格模式下会报错,在宽松模式下会对数据进行截断并告警。 输入格式:不支持转义字符输入,不支持""双引号输入。 输出格式:对于'\0'字符,查询结果表现为“\000”,使用JDBC驱动的getBytes接口获取表现为'\0'字符。 操作符:不支持算数运算符“+”、“-”、“*”、“/”、“%”;不支持常用逻辑运算符或、与、非(“||”、“&&”、“!”);不支持常用位运算符“~”、“&”、“|”、“^”)。 BLOB 支持 取值范围:GaussDB中该类型由BYTEA类型映射得来,长度不能超过1GB,超过长度限制后会报错。MySQL中该类型不能超过65535字节,超过长度限制后,在严格模式下会报错,在宽松模式下会对数据进行截断并告警。 输入格式:不支持转义字符输入,不支持""双引号输入。 输出格式:对于'\0'字符,查询结果表现为“\000”,使用JDBC驱动的getBytes接口获取表现为'\0'字符。 操作符:不支持算数运算符“+”、“-”、“*”、“/”、“%”;不支持常用逻辑运算符或、与、非(“||”、“&&”、“!”);不支持常用位运算符“~”、“&”、“|”、“^”。 MEDIUMBLOB 支持 取值范围:GaussDB中该类型由BYTEA类型映射得来,长度不能超过1GB,超过长度限制后会报错。MySQL中该类型不能超过16777215字节,超过长度限制后,在严格模式下会报错,在宽松模式下会对数据进行截断并告警。 输入格式:不支持转义字符输入,不支持""双引号输入。 输出格式:对于'\0'字符,查询结果表现为“\000”,使用JDBC驱动的getBytes接口获取表现为'\0'字符。 操作符:不支持算数运算符“+”、“-”、“*”、“/”、“%”;不支持常用逻辑运算符或、与、非(“||”、“&&”、“!”);不支持常用位运算符“~”、“&”、“|”、“^”。 LONGBLOB 支持 取值范围:GaussDB中该类型由BYTEA类型映射得来,只支持不超过1GB的长度,具体范围参照bytea数据类型集中式和分布式规格。 输入格式:不支持转义字符输入,不支持""双引号输入。 输出格式:对于'\0'字符,查询结果表现为“\000”,使用JDBC驱动的getBytes接口获取表现为'\0'字符。 操作符:不支持算数运算符“+”、“-”、“*”、“/”、“%”;不支持常用逻辑运算符或、与、非(“||”、“&&”、“!”);不支持常用位运算符“~”、“&”、“|”、“^”。 BIT[(M)] 不支持 - 父主题: 数据类型
  • 排序规则 GaussDB数据库支持指定模式、表或列的排序规则,支持的范围如下。 排序规则差异说明: 当前仅有字符串类型、部分二进制类型支持指定排序规则,其他类型不支持指定排序规则,可以通过查询pg_type系统表中类型的typcollation属性不为0来判断该类型支持字符序。MySQL中所有类型可以指定字符序,但除字符串、二进制类型其他排序规则无实际意义。 当前排序规则仅支持在其对应字符集与库级字符集一致时可以指定。 utf8mb4字符集下默认字符序为utf8mb4_general_ci,与MySQL 5.7保持一致,utf8mb4_0900_ai_ci为utf8mb4的非默认字符序。 GaussDB中utf8和utf8mb4为同一个字符集。 表1 排序规则列表 MySQL数据库 GaussDB数据库 utf8mb4_general_ci 支持 utf8mb4_unicode_ci 支持 utf8mb4_bin 支持 gbk_chinese_ci 支持 gbk_bin 支持 gb18030_chinese_ci 支持 gb18030_bin 支持 binary 支持 utf8mb4_0900_ai_ci 支持 utf8_general_ci 支持 utf8_bin 支持 父主题: MySQL兼容性MySQL模式
  • DDL MySQL数据库功能概述 详细语法说明 GaussDB数据库实现差异 建表和修改表时支持创建主键、UNIQUE索引、外键约束 ALTER TABLE、CREATE TABLE GaussDB当前不支持UNIQUE INDEX|KEY index_name语法,使用UNIQUE INDEX|KEY index_name语法时会报错。 当约束被建立为全局二级索引,SQL语句中指定using btree时,底层会建立为ubtree。 当约束关联的表为ustore,且SQL语句中指定为using btree时,底层会建立为ubtree。 支持自增列 ALTER TABLE、CREATE TABLE 自动增长列建议为索引(非全局二级索引)的第一个字段,否则建表时产生警告,含有自动增长列的表进行某些操作时会产生错误,例如:ALTERT TABLE EXCHANGE PARTITION。MySQL自动增长列必须为索引第一个字段。 AUTO_INCREMENT = value语法,value必须为小于2^127的正数。MySQL不校验value。 当自增值已经达到字段数据类型的最大值时,继续自增将产生错误。MySQL有些场景产生错误或警告,有些场景仍自增为最大值。 不支持innodb_autoinc_lock_mode系统变量,GaussDB的GUC参数auto_increment_cache=0时,批量插入自动增长列的行为与MySQL系统变量innodb_autoinc_lock_mode=1相似。 自动增长列在导入数据或者进行Batch Insert执行计划的插入操作时,对于混合0、NULL和确定值的场景,如果产生错误,后续插入自增值不一定与MySQL完全一致。提供auto_increment_cache参数,可以控制预留自增值的数量。 并行导入或插入自动增长列触发自增时,每个并行线程预留的缓存值也只在其线程中使用,未完全使用完毕的话,也会出现表中自动增长列的值不连续的情况。并行插入产生的自增值结果无法保证与MySQL完全一致。 本地临时表中的自动增长列批量插入时不会预留自增值,正常场景不会产生不连续的自增值。MySQL临时表与普通表中的自动增长列自增结果一致。 SERIAL数据类型为原有的自增列,与AUTO_INCREMENT自增列有差异。MySQL的SERIAL数据类型就是AUTO_INCREMENT自增列。 不允许auto_increment_offset的值大于auto_increment_increment的值,会产生错误。MySQL允许,并说明auto_increment_offset会被忽略。 在表有主键或索引的情况下,ALTER TABLE命令重写表数据的顺序与MySQL不一定相同,GaussDB按照表数据存储顺序重写,MySQL会按主键或索引顺序重写,导致自增值的顺序可能不同。 ALTER TABLE命令添加或修改自增列时,第一次预留自增值的数量是表统计信息中的行数,统计信息的行数不一定与MySQL一致。 last_insert_id函数返回值为128位的整型。 在触发器或用户自定义函数中自增时,刷新last_insert_id返回值。MySQL不刷新。 对GUC参数auto_increment_offset和auto_increment_increment设置超出范围的值会产生错误。MySQL会自动改为边界值。 sql_mode设置no_auto_value_on_zero参数,表定义的自动增长列为非NOT NULL约束,向表中插入数据不指定自动增长列的值时,GaussDB中自动增长列插入NULL值,且不触发自增;MySQL中自动增长列插入NULL值,触发自增。 支持前缀索引 CREATE INDEX、ALTER TABLE、CREATE TABLE 前缀长度不得超过2676,键值的实际长度受内部页面限制,若字段中含有多字节字符或者一个索引上有多个键,索引行长度可能会超限报错。 CREATE INDEX语法中,不支持以下关键字作为前缀键的字段名称:COALESCE、EXTRACT、GREATEST、LEAST、LNNVL、NULLIF、NVL、NVL2、OVERLAY、POSITION、REGEXP_LIKE、SUBSTRING、TIMESTAMPDIFF、TREAT、TRIM、XMLCONCAT、XMLELEMENT、XMLEXISTS、XMLFOREST、XMLPARSE、XMLPI、XMLROOT、XMLSERIALIZE。 主键索引中不支持前缀键。 支持指定字符集与排序规则 ALTER SCHEMA、ALTER TABLE、 CREATE SCHEMA、CREATE TABLE - 修改表时支持在表第一列前面或者在指定列后面添加列 ALTER TABLE - 修改列名称/定义语法兼容 ALTER TABLE - 定时任务EVENT语法兼容 ALTER EVENT、CREATE EVENT、DROP EVENT、 SHOW EVENTS - 创建分区表语法兼容 CREATE TABLE PARTITION、CREATE TABLE SUBPARTITION - 建表和修改表时支持指定表级和列级comment CREATE TABLE、ALTER TABLE - 创建索引时支持指定索引级comment CREATE INDEX - 交换普通表和分区表分区的数据 ALTER TABLE PARTITION ALTER TABLE EXCHANGE PARTITION的差异点: 对于自增列,MySQL执行alter exchange partition后,自增列会被重置;GaussDB 则不会被重置,自增列则按照旧的自增值递增。 MySQL表或分区使用tablespace时,则无法进行分区和普通表数据的交换;GaussDB表或分区使用不同的tablespace时,仍可进行分区和普通表数据的交换。 对于列默认值,MySQL不会校验默认值,因此默认值不同时也可进行分区和普通表数据的交换;GaussDB会校验默认值,如果默认值不同,则无法进行分区和普通表数据的交换。 MySQL在分区表或普通表上进行DROP列操作后,表结构仍然一致,则可进行分区和普通表数据的交换;GaussDB需要保证普通表和分区表的被删除列严格对齐才能进行分区和普通表数据的交换。 MySQL和GaussDB的哈希算法不同,所以两者在相同的hash分区存储的数据可能不一致,导致最后交换的数据也可能不一致。 MySQL的分区表不支持外键,普通表包含外键或其他表引用普通表的外键,则无法进行分区和普通表数据的交换;GaussDB的分区表支持外键,在两个表的外键约束一致时,则可进行分区和普通表数据的交换,GaussDB的分区表不带外键,普通表有其他表引用,如果分区表和普通表表一致,则可进行分区和普通表数据的交换。 支持删除表的主键外键约束 ALTER TABLE DROP [PRIMARY | FOREIGN]KEY - 支持CREATE TABLE ... LIKE语法兼容 CREATE TABLE ... LIKE 在MySQL 8.0.16 之前的版本中,CHECK约束会被语法解析但功能会被忽略,表现为不复制CHECK约束,GaussDB支持复制CHECK约束。 对于主键约束名称,在建表时,MySQL所有主键约束名称固定为PRIMARY KEY,GaussDB不支持复制。 对于唯一键约束名称,在建表时,MySQL支持复制,GaussDB不支持复制。 对于CHECK约束名称,在建表时,MySQL 8.0.16 之前的版本无CHECK约束信息,GaussDB支持复制。 对于索引名称,在建表时,MySQL支持复制,GaussDB不支持复制。 在跨sql_mode模式建表时,MySQL受宽松模式和严格模式控制,GaussDB可能存在严格模式失效的情况。 例如:源表存在默认值“0000-00-00”,在“no_zero_date”严格模式下,GaussDB建表成功,且包含默认值“0000-00-00”,严格模式失效;而MySQL建表失败,受严格模式控制。 针对跨数据库创建表,MySQL支持,GaussDB不支持。 支持更改表名兼容语法 ALTER TABLE tbl_name RENAME [TO | AS | =] new_tbl_name; RENAME {TABLE | TABLES} tbl_name TO new_tbl_name [, tbl_name2 TO new_tbl_name2, ...]; GaussDB的alter rename语法仅支持修改表名称功能操作,不能耦合其它功能操作。 GaussDB中,仅旧表名字段支持使用schema.table_name格式,且新表名与旧表名将属于同一个Schema。 GaussDB不支持新旧表跨Schema重命名操作;但如有权限,则可在当前Schema下修改其它Schema下表名称。 GaussDB的rename多组表的语法支持全为本地临时表的重命名,不支持本地临时表和非本地临时表组合的场景。 GaussDB的RENAME TABLE校验顺序与MySQL不一致,导致报错信息不一致。 支持增加子分区语法兼容 ALTER TABLE [ IF EXISTS ] { table_name [*] | ONLY table_name | ONLY ( table_name )} action [, ... ]; action: move_clause | exchange_clause | row_clause | merge_clause | modify_clause | split_clause | add_clause | drop_clause | ilm_clause add_clause: ADD {{partition_less_than_item | partition_start_end_item | partition_list_item} | PARTITION({partition_less_than_item | partition_start_end_item | partition_list_item})} 不支持如下语法添加多分区: ALTER TABLE table_name ADD PARTITION (partition_definition1, partition_definition1,…); 仅支持原有添加多分区语法: ALTER TABLE table_name ADD PARTITION (partition_definition1), ADD PARTITION (partition_definition2[y1] ), …; 父主题: SQL
  • MySQL兼容性B模式概述 本章节主要介绍GaussDB数据库的MySQL兼容性B模式(即sql_compatibility='B'、且设置参数b_format_version='5.7'、b_format_dev_version='s1'时)与MySQL 5.7数据库的兼容性对比信息。仅介绍503.0.0版本后新增的兼容性特性,特性的相关规格和约束建议在《开发指南》中查看。 GaussDB数据库在数据类型、SQL功能和数据库对象等基本功能上与MySQL数据库兼容。 由于GaussDB数据库与MySQL数据库底层框架实现存在差异,GaussDB数据库与MySQL数据库仍存在部分差异。 父主题: MySQL兼容性B模式
  • GaussDB数据库和内核引擎版本对应关系 GaussDB版本的对应关系如表1所示。 GaussDB数据库引擎版本和内核引擎版本查询方法请参考查看云数据库GaussDB数据库和内核引擎版本。 表1 GaussDB数据库和内核引擎版本对应关系 GaussDB数据库引擎版本 GaussDB内核引擎版本 V2.0-8.201.0 505.2.0 V2.0-3.226.0 503.1.0.SPC2300 V2.0-3.223.0 503.1.0.SPC2000 V2.0-3.222.0 503.1.0.SPC1700 V2.0-3.220.0 503.1.0.SPC1500 V2.0-3.208.0 503.1.0.SPC1200 V2.0-3.207.0 503.1.0.SPC1100 V2.0-3.201.0 503.1.0.SPC0200
  • 流程控制函数 表1 流程控制函数列表 MySQL数据库 GaussDB数据库 差异 IF() 支持,存在差异 当第一个参数为TRUE且第三个参数表达式中存在隐式类型转换错误,或者第一个参数为FALSE且第二个参数表达式中存在隐式类型转换错误时,MySQL会忽略该错误,GaussDB会提示类型转换错误。 IFNULL() 支持,存在差异 第一个参数不为NULL且第二个参数表达式中存在隐式类型转换错误时,MySQL会忽略该错误,GaussDB会提示类型转换错误。 NULLIF() 支持,存在差异 函数返回值类型在MySQL 5.7和MySQL 8.0中存在差异,考虑到MySQL 8.0更合理,因此函数返回值类型兼容MySQL 8.0。 父主题: 系统函数
  • 系统函数 GaussDB数据库兼容绝大多数MySQL的系统函数,但存在部分差异。 除特别说明外,MySQL兼容性B模式中的函数行为默认为GaussDB原生行为。 GaussDB MySQL兼容性的绝大部分系统函数目前均存在返回值与MySQL精度不一致(结果后面0的位数)的问题,这是由于部分数据类型在某些场景下仍存在精度丢失问题,无法正确获取精度,导致目前部分函数未完全做到适配。 流量控制函数 日期和时间函数 字符串函数 强制转换函数 加密函数 信息函数 JSON函数 聚合函数 数字操作函数 其他函数 父主题: MySQL兼容性B模式
  • 数字操作函数 表1 数字操作函数列表 MySQL数据库 GaussDB数据库 差异 ABS() 支持 - ACOS() 支持 - ASIN() 支持 - ATAN() 支持 - ATAN2() 支持 - CEILING() 支持,存在差异 部分操作结果类型以及CREATE TABLE AS的精度与MySQL不一致。 入参为INT类型时,GaussDB返回值类型为BIGINT,MySQL返回值类型为INT。 入参为BIGINT类型或BIGINT UNSIGNED类型,入参值大于等于20位时(包括符号位),GaussDB返回整型,MySQL 5.7返回DECIMAL。该情况下会导致嵌套场景时,CEILING函数作为内层函数存在差异。 SET m_format_behavior_compat_options='enable_precision_decimal'; CREATE TABLE tt AS SELECT ceiling(-9223372036854775808); DESC tt; MySQL表字段返回类型为:DECIMAL(16,0)。 GaussDB表字段返回类型为:BIGINT(17)。 入参为NUMERIC类型时,返回类型可能与MySQL不一致。 当参数为常量、表字段时结果类型和MySQL 5.7保持一致。对于其他类型的入参如嵌套情况,结果会有差异,GaussDB返回NUMERIC类型,MySQL可能返回整型。 SET m_format_behavior_compat_options='enable_precision_decimal'; CREATE TABLE t AS SELECT ceiling(-5.5); DESC t; MySQL表字段返回类型为:INT(5)。 GaussDB表字段返回类型为:INT(5)。 SET m_format_behavior_compat_options='enable_precision_decimal'; CREATE TABLE t AS SELECT ceiling(abs(5.5)); DESC t; MySQL表字段返回类型为:INT(4)。 GaussDB表字段返回类型为:DECIMAL(3,0)。 COS() 支持 - DEGREES() 支持 - EXP() 支持 - FLOOR() 支持,存在差异 部分操作结果类型以及CREATE TABLE AS的精度与MySQL不一致。 入参为INT类型时,GaussDB返回值类型为BIGINT,MySQL返回值类型为INT。 入参为BIGINT类型或BIGINT UNSIGNED类型,入参值大于等于20位时(包括符号位),GaussDB返回整型,MySQL 5.7返回DECIMAL。该情况下会导致嵌套场景时,floor函数作为内层函数存在差异。 -- 宽松模式下: SET m_format_behavior_compat_options='enable_precision_decimal'; CREATE TABLE tt AS SELECT floor(-9223372036854775808); DESC tt; MySQL表字段返回类型为:DECIMAL(16,0)。 GaussDB表字段返回类型为:BIGINT(17)。 入参为NUMERIC类型时,返回类型可能与MySQL不一致。 当参数为常量、表字段时结果类型和MySQL 5.7保持一致。对于其他类型的入参如嵌套情况,结果会有差异,GaussDB返回NUMERIC类型,MySQL可能返回整型。 SET m_format_behavior_compat_options='enable_precision_decimal'; CREATE TABLE t AS SELECT floor(-5.5); DESC t; MySQL表字段返回类型为:INT(5)。 GaussDB表字段返回类型为:INT(5)。 SET m_format_behavior_compat_options='enable_precision_decimal'; CREATE TABLE t AS SELECT floor(abs(5.5)); DESC t; MySQL表字段返回类型为:INT(4)。 GaussDB表字段返回类型为:DECIMAL(3,0)。 LN() 支持 - LOG () 支持 - LOG10() 支持 - LOG2() 支持 - PI() 支持,存在差异 精度传递开关关闭的情况下,也即m_format_behavior_compat_options中的enable_precision_decimal未设置时,PI函数的返回值精度与MySQL的有差异:MySQL中PI函数的结果仅保留四舍五入之后的小数后6位,而GaussDB的结果会保留四舍五入之后的小数后15位。 POW() 支持 - POWER() 支持 - RAND() 支持 - SIGN() 支持 - SIN() 支持 - SQRT() 支持 - TAN() 支持 - TRUNCATE() 支持 - CEIL() 支持 - CRC32() 支持,存在差异 当BINARY类型插入字符串长度小于目标长度时,GaussDB填充符和MySQL不同;因此入参为BINARY类型时,函数结果和MySQL不一致。 CONV() 支持 - 父主题: 系统函数
  • Database和Schema设计 MySQL的数据对象包括DATABASE、TABLE、INDEX、VIEW、TRIGGER、PROC等,MySQL的对象层次跟GaussDB的对应关系是从上至下且一对多包含关系。如下图所示: 图1 MySQL和GaussDB中Database和Schema之间的差异 在MySQL中Database和Schema是同义词;而在GaussDB中,一个Database 下可以有多个Schema。在该特性中,每个MySQL中的Database都被映射到GaussDB的一个Schema。 在MySQL中,INDEX从属于一个TABLE,但在GaussDB中,INDEX从属于一个Schema。这个差异导致INDEX名在GaussDB中要求在Schema内唯一,但在MySQL中仅要在在一个表内唯一。这个差异将作为当前约束予以保留。
  • Database和Schema设计 MySQL的数据对象包括DATABASE、TABLE、INDEX、VIEW、TRIGGER、PROC等,MySQL的对象层次跟GaussDB的对应关系是从上至下且一对多包含关系。如下图所示: 图1 MySQL和GaussDB中Database和Schema之间的差异 在MySQL中Database和Schema是同义词;而在GaussDB中,一个Database 下可以有多个Schema。在该特性中,每个MySQL中的Database都被映射到GaussDB的一个Schema。 在MySQL中,INDEX从属于一个TABLE,但在GaussDB中,INDEX从属于一个Schema。这个差异导致INDEX名在GaussDB中要求在Schema内唯一,但在MySQL中仅要在在一个表内唯一。这个差异将作为当前约束予以保留。
  • 数据库实例状态 数据库实例状态是数据库实例的运行情况。用户可以使用管理控制台和API操作查看数据库实例状态。 表1 状态及说明 状态 说明 正常 数据库实例正常和可用。 异常 数据库实例不可用。 创建中 正在创建数据库实例。 创建失败 数据库实例创建失败。 重启中 数据库实例重启中。 启动中 数据库实例启动中。 节点启动中 数据库实例节点启动中。 停止中 数据库实例停止中。 节点停止中 数据库实例节点停止中。 已停止 数据库实例/节点已停止。 扩容中 数据库实例磁盘扩容中。 添加节点中 数据库实例节点扩容中。 备份中 正在备份数据库实例。 恢复中 正在恢复备份到实例中。 恢复失败 实例恢复失败。 冻结 账户余额小于或等于0元,系统对该用户下的实例进行冻结。您需前往费用中心充值成功,欠款核销后,冻结的实例才会解冻。 存储空间满 实例的磁盘空间已满,此时不可进行数据库写入操作,您需要扩容磁盘使实例恢复到正常状态。 已删除 数据库实例已被删除,对于已经删除的实例,将不会在实例列表中显示。 版本升级中 实例版本正在升级中。 参数变更,等待重启 数据库参数修改后,有些参数修改,需等待用户重启实例才能生效。 变更副本中 数据库实例正在执行降副本操作。
  • GaussDB分布式版形态整体架构 GaussDB分布式版形态整体架构如下: 图1 GaussDB分布式版形态整体架构图 Coordinator Node:协调节点CN,负责接收来自应用的访问请求,并向客户端返回执行结果;负责分解任务,并调度任务分片在各DN上并行执行。 GTM:全局事务管理器(Global Transaction Manager),负责生成和维护全局事务ID、事务快照、时间戳、Sequence信息等全局唯一的信息。 Data Node:数据节点DN,负责存储业务数据、执行数据查询任务以及向CN返回执行结果。
  • GaussDB 集中式形态整体架构 GaussDB 集中式形态整体架构如下: 图2 GaussDB集中式形态整体架构图 ETCD:分布式键值存储系统(Editable Text Configuration Daemon)。用于共享配置和服务发现(服务注册和查找)。 CMS:集群管理模块(Cluster Manager)。管理和监控分布式系统中各个功能单元和物理资源的运行情况,确保整个系统的稳定运行。 Data Node:数据节点DN,负责存储业务数据、执行数据查询任务以及返回执行结果。
  • 数字操作函数 表1 数字操作函数列表 MySQL数据库 GaussDB数据库 差异 log2() 支持,存在差异 小数位显示与MySQL存在差异,受GaussDB浮点数据类型限制,可通过参数extra_float_digits控制小数位个数显示; 由于输入精度内部处理差异,GaussDB与MySQL会存在结果计算差异; 支持数据类型有: 整数类型:bigint、int16、int、smallint 、tinyint。 无符号整数类型:bigint unsigned、integer unsigned、smallint unsigned、tinyint unsigned。 浮点数类型:numeric、real。 字符串类型:character、character varying、clob、text,仅支持纯数字整数字符串。 set类型。 NULL空类型。 log10() 支持,存在差异 小数位显示与MySQL存在差异,受GaussDB浮点数据类型限制,可通过参数extra_float_digits控制小数位个数显示; 由于输入精度内部处理差异,GaussDB与MySQL会存在结果计算差异; 支持数据类型有: 整数类型:bigint、int16、int、smallint 、tinyint。 无符号整数类型:bigint unsigned、integer unsigned、smallint unsigned、tinyint unsigned。 浮点数类型:numeric、real。 字符串类型:character、character varying、clob、text,仅支持纯数字整数字符串。 set类型。 NULL空类型。 父主题: 系统函数
  • 获取结果集中的数据 ResultSet对象提供了丰富的方法,以获取结果集中的数据。获取数据常用的方法如表1所示,其他方法请参考JDK官方文档。 表1 ResultSet对象的常用方法 方法 描述 差异 int getInt(int columnIndex) 按列标获取int型数据。 - int getInt(String columnLabel) 按列名获取int型数据。 - String getString(int columnIndex) 按列标获取String型数据。 字段类型为整型且带有ZEROFILL属性时,GaussDB按照ZEROFILL属性要求的宽度信息用0进行补位后输出结果,MySQL直接输出结果。 String getString(String columnLabel) 按列名获取String型数据。 字段类型为整型且带有ZEROFILL属性时,GaussDB按照ZEROFILL属性要求的宽度信息用0进行补位后输出结果,MySQL直接输出结果。 Date getDate(int columnIndex) 按列标获取Date型数据 - Date getDate(String columnLabel) 按列名获取Date型数据。 -
  • 二进制数据类型 表1 二进制数据类型 MySQL数据库 GaussDB数据库 差异 BINARY[(M)] 不支持 - VARBINARY(M) 不支持 - TINYBLOB 支持 取值范围:GaussDB中该类型由BYTEA类型映射得来,长度不能超过1GB,超过长度限制后会报错。MySQL中该类型不能超过255字节,超过长度限制后,在严格模式下会报错,在宽松模式下会对数据进行截断并告警。 输入格式:不支持转义字符输入,不支持""双引号输入。 输出格式:对于'\0'字符,查询结果表现为“\000”,使用JDBC驱动的getBytes接口获取表现为'\0'字符。 操作符:不支持算数运算符“+”、“-”、“*”、“/”、“%”;不支持常用逻辑运算符或、与、非(“||”、“&&”、“!”);不支持常用位运算符“~”、“&”、“|”、“^”)。 BLOB 支持 取值范围:GaussDB中该类型由BYTEA类型映射得来,长度不能超过1GB,超过长度限制后会报错。MySQL中该类型不能超过65535字节,超过长度限制后,在严格模式下会报错,在宽松模式下会对数据进行截断并告警。 输入格式:不支持转义字符输入,不支持""双引号输入。 输出格式:对于'\0'字符,查询结果表现为“\000”,使用JDBC驱动的getBytes接口获取表现为'\0'字符。 操作符:不支持算数运算符“+”、“-”、“*”、“/”、“%”;不支持常用逻辑运算符或、与、非(“||”、“&&”、“!”);不支持常用位运算符“~”、“&”、“|”、“^”。 MEDIUMBLOB 支持 取值范围:GaussDB中该类型由BYTEA类型映射得来,长度不能超过1GB,超过长度限制后会报错。MySQL中该类型不能超过16777215字节,超过长度限制后,在严格模式下会报错,在宽松模式下会对数据进行截断并告警。 输入格式:不支持转义字符输入,不支持""双引号输入。 输出格式:对于'\0'字符,查询结果表现为“\000”,使用JDBC驱动的getBytes接口获取表现为'\0'字符。 操作符:不支持算数运算符“+”、“-”、“*”、“/”、“%”;不支持常用逻辑运算符或、与、非(“||”、“&&”、“!”);不支持常用位运算符“~”、“&”、“|”、“^”。 LONGBLOB 支持 取值范围:GaussDB中该类型由BYTEA类型映射得来,只支持不超过1GB的长度,具体范围参照bytea数据类型集中式和分布式规格。 输入格式:不支持转义字符输入,不支持""双引号输入。 输出格式:对于'\0'字符,查询结果表现为“\000”,使用JDBC驱动的getBytes接口获取表现为'\0'字符。 操作符:不支持算数运算符“+”、“-”、“*”、“/”、“%”;不支持常用逻辑运算符或、与、非(“||”、“&&”、“!”);不支持常用位运算符“~”、“&”、“|”、“^”。 BIT[(M)] 不支持 - 父主题: 数据类型
  • 字符串函数 表1 字符串函数列表 MySQL数据库 GaussDB数据库 差异 BIN() 支持,存在差异 函数入参支持类型存在差异,GaussDB入参支持类型如下: 整数类型:tinyint、smallint、mediumint、int、bigint 无符号整数类型:tinyint unsigned、smallint unsigned、int unsigned、bigint unsigned 字符和文本类型:char、varchar、tinytext、text、mediumtext、longtext,仅支持纯数字整数字符串,且整数范围在bigint范围内。 浮点类型:float、real、double 定点类型:numeric、decimal、dec 布尔类型:bool CONCAT() 支持,存在差异 无论参数的数据类型如何,concat返回值的数据类型始终为text;MySQL的concat在含有二进制类型参数时,返回值为二进制类型。 CONCAT_WS() 支持,存在差异 无论参数的数据类型如何,concat_ws返回值的数据类型始终为text;MySQL的concat_ws在含有二进制类型参数时,返回值为二进制类型,其他情况返回值为字符串类型。 ELT() 支持,存在差异 函数入参1支持类型存在差异,GaussDB入参1支持类型如下: 整数类型:tinyint、smallint、mediumint、int、bigint 无符号整数类型:tinyint unsigned、smallint unsigned、int unsigned 字符和文本类型:char、varchar、tinytext、text、mediumtext、longtext,仅支持纯数字整数字符串,且整数范围在bigint范围内。 浮点类型:float、real、double 定点类型:numeric、decimal、dec 布尔类型:bool 函数入参2支持类型存在差异,GaussDB入参2支持类型如下: 整数类型:tinyint、smallint、mediumint、int、bigint 无符号整数类型:tinyint unsigned、smallint unsigned、int unsigned、bigint unsigned 字符和文本类型:char、varchar、tinytext、text、mediumtext、longtext 浮点类型:float、real、double 定点类型:numeric、decimal、dec 布尔类型:bool 大对象类型:tinyblob、blob、mediumblob、longblob 日期类型:datetime、timestamp、date、time FIELD 支持,存在差异 函数入参在bigint最大值 ~ bigint unsigned最大值范围内的数字,存在不兼容。 函数入参为浮点型float(m, d)、double(m, d)、real(m, d)时精度更高,存在不兼容。 FIND_IN_SET() 支持,存在差异 当数据库encoding = 'SQL_ASCII'时,不支持默认的大小写判断规则,即在用户不指定字符集规则的情况下,大写与小写区分判断。 INSERT() 支持,存在差异 Int64类型传参有范围限制,一旦超出-9223372036854775808~9223372036854775807范围会直接报错,MySQL对数值类型传参范围无限制,异常会告警按照上限或下限数值处理。 字符串传参有限制,入参text类型字符串长度最大为2^30-5字节,入参bytea类型字符串长度最大为2^30-512字节。 s1和s2任意参数为bytea类型时,涉及到结果出现非法字符的情况可能展示结果与MySQL有差异但是字符编码与MySQL是一致的。 LOCATE() 支持,存在差异 入参1为bytea类型,入参2为text类型时,GaussDB与MySQL行为存在差异。 MAKE_SET() 支持,存在差异 bits参数为整型时,最大范围支持到int128,低于MySQL范围。 bits参数为日期类型datetime、timestamp、date、time,由于时间类型转整型与MySQL存在差异,目前均未做支持。 bit类型或bool类型由于此类数据类型GaussDB与MySQL存在差异,返回结果导致的差异为GaussDB与MySQL固有差异。bits入参为bool类型,str入参为bit类型与bool类型均不做支持。 bits入参为字符串或文本类型时,仅支持纯整型数字形式,其他形式存在差异。且纯整型数字范围限制在bigint范围。 str入参整型数值超过正负81个9,返回值与MySQL有差异。 str入参当以科学计数法表示时,GaussDB末尾0值会显示,MySQL不显示,以科学计数法打印,此为固有差异。 QUOTE() 支持,存在差异 已知str字符串中含有“\Z”,“\r”,“\%”,“\_”,GaussDB未进行转义,与MySQL存在差异。斜线后跟部分数字也会引起差异,如“\563”。由转义字符引起的本函数与MySQL的差异,此为GaussDB与MySQL的转义字符差异。 str字符串中的“\b”,输出结果表现形式与MySQL有差异。此为GaussDB与MySQL的固有差异 str字符串中含有“\0”时,GaussDB由于UTF-8字符集不识别该字符,输入不成功。此为GaussDB与MySQL的固有差异 str为bit或bool类型时,由于GaussDB与MySQL此类型目前有差异,暂不支持此类类型。 GaussDB最大支持1GB数据传输,str入参长度最大支持536870908字节,函数返回结果字符串最大支持1GB。 str入参整型数值超过正负81个9,返回值与MySQL有差异。 str入参当以科学计数法表示时,GaussDB末尾0值会显示,MySQL不显示,以科学计数法打印,此为固有差异。 SPACE() 支持,存在差异 GaussDB入参最大支持1073741818字节,超出返回空字符串。MySQL的入参默认最大支持4194304字节,超出告警。 函数入参支持类型存在差异,GaussDB入参支持类型如下: 整数类型:tinyint、smallint、mediumint、int、bigint 无符号整数类型:tinyint unsigned、smallint unsigned、int unsigned 字符和文本类型:char、varchar、tinytext、text、mediumtext、longtext,仅支持纯数字整数字符串,且整数范围在bigint范围内。 浮点类型:float、real、double 定点类型:numeric、decimal、dec 布尔类型:bool SUBSTR() 支持 - SUBSTRING() 支持 - SUBSTRING_INDEX() 支持 - STRCMP() 支持,存在差异 函数入参支持类型存在差异,GaussDB入参支持类型如下: 字符类型:char、varchar、nvarchar2、text 二进制类型:bytea 数值类型:tinying [unsigned]、smallint [unsigned]、integer [unsigned]、bigint [unsigned]、float4、float8、numeric 日期时间类型:date、time without time zone、datetime、timestamptz 对于数值类型中的浮点类型,由于连接参数设置不同,精度可能与M有差异,不建议使用该场景,或使用NUMERIC类型代替。 SHA()/SHA1() 支持 - SHA2() 支持 - 父主题: 系统函数
  • JSON函数 JSON函数差异说明: 对于JSON函数和其他字符入参函数来说,如果含有转义字符的输入,默认情况下会与MySQL有一定差异,需要设置GUC参数set standard_conforming_strings= off;的情况下,对于转义字符的场景才会与MySQL兼容,但是会产生非标准字符输入的warning告警,在转义字符中\t、\u与转义数字与MySQL有差异。JSON_UNQUOTE()函数该场景下已做兼容,不设置GUC参数时,仍与MySQL兼容,且不会报警。 在处理超长数字(数字的字符长度超过64)时,GaussDB的JSON函数会将数字解析为一个double处理,并使用科学计数法计数。和MySQL的非JSON类型入参相同。但是在JSON类型入参时,由于JSON类型未完全与MySQL兼容,此场景下会产生差异。MySQL会完整显示数字(并且当数字长度超过82时,MySQL会给出错误的结果。),GaussDB依然将超长数字解析为一个double精度的值。考虑到超长数字内部都是使用浮点数进行储存,进行运算时无论GaussDB还是MySQL都会有精度丢失,建议您使用字符串来储存超长数字。 gaussdb=# SELECT json_insert('[1, 4, 99999999999999999999999999999999999999999999999999999999999999999999999999]','$[6]',json_insert('[1,4]','$[5]',99999999999999999999999999999999999999999999999999999999999999999999999999)); json_insert ------------------------------ [1, 4, 1e+74, [1, 4, 1e+74]] (1 row) 表1 JSON函数列表 MySQL数据库 GaussDB数据库 差异 JSON_APPEND() 支持 - JSON_ARRAY() 支持 - JSON_ARRAY_APPEND() 支持 - JSON_ARRAY_INSERT() 支持 - JSON_CONTAINS() 支持 - JSON_CONTAINS_PATH() 支持 - JSON_DEPTH() 支持 - JSON_EXTRACT() 支持 - JSON_INSERT() 支持 - JSON_KEYS() 支持 - JSON_LENGTH() 支持 - JSON_MERGE() 支持 - JSON_OBJECT() 支持 - JSON_QUOTE() 支持 - JSON_REMOVE() 支持 - JSON_REPLACE() 支持 - JSON_SEARCH() 支持,存在差异 返回值与MySQL有差异,GaussDB返回的是text,MySQL返回的是JSON。 JSON_SET() 支持 - JSON_TYPE() 支持 - JSON_UNQUOTE() 支持 - JSON_VALID() 支持 - 父主题: 系统函数
  • 数据保护技术 GaussDB通过多种数据保护手段和特性,保障存储在GaussDB中的数据安全可靠。 表1 多种数据保护手段 数据保护手段 简要说明 详细介绍 传输加密(HTTPS) 支持HTTP和HTTPS两种传输协议,为保证数据传输的安全性,推荐您使用更加安全的HTTPS协议。 构造请求 数据备份 支持设置数据库的备份和恢复,来保障数据的可靠性。 数据备份 敏感操作保护 控制台支持敏感操作保护,开启后执行删实例等敏感操作时,系统会进行身份验证,进一步保证GaussDB配置和数据的安全性。 敏感操作保护介绍 SSL 数据加密 可以使用SSL来加密数据库GaussDB和客户端的连接。SSL通过互相认证、使用数字签名确保完整性、使用加密确保私密性,以实现客户端和服务器之间的安全通讯。 SSL连接数据库 删除保护 GaussDB支持将删除的实例,加入回收站管理。通过数据库回收站中重建实例功能,可以恢复1~7天内删除的实例。 回收站 父主题: 安全
  • 隐式提交的语句 M-Compatibility使用GaussDB存储,继承GaussDB事务机制,事务中执行DDL、DCL不会自动提交。 MySQL在DDL、DCL、管理类语句,锁相关语句会自动提交。 -- M-Compatibility创建表和设置GUC参数可以回滚掉。 m_db=# DROP TABLE IF EXISTS test_table_rollback; m_db=# BEGIN; m_db=# CREATE TABLE test_table_rollback(a int, b int); m_db=# \d test_table_rollback; m_db=# ROLLBACK; m_db=# \d test_table_rollback; -- 不存在该表。
  • 嵌套事务 嵌套事务指在事务块中开启新事务。 M-Compatibility中,正常事务块中开启新事务会警告存在一个进行中的事务,忽略开启命令;异常事务块中开启新事物将报错,必须在执行ROLLBACK/COMMIT之后才可以执行,执行ROLLBACK/COMMIT会回滚之前语句。 MySQL中,正常事务块中开启新事务会先把之前事务提交,然后开启新事务;异常事务块中开启新事务会忽略错误,提交之前无错误的语句并开启新事务。 -- M-Compatibility正常事务块中,开启新事务会警告并忽略。 m_db=# DROP TABLE IF EXISTS test_t; m_db=# CREATE TABLE test_t(a int, b int); m_db=# BEGIN; m_db=# INSERT INTO test_t values(1, 2); m_db=# BEGIN; -- 会警告there is already a transaction in progress。 m_db=# SELECT * FROM test_t ORDER BY 1; m_db=# COMMIT; -- M-Compatibility异常事务块中,开启新事务会报错,必须ROLLBACK/COMMIT之后才可以执行。 m_db=# BEGIN; m_db=# ERROR sql; -- 错误语句。 m_db=# BEGIN; -- 报错。 m_db=# COMMIT; -- ROLLBACK/COMMIT之后才可以执行。
  • SET TRANSACTION差异 M-Compatibility中,SET TRANSACTION同时设置多次隔离级别/事务访问模式时,只有最后一个会生效;多个事务特性支持使用空格和逗号分隔。 MySQL中SET TRANSACTION不允许设置多次隔离级别/事务访问模式;多个事务特性只支持使用逗号分隔。 表1 SET TRANSACTION差异 语法 功能 差异 SET TRANSACTION 设置事务特性。 M-Compatibility中,SET TRANSACTION在会话级别生效;MySQL中SET TRANSACTION在下一个事务生效。 SET SESSION TRANSACTION 设置会话级事务特性。 - SET GLOBAL TRANSACTION 设置全局会话级事务特性,该特性适用于后续会话,对当前会话无影响。 M-Compatibility中,GLOBAL是全局会话级别生效,只针对当前数据库实例,其它数据库不影响。 MySQL中,会使所有数据库生效。 -- SET TRANSACTION会话级生效。 m_db=# SET TRANSACTION ISOLATION LEVEL READ COMMITTED READ WRITE; m_db=# SHOW transaction_isolation; m_db=# SHOW transaction_read_only; -- M-Compatibility同时设置多次隔离级别/事务访问模式,最后一个生效。 m_db=# SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED, ISOLATION LEVEL REPEATABLE READ, READ WRITE, READ ONLY; m_db=# SHOW transaction_isolation; -- repeatable read m_db=# SHOW transaction_read_only; -- on
共100000条