f63233b21fb02752212d167b009697d9b25f1065
gaussdb-guide.md
| ... | ... | @@ -1,123 +1,423 @@ |
| 1 | -# GaussDB 高斯数据库参考手册 |
|
| 2 | 1 | |
| 3 | -## 1. 使用 DBeaver 客户端连接 GaussDB 数据库 |
|
| 4 | 2 | |
| 5 | -以下是使用 DBeaver 客户端连接 GaussDB 数据库的详细步骤: |
|
| 3 | +# GaussDB 数据库参考手册 |
|
| 6 | 4 | |
| 7 | -### 1.1 获取驱动包 |
|
| 5 | +## 1. 产品概述 |
|
| 8 | 6 | |
| 9 | -- 根据 GaussDB 数据库的版本,下载对应版本的驱动包。 |
|
| 10 | -- 解压驱动包,找到 `gaussdbjdbc.jar` 文件。 |
|
| 7 | +GaussDB 是华为云推出的一款高性能、高可用、可扩展的云数据库产品,支持分布式和集中式两种部署模式。它适用于多种应用场景,包括企业级应用、数据分析和物联网等。 |
|
| 11 | 8 | |
| 12 | -### 1.2 安装 DBeaver 客户端 |
|
| 9 | +更多版本信息请参考:[GaussDB 文档中心](https://doc.hcs.huawei.com/db/zh-cn/gaussdb/24.7.30.10/productdesc/gaussdb_01_059.html) |
|
| 13 | 10 | |
| 14 | -- 访问 [DBeaver 官网](https://dbeaver.io/),下载适合您操作系统的安装包并完成安装。 |
|
| 11 | +**高斯数据库支持的版本**: |
|
| 15 | 12 | |
| 16 | -### 1.3 配置驱动 |
|
| 13 | +``` |
|
| 14 | +SELECT VERSION(); |
|
| 15 | +gaussdb (GaussDB Kernel 505.2.0 build 5a40f15c) compiled at 2024-09-20 00:15:19 commit 9967 last mr 19883 release |
|
| 16 | +``` |
|
| 17 | + |
|
| 18 | +**引擎版本**: v2.8.1-RELEASE |
|
| 19 | + |
|
| 20 | +引擎支持的高斯数据库默认是使用的 MySQL 兼容模式,所以应用程序的SQL语法和MySQL基本兼容. |
|
| 21 | + |
|
| 22 | +**IIDP目前支持高斯数据库的MySQL数据库兼容MySQL模式** |
|
| 23 | + |
|
| 24 | +```xml |
|
| 25 | +<dependency> |
|
| 26 | + <groupId>com.sie.meta</groupId> |
|
| 27 | + <artifactId>sie-snest-engine</artifactId> |
|
| 28 | + <version>v2.8.1-RELEASE</version> |
|
| 29 | +</dependency> |
|
| 30 | +``` |
|
| 17 | 31 | |
| 18 | -1. 打开 DBeaver,选择 **“数据库”** -> **“驱动管理器”**,点击 **“新建”**。 |
|
| 19 | -2. 在 **“设置”** 页签中: |
|
| 20 | - - 输入驱动名称(如 **“GaussDB”**)。 |
|
| 21 | - - 选择驱动类型为 **“Generic”**。 |
|
| 22 | - - 填写类名为 `com.huawei.gaussdb.jdbc.Driver`。 |
|
| 23 | - - URL 模板为空。 |
|
| 24 | - - 默认端口为 `8000`。 |
|
| 25 | -3. 在 **“库”** 页签中: |
|
| 26 | - - 点击 **“添加文件”**,选择 `gaussdbjdbc.jar` 文件。 |
|
| 27 | - - 点击 **“找到类”** 以识别驱动类。 |
|
| 28 | 32 | |
| 29 | - |
|
| 30 | 33 | |
| 34 | +**SqlProvider实现:** com.sie.snest.engine.db.relationdb.provider.GaussDBProvider |
|
| 31 | 35 | |
| 32 | - |
|
| 36 | +返回数据库类型DBType: GaussDB |
|
| 33 | 37 | |
| 34 | -### 1.4 创建数据库连接 |
|
| 38 | +```java |
|
| 39 | + com.sie.snest.engine.db.relationdb.provider.GaussDBProvider |
|
| 40 | + /** |
|
| 41 | + * return GaussDB |
|
| 42 | + */ |
|
| 43 | + @Override |
|
| 44 | + public String getDBType() { |
|
| 45 | + return DBType.GaussDB.getName(); |
|
| 46 | + } |
|
| 47 | +``` |
|
| 35 | 48 | |
| 36 | -1. 在 DBeaver 主界面,点击 **“新建数据库连接”**,选择刚才配置的 **“GaussDB”** 驱动,点击 **“下一步”**。 |
|
| 37 | -2. 输入数据库的主机 IP 地址、端口(通常是 `8000`)、数据库名、用户名和密码。 |
|
| 38 | -3. 点击 **“测试连接”**,若显示 **“已连接”**,则说明连接成功,点击 **“完成”**。 |
|
| 39 | 49 | |
| 40 | - |
|
| 41 | 50 | |
| 42 | -### 1.5 使用 DBeaver 操作数据库 |
|
| 43 | 51 | |
| 44 | -连接成功后,您可以在 DBeaver 中浏览数据库结构、执行 SQL 查询、导入导出数据等。如果在连接过程中遇到问题,可以参考 GaussDB 的官方文档或 DBeaver 的官方文档。 |
|
| 45 | 52 | |
| 46 | ---- |
|
| 53 | +## 2. 部署方案 |
|
| 47 | 54 | |
| 48 | -## 2. GaussDB Maven 驱动下载 |
|
| 55 | +- [分布式版部署方案](https://doc.hcs.huawei.com/db/zh-cn/gaussdb/24.7.30.10/productdesc/gaussdb_01_060.html) |
|
| 49 | 56 | |
| 50 | -### 2.1 GaussDB 驱动 |
|
| 57 | +- [集中式版部署方案](https://doc.hcs.huawei.com/db/zh-cn/gaussdb/24.7.30.10/productdesc/gaussdb_01_061.html) |
|
| 51 | 58 | |
| 52 | -下载地址: |
|
| 53 | -[http://192.168.168.156:8081/repository/maven-releases/com/huawei/gaussdb/gaussdbjdbc/5.0.0/gaussdbjdbc-5.0.0.jar](http://192.168.168.156:8081/repository/maven-releases/com/huawei/gaussdb/gaussdbjdbc/5.0.0/gaussdbjdbc-5.0.0.jar) |
|
| 59 | + |
|
| 54 | 60 | |
| 55 | -Maven 依赖配置: |
|
| 56 | -```xml |
|
| 57 | -<dependency> |
|
| 58 | - <groupId>com.huawei.gaussdb</groupId> |
|
| 59 | - <artifactId>gaussdbjdbc</artifactId> |
|
| 60 | - <version>5.0.0</version> |
|
| 61 | -</dependency> |
|
| 61 | +## 3. GaussDB 数据库兼容性说明 |
|
| 62 | + |
|
| 63 | +GaussDB 支持多种兼容性模式,具体如下: |
|
| 64 | + |
|
| 65 | +- **集中式部署**: |
|
| 66 | + - `A`:兼容 Oracle。 |
|
| 67 | + - `B`:兼容 MySQL。 |
|
| 68 | + - `PG`:兼容 PostgreSQL。 |
|
| 69 | +- **分布式部署**: |
|
| 70 | + - `ORA`:兼容 Oracle。 |
|
| 71 | + - `MYSQL`:兼容 MySQL。 |
|
| 72 | + - `PG`:兼容 PostgreSQL。 |
|
| 73 | + |
|
| 74 | +执行以下 SQL 命令,可以查看所有数据库的兼容性模式: |
|
| 75 | + |
|
| 76 | +```sql |
|
| 77 | +SELECT datname, datcompatibility FROM pg_database; |
|
| 78 | + |
|
| 79 | +datname |datcompatibility| |
|
| 80 | +-----------+----------------+ |
|
| 81 | +templatea |ORA | |
|
| 82 | +snest_test3|MySQL | |
|
| 83 | +test |MYSQL | |
|
| 84 | +template1 |MYSQL | |
|
| 85 | +template0 |MYSQL | |
|
| 86 | +templatem |M | |
|
| 87 | +postgres |MYSQL | |
|
| 88 | +tpcc |MYSQL | |
|
| 62 | 89 | ``` |
| 63 | 90 | |
| 64 | -### 2.2 dbcp.properties 示例 |
|
| 91 | +### 1. MySQL 兼容模式 |
|
| 65 | 92 | |
| 66 | -```yaml |
|
| 67 | -######## DBCP ########## |
|
| 68 | -######## GaussDB######## |
|
| 69 | -driverClassName=com.huawei.gaussdb.jdbc.Driver |
|
| 70 | -url=jdbc:gaussdb://ip:8000,ip:8000,ip:8000/tpcc?currentSchema=snest_changwen&autoBalance=true&refreshCNIpListTime=3&prepareThreshold=1&batchMode=on&fetchsize=10&loggerLevel=OFF |
|
| 71 | -username=*** |
|
| 72 | -password=*** |
|
| 73 | -validationQuery=SELECT 1 |
|
| 74 | -gaussdbDeployment=Distributed |
|
| 93 | +**IIDP只支持高斯数据库的MySQL数据库兼容MySQL模式** |
|
| 75 | 94 | |
| 76 | -initialSize=5 |
|
| 77 | -maxActive=2000 |
|
| 78 | -minIdle=5 |
|
| 79 | -filters=stat |
|
| 80 | -maxWait=6000 |
|
| 81 | -timeBetweenEvictionRunsMillis=60000 |
|
| 82 | -minEvictableIdleTimeMillis=1800000 |
|
| 83 | -testOnBorrow=false |
|
| 84 | -testOnReturn=false |
|
| 85 | -testWhileIdle=true |
|
| 86 | -poolPreparedStatements: true |
|
| 87 | -maxOpenPreparedStatements: 20 |
|
| 88 | -connectionProperties:druid.stat.sql.MaxSize=100; |
|
| 89 | -keepAlive=true |
|
| 95 | +GaussDB 提供了对 MySQL 5.7 的兼容模式,通过设置特定的参数,可以实现与 MySQL 5.7 数据库的高度兼容。以下是具体的兼容性说明: |
|
| 96 | + |
|
| 97 | +由于GaussDB数据库与MySQL数据库底层框架实现存在差异,GaussDB数据库与MySQL数据库仍存在部分差异。 |
|
| 98 | + |
|
| 99 | +分布式版MySQL兼容性说明 |
|
| 100 | + |
|
| 101 | +- **[概述](https://doc.hcs.huawei.com/db/zh-cn/gaussdb/24.7.30.10/compatibility-description/gaussdb-20-0031.html)** |
|
| 102 | +- **[MySQL数据库兼容MySQL模式](https://doc.hcs.huawei.com/db/zh-cn/gaussdb/24.7.30.10/compatibility-description/gaussdb-20-0001.html)** |
|
| 103 | +- **[MySQL数据库兼容性M-Compatibility模式](https://doc.hcs.huawei.com/db/zh-cn/gaussdb/24.7.30.10/compatibility-description/gaussdb-20-0032.html)** |
|
| 104 | + |
|
| 105 | +**参考文档:** https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/24.7.30.10/compatibility-description/gaussdb-20-0002.html |
|
| 106 | + |
|
| 107 | + |
|
| 108 | + |
|
| 109 | +#### 1.1 参数设置 |
|
| 110 | + |
|
| 111 | +为了启用 MySQL 兼容模式,需要在 GaussDB 数据库中设置以下参数: |
|
| 112 | + |
|
| 113 | +- **`sql_compatibility`**:设置为 `'MYSQL'`,以启用 MySQL 兼容模式。 |
|
| 114 | + |
|
| 115 | +- **`b_format_version`**:设置为 `'5.7'`,以指定 MySQL 的版本兼容性。 |
|
| 116 | + |
|
| 117 | +- **`b_format_dev_version`**:设置为 `'s1'`,以指定开发版本的兼容性。 |
|
| 118 | + |
|
| 119 | + ``` |
|
| 120 | + SHOW enable_gtm_free; |
|
| 121 | + SHOW gtm_option; |
|
| 122 | + show b_format_version; |
|
| 123 | + show b_format_dev_version; |
|
| 124 | + ``` |
|
| 125 | + |
|
| 126 | +#### 1.2 数据类型兼容性 |
|
| 127 | + |
|
| 128 | +- GaussDB 支持 MySQL 5.7 中定义的大多数数据类型,包括但不限于: |
|
| 129 | + - **数值类型**:`TINYINT`、`SMALLINT`、`MEDIUMINT`、`INT`、`BIGINT`、`DECIMAL`、`FLOAT`、`DOUBLE` 等。 |
|
| 130 | + - **字符串类型**:`CHAR`、`VARCHAR`、`TEXT`、`BLOB` 等。 |
|
| 131 | + - **日期和时间类型**:`DATE`、`TIME`、`DATETIME`、`TIMESTAMP` 等。 |
|
| 132 | +- 在某些情况下,GaussDB 可能对某些数据类型的行为或限制进行了优化或调整,以适应其自身的架构和性能要求。 |
|
| 133 | + |
|
| 134 | +#### 1.3 SQL 功能兼容性 |
|
| 135 | + |
|
| 136 | +- **SQL 语法**:GaussDB 支持 MySQL 5.7 的大多数 SQL 语法,包括: |
|
| 137 | + - 数据定义语言(DDL):如 `CREATE TABLE`、`ALTER TABLE`、`DROP TABLE` 等。 |
|
| 138 | + - 数据操纵语言(DML):如 `INSERT`、`UPDATE`、`DELETE`、`SELECT` 等。 |
|
| 139 | + - 数据控制语言(DCL):如 `GRANT`、`REVOKE` 等。 |
|
| 140 | +- **存储过程和函数**:支持 MySQL 5.7 的存储过程和函数语法,用户可以创建和使用存储过程来实现复杂的业务逻辑。 |
|
| 141 | +- **视图和索引**:支持视图和索引的创建和使用,用户可以通过视图简化复杂的查询操作,并利用索引提高查询性能。 |
|
| 142 | +- **事务支持**:支持事务操作,确保数据的一致性和完整性。 |
|
| 143 | + |
|
| 144 | +#### 1.4 数据库对象兼容性 |
|
| 145 | + |
|
| 146 | +- **表和表空间**:支持 MySQL 5.7 中的表和表空间概念,用户可以创建、修改和删除表,以及管理表空间。 |
|
| 147 | +- **用户和权限管理**:支持 MySQL 5.7 的用户和权限管理机制,用户可以创建和管理用户账户,并授予或撤销用户权限。 |
|
| 148 | +- **字符集和校对规则**:支持 MySQL 5.7 的字符集和校对规则,用户可以根据需要选择合适的字符集和校对规则。 |
|
| 149 | + |
|
| 150 | +#### 1.5 特殊兼容性说明 |
|
| 151 | + |
|
| 152 | +- **语法差异**:尽管 GaussDB 努力实现与 MySQL 5.7 的高度兼容,但在某些复杂的 SQL 语法或特定功能上可能存在差异。例如,某些特定的 MySQL 函数或存储过程可能在 GaussDB 中表现略有不同。 |
|
| 153 | +- **性能优化**:GaussDB 在某些场景下可能需要额外的性能优化配置,以充分发挥其性能优势。 |
|
| 154 | +- **功能限制**:某些 MySQL 特性可能在 GaussDB 中不完全支持,或者需要通过其他方式实现。 |
|
| 155 | + |
|
| 156 | +### 2. **其他兼容模式** |
|
| 157 | + |
|
| 158 | +GaussDB 还支持其他数据库的兼容模式,例如 Oracle、PostgreSQL 和 Teradata 等。以下是简要说明: |
|
| 159 | + |
|
| 160 | +#### 2.1 Oracle 兼容模式 |
|
| 161 | + |
|
| 162 | +- **参数设置**:使用参数 `c='A'` 或 `dbcompatibility='ORA'` 创建兼容 Oracle 的数据库。 |
|
| 163 | +- **功能支持**:支持 Oracle 的数据类型、SQL 语法、系统函数、日期时间类型等。 |
|
| 164 | + |
|
| 165 | +#### 2.2 PostgreSQL 兼容模式 |
|
| 166 | + |
|
| 167 | +- **参数设置**:使用参数 `dbcompatibility='PG'` 创建兼容 PostgreSQL 的数据库。 |
|
| 168 | +- **功能支持**:支持 PostgreSQL 的数据类型、SQL 语法和对象定义。 |
|
| 169 | + |
|
| 170 | +更多详细信息和完整兼容性说明,请参考 GaussDB 官方文档: |
|
| 171 | + |
|
| 172 | +- [GaussDB 文档中心 - MySQL 兼容性概述](https://doc.hcs.huawei.com/db/zh-cn/gaussdb/24.7.30.10/compatibility-description/gaussdb-20-0002.html) |
|
| 173 | + |
|
| 174 | + |
|
| 175 | + |
|
| 176 | +## 4. 高斯数据库不兼容项 |
|
| 177 | + |
|
| 178 | +### 1. 不支持唯一索引,不支持复合唯一索引 |
|
| 179 | + |
|
| 180 | +在华为GaussDB中,当出现“Cannot create index whose evaluation cannot be enforced to remote nodes”错误时,通常是因为在分布式数据库系统中创建索引时,没有包含分布列(即决定数据如何在各个节点间分布的列)。 **之前的MySQL唯一索引就失效了**. |
|
| 181 | + |
|
| 182 | +主键约束的本质就是一个非空约束加一个唯一约束,重点关注这个唯一约束(通过一个唯一索引实现)。 |
|
| 183 | + |
|
| 184 | +对于hash分布表,分布列决定了这条数据将在CN(CoordinateNode协调节点)被hash分布到哪个DN(DataNode数据节点)上,所以唯一约束本质上是确保分布到这个DN的数据的唯一性。如果允许唯一约束不包含分布列,那么就会出现在不同DN上查询到相同唯一键的情况,这肯定不是期望内的。 |
|
| 185 | + |
|
| 186 | +对于复制表(replicated table), 由于每个数据在每个DN上都被存有一份,所以不存在这个问题。 |
|
| 187 | + |
|
| 188 | +所以出现这个报错的时候要么使主键的定义包含分布列,要么改用复制表,要么使用复合唯一索引,要么使用全局二级索引。 |
|
| 189 | + |
|
| 190 | + |
|
| 191 | + |
|
| 192 | +**不支持原因:** |
|
| 193 | + |
|
| 194 | +1. 使用唯一索引时: 唯一列必须包含分布式列,导致复合唯一索引失效了,因为必须带ID字段加唯一字段,就违背了复合唯一索引的定义. |
|
| 195 | + |
|
| 196 | +2. 使用全局二级索引:遇到下面3个错误: |
|
| 197 | + |
|
| 198 | + ```sql |
|
| 199 | + ERROR: INSERT/UPDATE/DELETE/MERGE contains multiple remote queries under GTM-free mode |
|
| 200 | + |
|
| 201 | + 解决方式:开启GTM-free 模式 |
|
| 202 | + ``` |
|
| 203 | + |
|
| 204 | + |
|
| 205 | + |
|
| 206 | + 解决完第一个错误后,然后又遇到下面的错误: |
|
| 207 | + |
|
| 208 | + ```sql |
|
| 209 | + INSERT ... SELECT ... WHERE NOT EXISTS 不支持, INSERT INTO IGNORE不支持, 改为INSERT INTO " + sql +" ON DUPLICATE KEY UPDATE NOTHING |
|
| 210 | + 解决方式:使用流算子或 Hint |
|
| 211 | + SET enable_stream_operator=on; |
|
| 212 | + 或者在 SQL 语句中添加 `/*+ multinode */` Hint: |
|
| 213 | + ``` |
|
| 214 | + |
|
| 215 | + |
|
| 216 | + |
|
| 217 | + 修复完上面的2个错误后,又遇到往数据库插入或更新数据时报错,提示分布键不能被更新,错误信息如下所示: |
|
| 218 | + |
|
| 219 | + ``` |
|
| 220 | + ERROR: Distributed key column can't be updated in current version |
|
| 221 | + ``` |
|
| 222 | + |
|
| 223 | +这个错误的意思是,如果列是分布式列,就不能更新该字段,这种就会导致应用程序更新失败.咨询了华为的同事.没有参数可以跳过. |
|
| 224 | + |
|
| 225 | +3. 因为引擎插入和更新的时候会做唯一校验,如果不支持唯一校验,不影响业务的插入和更新时的唯一校验. |
|
| 226 | + |
|
| 227 | + |
|
| 228 | + |
|
| 229 | +### 2. SELECT AS 别名问题,如果别名不带标识符``或者"",PostgreSQL/GaussDB会将别名转成小写 |
|
| 230 | + |
|
| 231 | +请注意,在 PostgreSQL/GaussDB 中,关键词和不被引号修饰的标识符是大小写不敏感的。因此,如果字段不带修饰符双引号,会转换成小写. |
|
| 232 | + |
|
| 233 | +如果自定义SQL列别名不带修饰符,这样就会导致代码获取displayName值为NULL, get("displayName")=NULL.就会导致数据库迁移的时候,不兼容. |
|
| 234 | + |
|
| 235 | +**正确的SQL写法,列别名如果是驼峰或者包含大小写的,一定要用 ``或者 ""引起来.** |
|
| 90 | 236 | |
| 91 | -######## OceanBase ######## |
|
| 92 | -# driverClassName=com.mysql.cj.jdbc.Driver |
|
| 93 | -# url=jdbc:mysql://ip:2881/snest_changwen?rewriteBatchedStatements=TRUE&allowMultiQueries=TRUE&useLocalSessionState=TRUE&useUnicode=TRUE&characterEncoding=utf-8&socketTimeout=10000&connectTimeout=30000&zeroDateTimeBehavior=convertToNull&allowPublicKeyRetrieval=true |
|
| 94 | -# username=*** |
|
| 95 | -# password=*** |
|
| 96 | - |
|
| 97 | -######## Oracle ######## |
|
| 98 | -# driverClassName=oracle.jdbc.OracleDriver |
|
| 99 | -# url=jdbc:oracle:thin:@ip:1521:ORCLCDB |
|
| 100 | -# username=C##*** |
|
| 101 | -# password=*** |
|
| 102 | -# validationQuery=SELECT 'x' FROM DUAL |
|
| 103 | - |
|
| 104 | -######## PostgreSQL ######## |
|
| 105 | -# driverClassName=org.postgresql.Driver |
|
| 106 | -# url=jdbc:postgresql://ip:5432/postgres?currentSchema=snest_changwen&encoding=UTF-8&timezone=UTC |
|
| 107 | -# username=*** |
|
| 108 | -# password=*** |
|
| 109 | -# validationQuery=SELECT 1 |
|
| 110 | 237 | ``` |
| 238 | +select display_name as displayName from meta_app; |
|
| 239 | + |
|
| 240 | +--MySQL |
|
| 241 | +displayName | |
|
| 242 | +-----------------+ |
|
| 243 | +基础模块 | |
|
| 244 | + |
|
| 245 | + |
|
| 246 | +--PostgreSQL/GaussDB |
|
| 247 | +displayname | |
|
| 248 | +-----------------+ |
|
| 249 | +基础模块 |
|
| 250 | + |
|
| 251 | + |
|
| 252 | +正确的SQL写法,列别名如果是驼峰或者包含大小写的 |
|
| 253 | +MYSQL: select display_name as `displayName` from meta_app; |
|
| 254 | +GAUSSDB select display_name as `displayName` from meta_app; |
|
| 255 | +PostgreSQL: select display_name as "displayName" from meta_app; |
|
| 256 | + |
|
| 257 | +项目自定义SQL错误的示范: |
|
| 258 | +SELECT param_name paramName, param_value paramValue FROM base_process_spec bps; |
|
| 259 | + |
|
| 260 | +标准的SQL语法: |
|
| 261 | +SELECT param_name "paramName", param_value `paramValue` FROM base_process_spec bps |
|
| 262 | +SELECT param_name "paramName", param_value "paramValue" FROM base_process_spec bps |
|
| 263 | +``` |
|
| 264 | + |
|
| 265 | + |
|
| 266 | + |
|
| 267 | +### 3. ERROR: INSERT/UPDATE/DELETE/MERGE contains multiple remote queries under GTM-free mode |
|
| 268 | + |
|
| 269 | +``` |
|
| 270 | +-数据源:main,执行SQL失败:INSERT INTO ui_file_seed (`bucket`, `path`, `file_archive_path`, `name`, `attachment_id` , `download_path`, `id`, `create_user`, `create_date`, `app_id` , `url`, `md5`) SELECT 'apps' , '/file/document/doc/定制权限-导入模板.xlsx' , 'BOOT-INF/classes/com/sie/app/tenant/file/document/doc/定制权限-导入模板.xlsx', '下载定制权限导入模板', '04pebasn0auvo' , '/apps/2025-03-20/619344493502774957.xlsx' , 'sie-snest-tenant.master.custom_permission_import_template', 'rbac_user_superuser' , '2025-03-20 17:40:54.917', '04peack6huebq' , '/fileSystem/apps/2025-03-20/619344493502774957.xlsx' , '38ea78b3e59ef8cfbfa77ada296a71a0' FROM dual WHERE NOT EXISTS ( SELECT 1 FROM ui_file_seed WHERE id = 'sie-snest-tenant.master.custom_permission_import_template' ),异常信息:[2.0.0.1:55959/192.168.96.11:8000] ERROR: INSERT/UPDATE/DELETE/MERGE contains multiple remote queries under GTM-free mode |
|
| 271 | + 建议:modify your SQL to generate light-proxy or fast-query-shipping plan |
|
| 272 | + |
|
| 273 | +``` |
|
| 274 | + |
|
| 275 | +**问题分析** |
|
| 276 | + |
|
| 277 | +- **GTM-free 模式**:在这种模式下,GaussDB 对分布式事务的管理方式有所限制,尤其是对涉及多个远程节点(如跨节点的子查询)的复杂查询支持较弱。 |
|
| 278 | +- **错误原因**:你的 SQL 语句中使用了 `INSERT ... SELECT ... WHERE NOT EXISTS`,这种结构会被解析为多个远程查询,导致 GTM-free 模式下无法执行。 |
|
| 279 | +- **参考**: https://support.huaweicloud.com/distributed-devg-v2-gaussdb/gaussdb-12-1095.html |
|
| 111 | 280 | |
| 112 | ---- |
|
| 281 | +解决方案 |
|
| 113 | 282 | |
| 114 | -## 3. GaussDB 环境配置示例 |
|
| 283 | +根据错误信息中的建议,你需要修改 SQL,使其生成 **light-proxy** 或 **fast-query-shipping** 计划。 |
|
| 115 | 284 | |
| 116 | -### 3.1 dbcp.properties 示例 |
|
| 117 | 285 | |
| 118 | -```properties |
|
| 119 | 286 | |
| 120 | -######## DBCP ########## |
|
| 287 | +### 4. INSERT ... SELECT ... WHERE NOT EXISTS 不支持, INSERT INTO IGNORE不支持, 改为INSERT INTO " + sql +" ON DUPLICATE KEY UPDATE NOTHING |
|
| 288 | + |
|
| 289 | +### 5. 不支持修改分布式列的字段,比如修改主键的长度. |
|
| 290 | + |
|
| 291 | +### 6. 事物回滚机制和MySQL不同,事物机制和PostgreSQL一致. |
|
| 292 | + |
|
| 293 | + |
|
| 294 | + |
|
| 295 | +## 4. 用户指南 |
|
| 296 | + |
|
| 297 | +数据库管理员应具备以下能力:拥有极强的数据库技术理解能力;能够安装数据库、执行相关操作并排除故障;能够进行云数据库GaussDB管理平台(TPOPS)的日常维护。 |
|
| 298 | + |
|
| 299 | +工程师应具备以下能力:了解数据库技术常识;能够执行数据库相关的操作并排除故障。 |
|
| 300 | + |
|
| 301 | +请参考:https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/24.7.30.10/usermanual/qlh_02_0001.html |
|
| 302 | + |
|
| 303 | + |
|
| 304 | + |
|
| 305 | +## 5. 数据库基本概念 |
|
| 306 | + |
|
| 307 | +**数据库(Database)** |
|
| 308 | + |
|
| 309 | +数据库是存储在一起的相关数据的集合,这些数据可以被访问,管理以及更新。 |
|
| 310 | + |
|
| 311 | +数据库用于管理各类数据对象,与其他数据库隔离。创建数据对象时可以指定对应的表空间,如果不指定相应的表空间,相关的对象会默认保存在PG_DEFAULT空间中。数据库管理的对象可分布在多个表空间上。 |
|
| 312 | + |
|
| 313 | +**数据块(Block)** |
|
| 314 | + |
|
| 315 | +数据块是数据库管理的基本单位,默认大小为8KB。 |
|
| 316 | + |
|
| 317 | +**行(Row)** |
|
| 318 | + |
|
| 319 | +一行(元组,或记录)是一组相关的数据,例如一条用户订阅的数据。 |
|
| 320 | + |
|
| 321 | +**列(Cloumn)** |
|
| 322 | + |
|
| 323 | +每一列被当作是一个字段。每个字段中的值代表一种类型的数据。例如,一个表可能有3个字段,姓名、城市和国家。这个表就会有3列,一列代表姓名,一列代表城市,一列代表国家。表中的每一行包含3个字段的内容,姓名字段包含姓名,城市字段包含城市,国家字段包含国家。 |
|
| 324 | + |
|
| 325 | +**表(Table)** |
|
| 326 | + |
|
| 327 | +表是由行与列组合成的,是数据库中用来存储数据的对象,是整个数据库系统的基础。 |
|
| 328 | + |
|
| 329 | +每张表只能属于一个数据库,也只能对应到一个表空间。每张表对应的数据文件必须在同一个表空间中。 |
|
| 330 | + |
|
| 331 | +**数据文件(Datafile Segment)** |
|
| 332 | + |
|
| 333 | +通常每张表只对应一个数据文件。如果某张表的数据大于1GB,则会分为多个数据文件存储。 |
|
| 334 | + |
|
| 335 | +**表空间(Tablespace)** |
|
| 336 | + |
|
| 337 | +在Gauss中,表空间是一个目录,在物理数据和逻辑数据间提供了抽象的一层,为所有的数据库对象分配存储空间,里面存储的是它所包含的数据库的各种物理文件。由于表空间是一个目录,仅是起到了物理隔离的作用,其管理功能依赖于文件系统。 |
|
| 338 | + |
|
| 339 | +表空间可以存在多个,创建好之后,创建数据库对象时可以指定该对象所属的表空间。 |
|
| 340 | + |
|
| 341 | +**模式(Schema)** |
|
| 342 | + |
|
| 343 | +**数据库对象集,包括逻辑结构,例如表、视图、序、存储过程、同义名、索引及数据库链接。** |
|
| 344 | + |
|
| 345 | +**事务(Transaction)** |
|
| 346 | + |
|
| 347 | +数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。在关系数据库中,一个事务可以是一条SQL语句,一组SQL语句或整个程序。 |
|
| 348 | + |
|
| 349 | +同时,事务也是恢复和并发控制的基本单位,必须具备ACID特性,即: |
|
| 350 | + |
|
| 351 | +- 原子性(Atomicity):一个事务是一个不可分割的工作单位,事务中包括的操作要么都做,要么都不做。 |
|
| 352 | +- 一致性(Consistency):事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。 |
|
| 353 | +- 隔离性(Isolation):一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。 |
|
| 354 | +- 持久性(Durability):持久性也称永久性(Permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。 |
|
| 355 | + |
|
| 356 | +请参考: https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/24.7.30.10/devg-dist/gaussdb-12-0002.html |
|
| 357 | + |
|
| 358 | + |
|
| 359 | + |
|
| 360 | +## 6. 分布式开发指南 |
|
| 361 | + |
|
| 362 | +请参考文档:https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/25.1.30/devg-dist/gaussdb-12-0078.html |
|
| 363 | + |
|
| 364 | +#### 6.1 数据库系统概述 |
|
| 365 | + |
|
| 366 | +- **[数据库逻辑结构图](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/25.1.30/devg-dist/gaussdb-12-0012.html)** |
|
| 367 | +- **[数据查询请求处理过程](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/25.1.30/devg-dist/gaussdb-12-0013.html)** |
|
| 368 | +- **[管理事务](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/25.1.30/devg-dist/gaussdb-12-0014.html)** |
|
| 369 | + |
|
| 370 | + |
|
| 371 | + |
|
| 372 | +#### 6.2 数据库安全 |
|
| 373 | + |
|
| 374 | +- **[用户及权限](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/25.1.30/devg-dist/gaussdb-12-0017.html)** |
|
| 375 | +- **[数据库审计](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/25.1.30/devg-dist/gaussdb-12-0026.html)** |
|
| 376 | + |
|
| 377 | + |
|
| 378 | + |
|
| 379 | +#### 6.3 操作数据库 |
|
| 380 | + |
|
| 381 | +本节描述使用数据库的基本操作。通过此节您可以完成创建数据库用户、创建数据库、创建表及向表中插入数据和查询表中数据等操作。 |
|
| 382 | + |
|
| 383 | +- **[创建数据库用户](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/25.1.30/devg-dist/gaussdb-12-0032.html)** |
|
| 384 | +- **[管理数据库](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/25.1.30/devg-dist/gaussdb-12-0033.html)** |
|
| 385 | +- **[管理表空间](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/25.1.30/devg-dist/gaussdb-12-0034.html)** |
|
| 386 | +- **[管理表](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/25.1.30/devg-dist/gaussdb-12-0035.html)** |
|
| 387 | +- **[查看系统表](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/25.1.30/devg-dist/gaussdb-12-0041.html)** |
|
| 388 | +- **[其他操作](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/25.1.30/devg-dist/gaussdb-12-0042.html)** |
|
| 389 | + |
|
| 390 | + |
|
| 391 | + |
|
| 392 | +#### 6.5 数据库设计规范 |
|
| 393 | + |
|
| 394 | +- **[基本规范](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/25.1.30/devg-dist/gaussdb-12-0052.html)** |
|
| 395 | +- **[部署规范](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/25.1.30/devg-dist/gaussdb-12-0053.html)** |
|
| 396 | +- **[数据库对象命名规范](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/25.1.30/devg-dist/gaussdb-12-0054.html)** |
|
| 397 | +- **[Database和Schema设计规范](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/25.1.30/devg-dist/gaussdb-12-0055.html)** |
|
| 398 | +- **[权限设计规范](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/25.1.30/devg-dist/gaussdb-12-0056.html)** |
|
| 399 | +- **[字符集设计规范](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/25.1.30/devg-dist/gaussdb-12-0057.html)** |
|
| 400 | +- **[表设计规范](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/25.1.30/devg-dist/gaussdb-12-0058.html)** |
|
| 401 | +- **[字段设计规范](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/25.1.30/devg-dist/gaussdb-12-0059.html)** |
|
| 402 | +- **[索引设计规范](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/25.1.30/devg-dist/gaussdb-12-0060.html)** |
|
| 403 | +- **[函数/存储过程设计规范](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/25.1.30/devg-dist/gaussdb-12-0061.html)** |
|
| 404 | +- **[约束设计](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/25.1.30/devg-dist/gaussdb-12-0062.html)** |
|
| 405 | +- **[视图和关联表设计](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/25.1.30/devg-dist/gaussdb-12-0063.html)** |
|
| 406 | + |
|
| 407 | + |
|
| 408 | + |
|
| 409 | +#### 6.6 应用程序开发教程 |
|
| 410 | + |
|
| 411 | +- **[GaussDB应用程序开发教程概述](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/25.1.30/devg-dist/gaussdb-12-0079.html)** |
|
| 412 | +- **[开发规范](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/25.1.30/devg-dist/gaussdb-12-0080.html)** |
|
| 413 | +- **[基于JDBC开发](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/25.1.30/devg-dist/gaussdb-12-0081.html)** |
|
| 414 | + |
|
| 415 | +**本地JDBC配置:** |
|
| 416 | + |
|
| 417 | +**1. dbcp.properties 示例:** |
|
| 418 | + |
|
| 419 | +``` |
|
| 420 | +########DBCP########## |
|
| 121 | 421 | initialSize=5 |
| 122 | 422 | maxActive=2000 |
| 123 | 423 | minIdle=5 |
| ... | ... | @@ -133,7 +433,8 @@ maxOpenPreparedStatements: 20 |
| 133 | 433 | connectionProperties:druid.stat.sql.MaxSize=100; |
| 134 | 434 | keepAlive=true |
| 135 | 435 | |
| 136 | -######## GaussDB ######## |
|
| 436 | + |
|
| 437 | +########gaussdb######## |
|
| 137 | 438 | driverClassName=com.huawei.gaussdb.jdbc.Driver |
| 138 | 439 | url=jdbc:gaussdb://127.0.0.1:8000,127.0.0.1:8000,127.0.0.1:8000/tpcc?currentSchema=snest_jichen&autoBalance=true&refreshCNIpListTime=3&prepareThreshold=1&batchMode=on&fetchsize=10&loggerLevel=OFF |
| 139 | 440 | username=****** |
| ... | ... | @@ -142,11 +443,122 @@ validationQuery=SELECT 1 |
| 142 | 443 | gaussdbDeployment=Distributed |
| 143 | 444 | ``` |
| 144 | 445 | |
| 446 | +**2. spring配置文件添加参数适配高斯自定义SQL列字段别名转换** |
|
| 145 | 447 | |
| 146 | -### 3.2 Spring 配置文件适配 |
|
| 448 | +正常不需要添加这个配置,除非项目特殊需要. |
|
| 147 | 449 | |
| 148 | -在 `application-dev.properties` 文件中添加以下参数,以适配 GaussDB 自定义 SQL 列字段别名转换: |
|
| 450 | +application-dev.properties添加: |
|
| 149 | 451 | |
| 150 | -```properties |
|
| 452 | +``` |
|
| 151 | 453 | orm.sql.wrap_camelcase_alias=true |
| 152 | 454 | ``` |
| 455 | + |
|
| 456 | + |
|
| 457 | + |
|
| 458 | + |
|
| 459 | + |
|
| 460 | +#### 6.7 SQL调优指南 |
|
| 461 | + |
|
| 462 | +SQL调优的唯一目的是“资源利用最大化”,即CPU、内存、磁盘I/O、网络IO四种资源利用最大化。所有调优手段都是围绕资源使用开展的。所谓资源利用最大化是指SQL语句尽量高效,节省资源开销,以最小的代价实现最大的效益。比如做典型点查询的时候,可以用seqscan+filter(即读取每一条元组和点查询条件进行匹配)实现,也可以通过indexscan实现,显然indexscan可以以更小的代价实现相同的效果。 |
|
| 463 | + |
|
| 464 | +- **[Query执行流程](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/25.1.30/devg-dist/gaussdb-12-0320.html)** |
|
| 465 | +- **[SQL执行计划介绍](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/25.1.30/devg-dist/gaussdb-12-0321.html)** |
|
| 466 | +- **[调优流程](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/25.1.30/devg-dist/gaussdb-12-0327.html)** |
|
| 467 | +- **[更新统计信息](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/25.1.30/devg-dist/gaussdb-12-0328.html)** |
|
| 468 | +- **[审视和修改表定义](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/25.1.30/devg-dist/gaussdb-12-0329.html)** |
|
| 469 | +- **[典型SQL调优点](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/25.1.30/devg-dist/gaussdb-12-0335.html)** |
|
| 470 | +- **[经验总结:SQL语句改写规则](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/25.1.30/devg-dist/gaussdb-12-0343.html)** |
|
| 471 | +- **[SQL调优关键参数调整](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/25.1.30/devg-dist/gaussdb-12-0344.html)** |
|
| 472 | +- **[使用Plan Hint进行调优](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/25.1.30/devg-dist/gaussdb-12-0345.html)** |
|
| 473 | +- **[检查隐式转换的性能问题](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/25.1.30/devg-dist/gaussdb-12-0377.html)** |
|
| 474 | +- **[使用向量化执行引擎进行调优](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/25.1.30/devg-dist/gaussdb-12-0378.html)** |
|
| 475 | +- **[使用SQL PATCH进行调优](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/25.1.30/devg-dist/gaussdb-12-0379.html)** |
|
| 476 | +- **[实际调优案例](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/25.1.30/devg-dist/gaussdb-12-0380.html)** |
|
| 477 | + |
|
| 478 | + |
|
| 479 | + |
|
| 480 | +#### 6.8 SQL参考 |
|
| 481 | + |
|
| 482 | +- **[GaussDB SQL](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/25.1.30/devg-dist/gaussdb-12-0394.html)** |
|
| 483 | +- **[关键字](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/25.1.30/devg-dist/gaussdb-12-0395.html)** |
|
| 484 | +- **[数据类型](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/25.1.30/devg-dist/gaussdb-12-0396.html)** |
|
| 485 | +- **[字符集与字符序](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/25.1.30/devg-dist/gaussdb-12-0420.html)** |
|
| 486 | +- **[常量与宏](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/25.1.30/devg-dist/gaussdb-12-0428.html)** |
|
| 487 | +- **[函数和操作符](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/25.1.30/devg-dist/gaussdb-12-0429.html)** |
|
| 488 | +- **[表达式](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/25.1.30/devg-dist/gaussdb-12-0505.html)** |
|
| 489 | +- **[伪列](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/25.1.30/devg-dist/gaussdb-12-0512.html)** |
|
| 490 | +- **[类型转换](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/25.1.30/devg-dist/gaussdb-12-0513.html)** |
|
| 491 | +- **[系统操作](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/25.1.30/devg-dist/gaussdb-12-0519.html)** |
|
| 492 | +- **[事务控制](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/25.1.30/devg-dist/gaussdb-12-0520.html)** |
|
| 493 | +- **[全文检索](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/25.1.30/devg-dist/gaussdb-12-0521.html)** |
|
| 494 | +- **[SQL语法](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/25.1.30/devg-dist/gaussdb-12-0556.html)** |
|
| 495 | +- **[附录](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/25.1.30/devg-dist/gaussdb-12-0791.html)** |
|
| 496 | + |
|
| 497 | + |
|
| 498 | + |
|
| 499 | +#### 6.9 最佳实践 |
|
| 500 | + |
|
| 501 | +- **[SQL查询最佳实践](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/25.1.30/devg-dist/gaussdb-12-0798.html)** |
|
| 502 | +- **[权限配置最佳实践](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/25.1.30/devg-dist/gaussdb-12-0799.html)** |
|
| 503 | +- **[数据倾斜查询最佳实践](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/25.1.30/devg-dist/gaussdb-12-0800.html)** |
|
| 504 | +- **[存储过程最佳实践](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/25.1.30/devg-dist/gaussdb-12-0835.html)** |
|
| 505 | + |
|
| 506 | + |
|
| 507 | + |
|
| 508 | +#### 6.10 工具指南 |
|
| 509 | + |
|
| 510 | +**分布式工具指南** |
|
| 511 | + |
|
| 512 | +1. **工具介绍**:GaussDB 提供了多种工具支持分布式开发,如 GaussDB 数据库管理工具、备份工具等。 |
|
| 513 | +2. **使用方法**:参考 [GaussDB 分布式工具指南](https://doc.hcs.huawei.com/db/zh-cn/gaussdb/24.7.30.10/toolguide/gaussdb_03_0100.html) 获取工具的使用方法和示例。 |
|
| 514 | + |
|
| 515 | +**集中式工具指南** |
|
| 516 | + |
|
| 517 | +1. **工具介绍**:GaussDB 提供了多种工具支持集中式开发,如 GaussDB 数据库管理工具、性能监控工具等。 |
|
| 518 | +2. **使用方法**:参考 [GaussDB 集中式工具指南](https://doc.hcs.huawei.com/db/zh-cn/gaussdb/24.7.30.10/toolguide/gaussdb_03_0200.html) 获取工具的使用方法和示例。 |
|
| 519 | + |
|
| 520 | + |
|
| 521 | + |
|
| 522 | +## 7. 特性描述 |
|
| 523 | + |
|
| 524 | +### 7.1 分布式特性描述 |
|
| 525 | + |
|
| 526 | +- **弹性扩展**:支持水平扩展,可根据业务需求动态调整实例数量。 |
|
| 527 | +- **高可用性**:支持多副本存储和自动故障切换,确保数据的高可用性。 |
|
| 528 | +- **高性能**:采用分布式架构,提供高性能处理能力。 |
|
| 529 | + |
|
| 530 | +### 7.2 集中式特性描述 |
|
| 531 | + |
|
| 532 | +- **性能优化**:针对集中式场景进行优化,提供高性能处理能力。 |
|
| 533 | +- **数据安全**:支持数据加密、访问控制等安全功能。 |
|
| 534 | +- **易用性**:提供简单的管理界面和操作方式。 |
|
| 535 | + |
|
| 536 | + |
|
| 537 | + |
|
| 538 | +## 8. 常见问题 |
|
| 539 | + |
|
| 540 | +### 8.1 性能问题 |
|
| 541 | + |
|
| 542 | +- **Q:如何优化 GaussDB 的性能?** |
|
| 543 | + - A:可以通过调整数据库参数、优化 SQL 查询、增加实例规格等方式提升性能。具体优化方法请参考 [性能优化指南](https://doc.hcs.huawei.com/db/zh-cn/gaussdb/24.7.30.10/bestpractice/gaussdb_04_0100.html)。 |
|
| 544 | + |
|
| 545 | +### 8.2 安全问题 |
|
| 546 | + |
|
| 547 | +- **Q:如何确保 GaussDB 的数据安全?** |
|
| 548 | + |
|
| 549 | + - A:可以通过设置访问控制、数据加密、备份与恢复等方式确保数据安全。具体安全措施请参考 [安全指南](https://doc.hcs.huawei.com/db/zh-cn/gaussdb/24.7.30.10/security/gaussdb_05_0100.html)。 |
|
| 550 | + |
|
| 551 | + |
|
| 552 | + |
|
| 553 | +## 9. 资源链接 |
|
| 554 | + |
|
| 555 | +- [官方文档中心](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/24.7.30.10/productdesc/qlh_03_0001.html) |
|
| 556 | + |
|
| 557 | +- [分布式版MySQL兼容性说明](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/24.7.30.10/compatibility-description/gaussdb_01_0003.html) |
|
| 558 | + |
|
| 559 | +- [SQL参考](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/24.7.30.10/devg-dist/gaussdb-12-0320.html) |
|
| 560 | + |
|
| 561 | +- [M-Compatibility数据库系统概述](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/24.7.30.10/m_comp_devg-dist/gaussdb-81-0001.html) |
|
| 562 | + |
|
| 563 | + |
|
| 564 | + |