PullRequest: 775 同步企业版修改

This commit is contained in:
obdev 2023-09-18 06:35:50 +00:00 committed by ob-robot
parent 83a63d2e80
commit d26134b9dc
28 changed files with 407 additions and 222 deletions

View File

@ -115,7 +115,7 @@ Canal Admin is used here.
minimum-idle: 1
canal:
adminUser: admin
adminPasswd: admin
adminPasswd: ******
```
To avoid connection failure caused by an incorrect password, we do not recommend that you change the password in the `adminPasswd` field during the first test.
@ -172,7 +172,7 @@ Canal Admin is used here.
Username for logon: `admin`
Password for logon: `123456`
Password for logon: `******`
### Deploy Canal Deployer
@ -347,7 +347,7 @@ You need to perform the following steps to manually deploy Canal Adapter:
canal.tcp.zookeeper.hosts:
canal.tcp.batch.size: 500
canal.tcp.username: tpch
canal.tcp.password: Dg0gIexJAV
canal.tcp.password: Dg0g*****
canalAdapters:
- instance: mariadb # canal instance Name or mq topic name
groups:
@ -360,7 +360,7 @@ You need to perform the following steps to manually deploy Canal Adapter:
jdbc.driverClassName: com.mysql.jdbc.Driver
jdbc.url: jdbc:mysql://127.0.0.1:2883/tpch?useUnicode=true
jdbc.username: tpch@obmysql#obdemo
jdbc.password: Dg0gIexJAV
jdbc.password: Dg0g*****
```
* Modify the RDB mapping file.

View File

@ -32,4 +32,8 @@ OceanBase 数据库具有以下特性:
* 兼容 MySQL 开源生态
与 MySQL 生态高度兼容,提供数据库全生命周期的工具产品,组件化架构全面开放生态,从开发调试到生产运维及数据传输全方位护航。
与 MySQL 生态高度兼容,提供数据库全生命周期的工具产品,组件化架构全面开放生态,从开发调试到生产运维及数据传输全方位护航。
* 国产化适配
支持全栈国产化解决方案。迄今已基于硬件整机中科可控 H620 系列、华为 TaiShan 200 系列、长城擎天 DF720 等整机,完成与海光 7185/7280、鲲鹏 920、飞腾 2000+ 等 CPU 的适配互认工作。同时OceanBase 数据库还支持麒麟 V4、V10 和 UOS V20 等国产操作系统,并与上层中间件东方通 TongWeb V7.0、金蝶 Apusic 应用服务器软件 V9.0 等完成适配互认工作。

View File

@ -54,7 +54,7 @@ Major SSTable 的微块会在合并过程中用编码方式进行格式转换,
日志流使用自研的 Paxos 协议将 Redo 日志在本服务器持久化,同时通过网络发送给日志流的从副本,从副本在完成各自持久化后应答主副本,主副本在确认有多数派副本都持久化成功后确认对应的 Redo 日志持久化成功。从副本利用 Redo 日志的内容实时回放,保证自己的状态与主副本一致。
日志流的主副本在被选举成为主后会获得租约Lease正常工作的主副本在租约有效期内会不停的通过选举协议延长租约。主副本只会在租约有效时执行主的工作,租约机制保证了数据库异常处理的能力。
日志流的主副本在被选举成为主后会获得租约Lease正常工作的主副本在租约有效期内会不停的通过选举协议延长租约。主副本只会在租约有效时执行主的工作,租约机制保证了数据库异常处理的能力。
复制层能够自动应对服务器故障,保障数据库服务的持续可用。如果出现少于半数的从副本所在服务器出现问题,因为还有多于半数的副本正常工作,数据库的服务不受影响。如果主副本所在服务器出现问题,其租约会得不到延续,待其租约失效后,其他从副本会通过选举协议选举出新的主副本并授予新的租约,之后即可恢复数据库的服务。

View File

@ -94,7 +94,7 @@ all-in-one package 提供了两种安装方式:
#### 安装后设置和验证
安装脚本会尝试自动设置好环境变量,对于特定的系统如果环境变量未生效,可以根据提示,执行设置环境变量的脚本,如果需要设置为每次登陆都生效,需要根据用户使用的 terminal 环境,写到对应的 profile 文件中,一般为 `~/.bash_profile`.
安装脚本会尝试自动设置好环境变量,对于特定的系统如果环境变量未生效,可以根据提示,执行设置环境变量的脚本,如果需要设置为每次登陆都生效,需要根据用户使用的 terminal 环境,写到对应的 profile 文件中,一般为 `~/.bash_profile`
```bash
@ -106,6 +106,11 @@ all-in-one package 提供了两种安装方式:
=====================================================================
```
<main id="notice" type='notice'>
<h4>注意</h4>
<p>安装完成后需执行 <code>source ~/.oceanbase-all-in-one/bin/env.sh</code> 否则直接执行 <code>which obd</code> 会失败</p>
</main>
执行 `which obd``which obclient` 检测是否安装成功,如果可以找到 oceanbase-all-in-one 下的 obd 和 obclient 路径,则表示安装成功。
```bash
@ -189,7 +194,7 @@ Copyright (c) 2000, 2022, OceanBase and/or its affiliates. All rights reserved.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
obclient>
obclient [(none)]>
```
您也可以通过参数控制部署的组件、组件的版本、配置以及部署的目录。更多关于 `obd demo` 命令的介绍,参见 [快速部署命令](https://www.oceanbase.com/docs/community-obd-cn-10000000000900365)。

View File

@ -32,7 +32,7 @@ obd test tpch obtest --tenant=test -s 1 --password='' --remote-tbl-dir=/tmp/tpch
## 手动体验 Operational OLAP
通过上一步的自动测试,我们已经获得了一个 TPCH 的测试环境下面让我们通过手动执行来看看OceanBaes 在 OLAP 方面的能力和特性。
通过上一步的自动测试,我们已经获得了一个 TPCH 的测试环境下面让我们通过手动执行来看看OceanBase 在 OLAP 方面的能力和特性。
我们先使用 OBClient 登录到数据库中,如果您没有安装 OBClient使用 MySQL 客户端也是可以的。
```test

View File

@ -10,15 +10,17 @@
1. 登录 OCP。
2. 在左侧导航栏单击 **OBProxy**
OCP 的部署和使用,参见 [OceanBase 云平台](https://www.oceanbase.com/docs/community-ocp-cn-10000000000866565)。
2. 在左侧导航栏单击 **OBProxy**
3. 在集群列表中选择需要操作的 OBProxy 集群,进入 OBPRoxy 集群总览页面。
4. 单击 **添加 OBProxy**
4. 单击 **添加 OBProxy**
![1](http://icms-x-dita.oss-cn-zhangjiakou.aliyuncs.com/xdita-output/zh-CN/task15904357/images/p352396.png?Expires=7258125491&OSSAccessKeyId=LTAIJfoPL6wmrirR&Signature=wMX8um4e3OTeBHz6rfVEyX7Jef4%3D)
5. 在弹出框中填写 **软件版本** **SQL 端口** **Exporter 端口** **机房** **机型** **机器选择方式** **主机** 等信息。
5. 在弹出框中填写 **软件版本**、**SQL 端口**、**Exporter 端口**、**机房**、**机型**、**机器选择方式**、**主机** 等信息。
![1](http://icms-x-dita.oss-cn-zhangjiakou.aliyuncs.com/xdita-output/zh-CN/task15904357/images/p273264.png?Expires=7258125491&OSSAccessKeyId=LTAIJfoPL6wmrirR&Signature=GLvWKJESP%2BnPIth9YwYdB1Xcfio%3D)
@ -31,7 +33,7 @@
| 软件版本 | 选择要安装的 OBProxy 版本。 |
| 选择 OBProxy 主机 | 选择部署 OBProxy 所使用的主机,包括该主机的 机房、机型(可选)、机器选择方式、主机 IP。 |
6. 单击 **确定**
6. 单击 **确定**
## 通过 OBD 添加 OBProxy

View File

@ -13,7 +13,7 @@
+------------+--------+------+-----------------------+-----------+-------------+-------------------+-------------------+-------+-------+
| 2147549229 | sys | root | XXX.XXX.XXX.XXX:48292 | oceanbase | 97 | 1 | MCS_ACTIVE_READER | 14531 | 14531 |
+------------+--------+------+-----------------------+-----------+-------------+-------------------+-------------------+-------+-------+
1 row in set (0.01 sec)
1 row in set
```
各字段含义如下表所示:
@ -50,14 +50,14 @@
```sql
obclient> SHOW PROXYNET CONNECTION\G
*************************** 1. row ***************************
thread_id: 0
thread_id: 0
connect_id: 1
socket_fd: 4
type: inner connected
src_ip: XXX.XXX.XXX.XXX
src_port: 43051
dst_ip: XXX.XXX.XXX.XXX
dst_port: 13203
socket_fd: 4
type: inner connected
src_ip: XXX.XXX.XXX.XXX
src_port: 43051
dst_ip: XXX.XXX.XXX.XXX
dst_port: 13203
virtual_ip: *Not IP address [0]*
virtual_port: 0
bind_style: any
@ -72,17 +72,17 @@
inactivity_timeout_in(sec): 28800
timeout_close_in(sec): 28791
last_error_no: 0
shutdown: 0
comments: not closed
shutdown: 0
comments: not closed
*************************** 2. row ***************************
thread_id: 0
thread_id: 0
connect_id: 3
socket_fd: 24
type: accepted
src_ip: XXX.XXX.XXX.XXX
src_port: 48292
dst_ip: XXX.XXX.XXX.XXX
dst_port: 13205
socket_fd: 24
type: accepted
src_ip: XXX.XXX.XXX.XXX
src_port: 48292
dst_ip: XXX.XXX.XXX.XXX
dst_port: 13205
virtual_ip: *Not IP address [0]*
virtual_port: 0
bind_style: any
@ -97,17 +97,17 @@
inactivity_timeout_in(sec): 30
timeout_close_in(sec): 29
last_error_no: 0
shutdown: 0
comments: not closed
shutdown: 0
comments: not closed
*************************** 3. row ***************************
thread_id: 0
thread_id: 0
connect_id: 4
socket_fd: 28
type: connected
src_ip: XXX.XXX.XXX.XXX
src_port: 43154
dst_ip: XXX.XXX.XXX.XXX
dst_port: 13203
socket_fd: 28
type: connected
src_ip: XXX.XXX.XXX.XXX
src_port: 43154
dst_ip: XXX.XXX.XXX.XXX
dst_port: 13203
virtual_ip: *Not IP address [0]*
virtual_port: 0
bind_style: any
@ -122,17 +122,17 @@
inactivity_timeout_in(sec): 28800
timeout_close_in(sec): 28788
last_error_no: 0
shutdown: 0
comments: not closed
shutdown: 0
comments: not closed
*************************** 4. row ***************************
thread_id: 1
thread_id: 1
connect_id: 5
socket_fd: 29
type: inner connected
src_ip: XXX.XXX.XXX.XXX
src_port: 43156
dst_ip: XXX.XXX.XXX.XXX
dst_port: 13203
socket_fd: 29
type: inner connected
src_ip: XXX.XXX.XXX.XXX
src_port: 43156
dst_ip: XXX.XXX.XXX.XXX
dst_port: 13203
virtual_ip: *Not IP address [0]*
virtual_port: 0
bind_style: any
@ -147,17 +147,17 @@
inactivity_timeout_in(sec): 28800
timeout_close_in(sec): 28791
last_error_no: 0
shutdown: 0
comments: not closed
shutdown: 0
comments: not closed
*************************** 5. row ***************************
thread_id: 3
thread_id: 3
connect_id: 2
socket_fd: 25
type: inner connected
src_ip: XXX.XXX.XXX.XXX
src_port: 43052
dst_ip: XXX.XXX.XXX.XXX
dst_port: 13203
socket_fd: 25
type: inner connected
src_ip: XXX.XXX.XXX.XXX
src_port: 43052
dst_ip: XXX.XXX.XXX.XXX
dst_port: 13203
virtual_ip: *Not IP address [0]*
virtual_port: 0
bind_style: any
@ -172,20 +172,20 @@
inactivity_timeout_in(sec): 28800
timeout_close_in(sec): 28799
last_error_no: 0
shutdown: 0
comments: not closed
5 rows in set (0.00 sec)
shutdown: 0
comments: not closed
5 rows in set
obclient> SHOW PROXYNET CONNECTION 0\G
*************************** 1. row ***************************
thread_id: 0
thread_id: 0
connect_id: 1
socket_fd: 4
type: inner connected
src_ip: XXX.XXX.XXX.XXX
src_port: 43051
dst_ip: XXX.XXX.XXX.XXX
dst_port: 13203
socket_fd: 4
type: inner connected
src_ip: XXX.XXX.XXX.XXX
src_port: 43051
dst_ip: XXX.XXX.XXX.XXX
dst_port: 13203
virtual_ip: *Not IP address [0]*
virtual_port: 0
bind_style: any
@ -200,17 +200,17 @@
inactivity_timeout_in(sec): 30
timeout_close_in(sec): 30
last_error_no: 0
shutdown: 0
comments: not closed
shutdown: 0
comments: not closed
*************************** 2. row ***************************
thread_id: 0
thread_id: 0
connect_id: 3
socket_fd: 24
type: accepted
src_ip: XXX.XXX.XXX.XXX
src_port: 48292
dst_ip: XXX.XXX.XXX.XXX
dst_port: 13205
socket_fd: 24
type: accepted
src_ip: XXX.XXX.XXX.XXX
src_port: 48292
dst_ip: XXX.XXX.XXX.XXX
dst_port: 13205
virtual_ip: *Not IP address [0]*
virtual_port: 0
bind_style: any
@ -225,17 +225,17 @@
inactivity_timeout_in(sec): 30
timeout_close_in(sec): 29
last_error_no: 0
shutdown: 0
comments: not closed
shutdown: 0
comments: not closed
*************************** 3. row ***************************
thread_id: 0
thread_id: 0
connect_id: 4
socket_fd: 28
type: connected
src_ip: XXX.XXX.XXX.XXX
src_port: 43154
dst_ip: XXX.XXX.XXX.XXX
dst_port: 13203
socket_fd: 28
type: connected
src_ip: XXX.XXX.XXX.XXX
src_port: 43154
dst_ip: XXX.XXX.XXX.XXX
dst_port: 13203
virtual_ip: *Not IP address [0]*
virtual_port: 0
bind_style: any
@ -250,20 +250,20 @@
inactivity_timeout_in(sec): 28800
timeout_close_in(sec): 28733
last_error_no: 0
shutdown: 0
comments: not closed
3 rows in set (0.01 sec)
shutdown: 0
comments: not closed
3 rows in set
obclient> SHOW PROXYNET CONNECTION 0 limit 2 offset 1\G
*************************** 1. row ***************************
thread_id: 0
thread_id: 0
connect_id: 3
socket_fd: 24
type: accepted
src_ip: XXX.XXX.XXX.XXX
src_port: 48292
dst_ip: XXX.XXX.XXX.XXX
dst_port: 13205
socket_fd: 24
type: accepted
src_ip: XXX.XXX.XXX.XXX
src_port: 48292
dst_ip: XXX.XXX.XXX.XXX
dst_port: 13205
virtual_ip: *Not IP address [0]*
virtual_port: 0
bind_style: any
@ -278,17 +278,17 @@
inactivity_timeout_in(sec): 30
timeout_close_in(sec): 29
last_error_no: 0
shutdown: 0
comments: not closed
shutdown: 0
comments: not closed
*************************** 2. row ***************************
thread_id: 0
thread_id: 0
connect_id: 4
socket_fd: 28
type: connected
src_ip: XXX.XXX.XXX.XXX
src_port: 43154
dst_ip: XXX.XXX.XXX.XXX
dst_port: 13203
socket_fd: 28
type: connected
src_ip: XXX.XXX.XXX.XXX
src_port: 43154
dst_ip: XXX.XXX.XXX.XXX
dst_port: 13203
virtual_ip: *Not IP address [0]*
virtual_port: 0
bind_style: any
@ -303,9 +303,9 @@
inactivity_timeout_in(sec): 28800
timeout_close_in(sec): 28703
last_error_no: 0
shutdown: 0
comments: not closed
2 rows in set (0.00 sec)
shutdown: 0
comments: not closed
2 rows in set
```
各字段含义如下表所示:

View File

@ -12,7 +12,7 @@ obclient> CREATE TENANT IF NOT EXISTS test_tenant charset='utf8mb4', replica_num
其中:
* 每个资源池仅能绑定给一个租户,并且在创建租户时,一个租户仅支持指定一个资源池。
* 每个资源池仅能绑定给一个租户,每个租户可以拥有多个资源池。但是,并且在创建租户时,一个租户仅支持指定一个资源池。
* 租户在 Zone 内被分配的所有资源总量为Unit 规格 \* Unit 数量。

View File

@ -17,10 +17,6 @@
* 并行合并:将数据划分到不同线程中并行做合并。
* 轮转合并:在合并时将正在进行合并的副本上的流量切换到其他未合并的副本上,待该副本合并完成后再将流量切回。
您可以对集群的每个 Zone 进行轮转合并,保证未合并的 Zone 可以完全无任何性能影响地对外提供服务。
更多合并相关的详细介绍信息,请参见 [合并](../../../../7.reference/1.oceanbase-database-concepts/9.storage-architecture-1/3.dump-and-merge-1/3.merge-2.md)。
合并相关的配置项及其说明请参见 [修改合并配置](../2.merge-management-1/7.modify-a-merge-configuration.md)。
@ -41,7 +37,7 @@
OceanBase 数据库不会实时将小部分数据刷盘,而是通过合并的方式集中对数据进行刷盘,因此可以采用压缩的方式来写入磁盘,此时磁盘的空间利用率得到提升。在压缩算法和压缩功能的选择上,您可以根据实际情况选择高压缩率但是耗费更多 CPU 的方式,也可以选择普通的压缩方式。
您可以通过参数 `default_compress_func` 来配置压缩方式,默认值为 `zstd_1.0`。其他可指定的值还有 `none`、`lz4_1.0`、`snappy_1.0`、`zlib_1.0` 和 `zstd_1.0`
您可以通过参数 `default_compress_func` 来配置压缩方式,默认值为 `zstd_1.3.8`。其他可指定的值还有 `none`、`lz4_1.0`、`snappy_1.0`、`zlib_1.0` 和 `zstd_1.0`
>**说明**
>

View File

@ -4,6 +4,30 @@
自动触发合并的条件是,当一个租户的 MemTable 的内存使用达到了 `freeze_trigger_percentage` 设置的阈值,且转储次数已达到了 `major_compact_trigger` 设置的上限时,此时不会进行转储,而是直接进行合并。
## 前提条件
触发合并前,需要确保全局合并开关已开启,全局合并开关由集群级配置项 `enable_major_freeze` 控制,默认值为 `True` ,表示开启合并开关。
如果当前集群未开启全局合并开关,请参考以下操作开启全局合并开关。
1. 使用 `root` 用户登录到数据库的 `sys` 租户。
2. 确认全局合并开关是否已开启。
```sql
obclient> SHOW PARAMETERS LIKE 'enable_major_freeze';
```
3. 如果显示未开启,执行以下语句,开启合并开关。
```sql
obclient> ALTER SYSTEM SET enable_major_freeze='True';
```
关于配置项 `enable_major_freeze` 的更多信息,请参见 [enable_major_freeze](../../../../7.reference/5.system-configuration-items/3.cluster-level-configuration-items-1/72.enable_major_freeze-1-2.md)。
## 自动合并的触发条件
开启全局合并开关后,自动触发合并的触发条件是,当一个租户的 MemTable 的内存使用达到了 `freeze_trigger_percentage` 设置的阈值,且转储次数已达到了 `major_compact_trigger` 设置的上限时,此时不会进行转储,而是直接进行合并。
更多`freeze_trigger_percentage` 、`major_compact_trigger` 等转储相关参数的说明及设置请参见 [修改转储配置](../1.dump-management-1/5.modify-dump-configuration.md)。
## 相关阅读
@ -12,4 +36,6 @@
* [手动触发合并](4.manually-trigger-a-merge-1.md)
* [手动控制合并](5.manual-control-merge.md)
* [查看合并过程](5.view-merge-process.md)

View File

@ -2,27 +2,31 @@
#docslug#/oceanbase-database/oceanbase-database/V4.0.0/manually-trigger-a-merge-1
合并也可以通过手动触发来完成。
## 通过 SQL 语句手动发起合并
## 前提条件
### 前提条件
触发合并前,需要确保全局合并开关已开启,全局合并开关由集群级配置项 `enable_major_freeze` 控制,默认值为 `True` ,表示开启合并开关。
执行手动合并前,请确认自动合并开关已关闭,关闭自动合并开关的操作如下:
如果当前集群未开启全局合并开关,请参考以下操作开启全局合并开关。
1. 使用 `root` 用户登录到数据库的 `sys` 租户。
2. 执行以下语句,关闭自动合并开关
2. 确认全局合并开关是否已开启
```sql
obclient> ALTER SYSTEM SET enable_major_freeze='False';
obclient> SHOW PARAMETERS LIKE 'enable_major_freeze';
```
配置项 `enable_major_freeze` 用于控制是否开启自动合并,默认值为 `True` ,表示开启自动合并。
3. 如果显示未开启,执行以下语句,开启合并开关。
```sql
obclient> ALTER SYSTEM SET enable_major_freeze='True';
```
关于配置项 `enable_major_freeze` 的更多信息,请参见 [enable_major_freeze](../../../../7.reference/5.system-configuration-items/3.cluster-level-configuration-items-1/72.enable_major_freeze-1-2.md)。
### 系统租户手动发起合并
## 系统租户手动发起合并
系统租户可以对所有租户或指定租户发起合并操作。
系统租户可以对本租户、所有租户或指定租户发起合并操作。
具体操作如下:
@ -36,57 +40,31 @@
obclient> ALTER SYSTEM MAJOR FREEZE TENANT [=] ALL | tenant_name [, tenant_name ...];
```
其中,`[=]` 表示等号(=)为可选。
示例如下:
* 对所有租户发起合并
* 系统租户对本租户发起合并
```sql
obclient> ALTER SYSTEM MAJOR FREEZE TENANT=ALL;
obclient> ALTER SYSTEM MAJOR FREEZE TENANT;
```
* 对指定租户发起合并
* 系统租户对所有租户发起合并
```sql
ALTER SYSTEM MAJOR FREEZE TENANT=ALL;
```
* 系统租户对指定租户发起合并
```sql
obclient> ALTER SYSTEM MAJOR FREEZE TENANT=tenant1,tenant2;
```
3. 执行以下语句,开始合并。
## 用户租户手动发起合并
SQL 语句如下:
```sql
obclient> ALTER SYSTEM START MERGE TENANT= ALL | tenant1tenant2;
```
开始所有租户或指定租户的合并,示例如下:
```sql
obclient> ALTER SYSTEM START MERGE TENANT=ALL;
obclient> ALTER SYSTEM START MERGE TENANT=tenant1tenant2;
```
开始合并后,如果您需要暂停合并,您可以执行以下语句暂停所有租户或指定租户的合并:
```sql
obclient> ALTER SYSTEM SUSPEND MERGE TENANT=ALL;
obclient> ALTER SYSTEM SUSPEND MERGE TENANT=tenant1tenant2;
```
暂停合并后,您也可以恢复合并,语句如下:
```sql
obclient> ALTER SYSTEM RESUME MERGE TENANT=ALL;
obclient> ALTER SYSTEM RESUME MERGE TENANT=tenant1tenant2;
```
### 普通租户手动发起合并
普通租户可以发起对本租户的合并操作。
#### 操作步骤
用户租户只能发起对本租户的合并操作。
1. 租户管理员登录数据库。
@ -98,28 +76,12 @@
obclient> ALTER SYSTEM MAJOR FREEZE;
```
3. 开始本租户的合并。
```sql
obclient> ALTER SYSTEM START MERGE;
```
开始合并后,如果您需要暂停本租户的合并,可以执行以下语句:
```sql
obclient> ALTER SYSTEM SUSPEND MERGE;
```
暂停合并后,也可以恢复合并,语句如下:
```sql
obclient> ALTER SYSTEM RESUME MERGE;
```
## 相关阅读
* [自动触发合并](2.automatic-merge-triggering-1.md)
* [定时触发合并](3.scheduled-trigger-merge.md)
* [手动控制合并](5.manual-control-merge.md)
* [查看合并过程](5.view-merge-process.md)

View File

@ -0,0 +1,103 @@
# 手动控制合并
通过 `MAJOR FREEZE` 命令触发合并后,系统会自动调度合并任务。不同于 OceanBase 数据库 V3.X.X 版本,在 OceanBase 数据库 V4.0.X 版本中,合并将采用统一合并策略来执行合并流程,即租户的所有 Zone 同时开始执行合并,且所有 Zone 均完成合并后,才表示该租户完成合并。
合并过程中,不再需要您手动控制各个 Zone 的合并顺序等事项也不存在轮转合并。如果在合并过程中出现错误可以参考本文手动控制合并。例如Checksum 校验出错,会使得该租户当前轮次的合并无法结束,您可以暂停当前合并(suspend merge), 待 Checksum 恢复正确以后(例如,人工介入修复),再清理 Checksum 错误的标记clear merge error, 然后继续执行当前轮次的合并 (resume merge)。
## 系统租户手动控制合并
合并开始后,系统租户可以控制所有租户或指定租户的合并操作。
具体操作如下:
1. 使用 `root` 用户登录到数据库的 `sys` 租户。
2. 根据业务实际情况,选择合适的命令控制合并。
* 暂停所有租户或指定租户的合并
开始合并后,如果需要暂停所有租户或指定租户的合并,可以执行以下语句。
语句如下:
```sql
obclient> ALTER SYSTEM SUSPEND MERGE TENANT [=] ALL;
obclient> ALTER SYSTEM SUSPEND MERGE TENANT [=] tenant1tenant2;
```
其中,`[=]` 表示等号(=)为可选; `tenant1`、`tenant2` 需要替换为实际的租户名。
* 恢复合并
暂停合并后,也可以恢复合并。
语句如下:
```sql
obclient> ALTER SYSTEM RESUME MERGE TENANT [=] ALL;
obclient> ALTER SYSTEM RESUME MERGE TENANT [=] tenant1tenant2;
```
其中,`[=]` 表示等号(=)为可选;`tenant1`、`tenant2` 需要替换为实际的租户名。
* 清理 Checksum 错误的标记
如果在合并过程中出现了 Checksum 校验错误,且人工介入修复后,可以清理掉该 Checksum 错误的标记,以恢复合并。
语句如下:
```sql
obclient> ALTER SYSTEM CLEAR MERGE ERROR TENANT [=] ALL;
obclient> ALTER SYSTEM CLEAR MERGE ERROR TENANT [=] tenant1tenant2;
```
其中,`[=]` 表示等号(=)为可选;`tenant1`、`tenant2` 需要替换为实际的租户名。
## 普通租户手动控制合并
合并开始后,用户租户只能控制本租户的合并操作。
1. 租户管理员登录数据库。
2. 根据业务实际情况,选择合适的命令控制合并。
* 暂停本租户的合并
开始合并后,如果需要暂停本租户的合并,可以执行以下语句。
```sql
obclient> ALTER SYSTEM SUSPEND MERGE;
```
* 恢复合并
暂停合并后,也可以恢复合并。
语句如下:
```sql
obclient> ALTER SYSTEM RESUME MERGE;
```
* 清理 Checksum 错误的标记
如果在合并过程中出现了 Checksum 校验错误,且人工介入修复后,可以清理掉该 Checksum 错误的标记,以恢复合并。
语句如下:
```sql
obclient> ALTER SYSTEM CLEAR MERGE ERROR;
```
## 相关阅读
* [自动触发合并](2.automatic-merge-triggering-1.md)
* [定时触发合并](3.scheduled-trigger-merge.md)
* [手动触发合并](4.manually-trigger-a-merge-1.md)
* [查看合并过程](5.view-merge-process.md)

View File

@ -2,11 +2,9 @@
#docslug#/oceanbase-database/oceanbase-database/V4.0.0/view-merge-process
发起合并后,您可以通过内部表来查看合并过程。
合并的过程可以通过内部表进行查看,通常合并的时间是取决于两次合并之间的数据变化量。两次合并之间的数据变化大,合并的时间会更长。同时,合并的线程数、合并时的集群压力以及是否轮转合并等都影响合并的时间长短。
合并的过程可以通过内部表进行查看,通常合并的时间是取决于两次合并之间的数据变化量。两次合并之间的数据变化大,合并的时间会更长。同时,合并的线程数、合并时的集群压力等都影响合并的时间长短。
## 通过视图查看合并过程
### 系统租户查看所有租户的合并过程
## 系统租户查看所有租户的合并过程
系统租户可以通过查询 `oceanbase.CDB_OB_ZONE_MAJOR_COMPACTION``oceanbase.CDB_OB_MAJOR_COMPACTION` 视图来观察所有租户的的合并信息。
@ -212,7 +210,7 @@
|IS_SUSPENDED|<ul><li>YES暂停合并 </li><li> NO 没有暂停合并</li></ul>|
|INFO|展示合并信息。|
### 用户租户查看本租户的合并过程
## 用户租户查看本租户的合并过程
用户租户可以通过查询 `DBA_OB_ZONE_MAJOR_COMPACTION``DBA_OB_MAJOR_COMPACTION` 来观察本租户的合并过程。

View File

@ -1,5 +1,4 @@
# 修改合并配置
#docslug#/oceanbase-database/oceanbase-database/V4.0.0/modify-a-merge-configuration
本节主要介绍合并相关的参数及参数的修改方法。
@ -7,9 +6,10 @@
合并相关参数说明如下表所示。
| 配置项 | 描述 | 默认值 | 取值范围 |
|-------------------------------|----------------------------------------------------------------------------------------------------------|-------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| major_freeze_duty_time | 集群级配置项,每天定时合并的时间。 | 02:00 | \[00:00,24:00\] |
| 配置项 | 描述 | 默认值 | 取值范围 |
|-------------------------------|-------------------------------------------------|-------|-------------------------------|
| enable_major_freeze | 集群级配置项,表示是否开启合并。 | True | <ul><li>True </li><li>False </li></ul> |
| major_freeze_duty_time | 租户级配置项,每天定时合并的时间。 | 02:00 | \[00:00,24:00\] |
| major_compact_trigger | 租户级配置项,转储多少次后触发合并。 | 0 | \[0,65535\] |
| default_progressive_merge_num | 租户级配置项,建表时默认的合并行为。 | 0 | \[0, +∞) </br>其中: <ul><li>0 :表示执行渐进合并,且渐进合并的次数为 100 </li><li>1表示强制执行全量合并不执行渐进合并</li> <li>大于 1 :表示发生 Schema 变更时按照指定轮次做渐进合并 </li></ul> |
| merger_check_interval | 租户级配置项,每个 Zone 的合并进度检查间隔。 | 10m | \[10s, 60m\] |
@ -36,4 +36,4 @@
```sql
obclient>SHOW PARAMETERS LIKE 'major_freeze_duty_time';
```
```

View File

@ -103,24 +103,30 @@
| ROW_CACHE_HIT | bigint(20) |行缓存命中次数 |
| BLOOM_FILTER_CACHE_HIT | bigint(20) |Bloom Filter 缓存命中次数 |
| BLOCK_CACHE_HIT | bigint(20) |块缓存命中次数 |
| BLOCK_INDEX_CACHE_HIT | bigint(20) |块索引缓存命中次数 |
| DISK_READS | bigint(20) |物理读次数 |
| RETRY_CNT | bigint(20) |重试次数 |
| TABLE_SCAN | tinyint(4) |判断该请求是否含全表扫描 |
| CONSISTENCY_LEVEL | bigint(20) |一致性级别 |
| MEMSTORE_READ_ROW_COUNT | bigint(20) | `MEMSTORE` 中读的行数 |
| SSSTORE_READ_ROW_COUNT | bigint(20) |`SSSTORE` 中读的行数 |
| DATA_BLOCK_READ_CNT | bigint(20) |访问的数据微块数量|
| DATA_BLOCK_CACHE_HIT | bigint(20) |命中数据微块cache数量|
| INDEX_BLOCK_READ_CNT | bigint(20) |访问的中间层微块数量|
| INDEX_BLOCK_CACHE_HIT | bigint(20) |命中中间层微块cache数量|
| BLOCKSCAN_BLOCK_CNT | bigint(20) |单边扫描的数据微块数量|
| BLOCKSCAN_ROW_CNT | bigint(20) |单边扫描的数据行数|
| PUSHDOWN_STORAGE_FILTER_ROW_CNT | bigint(20) |下压存储filter过滤后行数|
| REQUEST_MEMORY_USED | bigint(20) |该请求消耗的内存 |
| EXPECTED_WORKER_COUNT | bigint(20) |请求期望的工作线程数 |
| USED_WORKER_COUNT | bigint(20) |请求实际使用的工作线程数 |
| SCHED_INFO | varchar(16384) | 请求的调度信息 |
| FUSE_ROW_CACHE_HIT | bigint(20) |暂不支持该字段,字段默认为 `NULL` |
| PS_STMT_ID | bigint(20) |请求对应的 Prepare ID <ul><li> `-1`:表示 SQL 语句没有使用 PS 协议 </li> <li>`-1`:表示 SQL 语句使用了 PS 协议,表示 PS 协议对该语句返回的唯一标志 </li> </ul> |
| TRANSACTION_HASH | bigint(20) unsigned |请求对应的事务的 Hash 值 |
| REQUEST_TYPE | bigint(20) |请求对应的类型: <ul><li> 0表示非法 <li> 1表示是一个内部请求</li> <li> 2表示是一个本地请求例如Local 计划</li> <li> 3表示远程请求</li> <li> 4表示分布式请求 </li> <li> 5表示 SQL 的 Prepare 请求</li> <li> 6表示 SQL 得到 Execute Stmt 请求</li></ul> |
| PS_CLIENT_STMT_ID | bigint(20) | 请求对应的 Prepare ID <ul><li> `-1`:表示 SQL 语句没有使用 PS 协议 </li><li>`-1`:表示 SQL 语句使用了 PS 协议,为 PS 协议在客户端对该语句返回的唯一标志</li></ul>|
| PS_INNER_STMT_ID | bigint(20) | 请求对应的 Prepare ID <ul><li> `-1`:表示 SQL 语句没有使用 PS 协议 </li><li>> 非 `-1`:表示 SQL 语句使用了 PS 协议,为 PS 协议在内部对该语句返回的唯一标志</li></ul>|
| TX_ID | bigint(20) | 请求对应的事务 ID|
| SNAPSHOT_VERSION | bigint(20) | SQL语句使用的读快照版本|| REQUEST_TYPE | bigint(20) |请求对应的类型: <ul><li> 0表示非法 <li> 1表示是一个内部请求</li> <li> 2表示是一个本地请求例如Local 计划</li> <li> 3表示远程请求</li> <li> 4表示分布式请求 </li> <li> 5表示 SQL 的 Prepare 请求</li> <li> 6表示 SQL 得到 Execute Stmt 请求</li></ul> |
| IS_BATCHED_MULTI_STMT | tinyint(4) |是否进行 Batch Multi Stmt 的优化 |
| OB_TRACE_INFO | VARCHAR2(4096) |用户设置的 Trace 信息 |
| PLAN_HASH | bigint(20) unsigned |执行计划的 Hash 值 |
| LOCK_FOR_READ_TIME | bigint(20) |读取数据时等待锁的耗时,单位:微秒 |
| WAIT_TRX_MIGRATE_TIME | bigint(20) |写入数据时,等待事务因为内部合并机制而需要冻结,冻结过程中未完成的事务需要搬迁出来的耗时,单位:微秒 |
| PARAMS_VALUE | longtext | 参数值 |

View File

@ -57,16 +57,16 @@ OceanBase 数据库定义 `MAINTENANCE WINDOW` 为周一到周日有 7 个自动
CALL DBMS_SCHEDULER.SET_ATTRIBUTE('MONDAY_WINDOW', 'NEXT_DATE', '2022-09-12 20:00:00');
```
* 设置统计信息任务收集的时长:
* 设置再次发起统计信息收集任务的间隔时间:
```sql
DBMS_SCHEDULER.SET_ATTRIBUTE($window_name, 'DURATION', $duation_time);
```
示例:设置周一自动收集统计信息的持续时长为 6 小时。
示例:设置再次发起统计信息收集任务的间隔时间为 6 小时。
```sql
CALL DBMS_SCHEDULER.SET_ATTRIBUTE('MONDAY_WINDOW', 'NEXT_DATE', '2022-09-12 20:00:00');
CALL DBMS_SCHEDULER.SET_ATTRIBUTE('MONDAY_WINDOW', 'DURATION', '21600s');
```
## DML STATS

View File

@ -32,7 +32,6 @@ Hint 相关参数名称、语义和语法如下表所示。
| ORDERED | ORDERED | 设置按照 SQL 中的顺序进行联接。 |
| FULL | FULL(\[qb_name\] TBL_NAME) | 设置表访问路径为主表等价于 `INDEX(TBL_NAME PRIMARY)`。 |
| USE_PLAN_CACHE | USE_PLAN_CACHE(NONE\[DEFAULT\]) | 设置是否使用计划缓存: <ul><li> `NONE`:表示不使用计划缓存。</li> <li> `DEFAULT`:表示按照服务器本身的设置来决定是否使用计划缓存。</li></ul> |
| ACTIVATE_BURIED_POINT | ACTIVATE_BURIED_POINT(INTNUM, \[FIX_MOD \| BEFORE_MODE\], INTNUM, \[INTNUM \| -INTNUM\]) | 用于调试,触发内部设定的错误点。 |
| USE_MERGE | USE_MERGE(\[qb_name\] TBL_NAME_LIST) | 设置指定表在作为右表时使用 Merge Join。 |
| USE_HASH | USE_HASH(\[qb_name\] TBL_NAME_LIST) | 设置指定表在作为右表时使用 Hash Join。 |
| NO_USE_HASH | NO_USE_HASH(\[qb_name\] TBL_NAME_LIST) | 设置指定表在作为右表时不使用 Hash Join。 |

View File

@ -116,9 +116,9 @@ obd test tpch obperf --tenant=tpch_mysql -s 100 --remote-tbl-dir=/tmp/tpch100
alter system set enable_rebalance=False;
alter system set memory_chunk_cache_size=0;
alter system set cache_wash_threshold='30g';
alter system set ob_enable_batched_multi_statement=True tenant=<your tenant name>";
alter system set ob_enable_batched_multi_statement=True tenant=<your tenant name>;
alter system set _bloom_filter_ratio=10;
alter system set _rowsets_enabled=True tenant=<your tenant name>";
alter system set _rowsets_enabled=True tenant=<your tenant name>;
alter system set _parallel_server_sleep_time=10;
alter system set cpu_quota_concurrency=4;
alter system set syslog_io_bandwidth_limit='30m';

View File

@ -1,6 +1,6 @@
# 使用 LOAD 命令加载 CSV 数据文件到 OceanBase 数据库
OceanBase MySQL 的 `load data` 命令和 MySQL 的 `load data` 命令相同,不过需要将 `csv` 文件放到 OBServer 节点机器上。 OceanBase 数据库暂时不支持加载本地文件,该功能尚在研发中。
OceanBase MySQL 的 `load data` 命令和 MySQL 的 `load data` 命令相同不过需要将 `csv` 文件放到 OBServer 节点机器上。 OceanBase 数据库暂时不支持加载本地文件,该功能尚在研发中。
## LOAD 语法
@ -129,4 +129,4 @@ MySQL [test]>
>**说明**
>
>数据导入推荐直连 进行,如通过 OBProxy 可能由于分发机制导致找不到数据、文件等错误。
>数据导入推荐直连进行,如通过 OBProxy 代理可能由于分发机制导致找不到数据、文件等错误。

View File

@ -86,7 +86,7 @@ obclient> CREATE TENANT mysql_tenant RESOURCE_POOL_LIST =('resource_pool_1'), pr
ALTER TENANT mysql_tenant set locality = "F@z1, F@z2, LR@z3";
```
* 同一个 OBServer 不会有同一个日志流一个以上的副本。
* 每一个日志流在同一个 OBServer 中有且仅有一个副本。
* 对于一个日志流而言,其在一个 Zone 内最多存在一个 Paxos 副本,可以有若干个非 Paxos 副本。可以在 Locality 中指定非 Paxos 副本,如:

View File

@ -137,7 +137,7 @@ OceanBase 数据库 `EXPLAIN` 命令输出的第一部分是执行计划的树
​上述示例查询的计划展示树如下图所示。
![约束6](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/4663623461/p355614.jpg)
![约束6](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/observer/V4.0.0/sql-execution-plan-1.png)
OceanBase 数据库 `EXPLAIN` 命令输出的第二部分是各操作算子的详细信息,包括输出表达式、过滤条件、分区信息以及各算子的独有信息(包括排序键、联接键、下压条件等)。示例如下:

View File

@ -15,8 +15,8 @@
ALTER RESOURCE UNIT unit_name
MEMORY_SIZE [=] 'size_value',
MAX_CPU [=] cpu_num,
[MAX_IOPS [=] iops_num,]
[MIN_CPU [=] cpu_num,]
[MAX_IOPS [=] iops_num,]
[MIN_IOPS [=] iops_num,]
[LOG_DISK_SIZE [=] 'size_value'];
```
@ -30,12 +30,13 @@ MAX_CPU [=] cpu_num,
| 参数 | 描述 |
|-----------------|----------------------------------------------------------|
| MEMORY_SIZE | 指定内存容量,取值范围为 \[1, 512M\]。单位为字节。|
| MAX_CPU | 指定 CPU 的最多数量。 |
| MAX_IOPS | 指定 IOPS 的最多数量,取值范围为 \[1024,+∞)。 |
| MIN_CPU | 指定 CPU 的最少数量,取值范围为 \[1024,+∞)。 |
| MIN_IOPS | 指定 IOPS 的最少数量。 |
| LOG_DISK_SIZE | 指定租户的 Unit 日志盘的大小。默认值为内存规格值的 3 倍,最小值为 `2G`。取值范围为 \[2G, +∞)。|
| unit_name | 指定资源单元名称。|
| MEMORY_SIZE | 指定内存容量,最小为 `1G`。|
| MAX_CPU | 指定 CPU 的最多数量,最小值为 `1C`。 |
| MIN_CPU | 指定 CPU 的最少数量,为可选项。默认等于 MAX_CPU最小值为 `1C`。 |
| MAX_IOPS | 指定 IOPS 的最多数量,为可选项。最小值为 `1024`。 |
| MIN_IOPS | 指定 IOPS 的最少数量,为可选项。最小值为 `1024`。 |
| LOG_DISK_SIZE | 指定租户的 Unit 日志盘的大小,为可选项。默认值为内存规格值的 3 倍,最小值为 `2G`。|

View File

@ -16,8 +16,8 @@ Unit 规格指在单 Zone 的单 Server 的可分配资源总量,只有当租
CREATE RESOURCE UNIT unit_name
MEMORY_SIZE [=] 'size_value',
MAX_CPU [=] cpu_num,
[MAX_IOPS [=] iops_num,]
[MIN_CPU [=] cpu_num,]
[MAX_IOPS [=] iops_num,]
[MIN_IOPS [=] iops_num,]
[LOG_DISK_SIZE [=] 'size_value'];
```
@ -26,14 +26,15 @@ MAX_CPU [=] cpu_num,
## 参数解释
| **参数** | **描述** |
|-----------------|------------------------------|
| MEMORY_SIZE | 指定内存容量,取值范围为 \[1, 512M\]。单位为字节。|
| MAX_CPU | 指定 CPU 的最多数量。 |
| MAX_IOPS | 指定 IOPS 的最多数量,取值范围为 \[1024,+∞)。 |
| MIN_CPU | 指定 CPU 的最少数量,取值范围为 \[1024,+∞)。 |
| MIN_IOPS | 指定 IOPS 的最少数量。 |
| LOG_DISK_SIZE | 指定租户的 Unit 日志盘的大小。默认值为内存规格值的 3 倍,最小值为 `2G`。取值范围为 \[2G, +∞)。|
| 参数 | 描述 |
|-----------------|----------------------------------------------------------|
| unit_name | 指定资源单元名称。|
| MEMORY_SIZE | 指定内存容量,最小为 `1G`。|
| MAX_CPU | 指定 CPU 的最多数量,最小值为 `1C`。 |
| MIN_CPU | 指定 CPU 的最少数量,为可选项。默认等于 MAX_CPU最小值为 `1C`。 |
| MAX_IOPS | 指定 IOPS 的最多数量,为可选项。最小值为 `1024`。 |
| MIN_IOPS | 指定 IOPS 的最少数量,为可选项。最小值为 `1024`。 |
| LOG_DISK_SIZE | 指定租户的 Unit 日志盘的大小,为可选项。默认值为内存规格值的 3 倍,最小值为 `2G`。|

View File

@ -1,7 +1,7 @@
ob_query_timeout
=====================================
#docslug#/oceanbase-database/oceanbase-database/V4.0.0/ob_query_timeout-1-2-3
`ob_query_timeout` 用于设置对 SQL 语句进行 DML 操作的超时时间,单位是微秒。
`ob_query_timeout` 用于设置对 SQL 最大执行时间,单位是微秒。
| **属性** | **描述** |

View File

@ -232,7 +232,7 @@
| [data_storage_warning_tolerance_time](3.cluster-level-configuration-items-1/52.data_storage_warning_tolerance_time-1-2-3.md) | 用于控制数据盘状态设为 WARNING 状态的容忍时间。 |
| [dead_socket_detection_timeout](3.cluster-level-configuration-items-1/55.dead_socket_detection_timeout-1-2-3.md) | 用于设置检测失效 Socket 的时间间隔。 |
| [enable_sys_table_ddl](3.cluster-level-configuration-items-1/89.enable_sys_table_ddl-1.md) | 用于指定是否允许手动创建系统表。 |
| [internal_sql_execute_timeout](3.cluster-level-configuration-items-1/114.internal_sql_execute_timeout-1-2-3.md) | 用于设置系统内部 DML 请求的时间间隔。 |
| [internal_sql_execute_timeout](3.cluster-level-configuration-items-1/114.internal_sql_execute_timeout-1-2-3.md) | 用于设置系统内部 SQL 请求的时间间隔。 |
| [migration_disable_time](3.cluster-level-configuration-items-1/147.migration_disable_time-1-2-3.md) | 用于设置因磁盘满等原因导致某个节点数据迁入失败时的暂停迁入时长。 |
| [schema_history_expire_time](3.cluster-level-configuration-items-1/180.schema_history_expire_time-1-2-3.md) | 用于设置元数据历史数据过期时间。 |
| [datafile_size](3.cluster-level-configuration-items-1/54.datafile_size-1-2-3.md) | 用于设置数据文件的大小。一般不需要设置。 |

View File

@ -1,7 +1,7 @@
internal_sql_execute_timeout
=================================================
#docslug#/oceanbase-database/oceanbase-database/V4.0.0/internal_sql_execute_timeout-1-2-3
internal_sql_execute_timeout 用于设置系统内部 DML 请求的时间间隔。
internal_sql_execute_timeout 用于设置系统内部 SQL 请求的时间间隔。
| **属性** | **描述** |

View File

@ -44,6 +44,7 @@ ERROR 4626 (HY000) : resource pool 'pool1' has already been granted to a tenant
----------------------------
系统错误码取值范围及其说明如下表所示。
| 错误码范围 | 说明 |
|------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [0001 \~ 3999](../6.error-codes/2.0001-3999.md) | 兼容 MySQL 的错误信息。 <li>有关 MySQL 服务端错误码请参见<br> <https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference.html> <li>有关 MySQL 客户端错误码请参见<br> <https://dev.mysql.com/doc/mysql-errors/8.0/en/client-error-reference.html> |

81
zh-CN/8.tutorial-list.md Normal file
View File

@ -0,0 +1,81 @@
# 快速入门系列教程
您可以观看视频快速了解 OceanBase 数据库的安装部署和基本操作。
本教程主要介绍如何快速部署一套 OceanBase 数据库的测试体验环境,并提供了快速搭建应用以及 OceanBase 核心功能的快速体验指导。
本教程涵盖以下内容:
* 部署 OceanBase 数据库体验和测试环境
* [使用 OBD 快速部署 OceanBase 数据库](#使用-obd-快速部署-oceanbase-数据库)
* [使用 Docker 快速部署 OceanBase 数据库](#使用-docker-快速部署-oceanbase-数据库)
* [OceanBase 数据库的基本操作](#oceanbase-数据库的基本操作)
* 创建示例应用程序
* [创建 Python 应用程序](#创建-python-应用程序)
* [创建 C 应用程序](#创建-c-应用程序)
* [创建 Go 应用程序](#创建-go-应用程序)
* [创建 Java 应用程序](#创建-java-应用程序)
* 体验 OceanBase 数据库高级特性coming soon
* 在 OceanBase 数据库上进行 TPC-C 测试
* 体验 OceanBase 数据库热点行更新能力
* 体验 Operational OLAP
* 体验并行导入 & 数据压缩
* 体验多租户特性
* 体验 DDL
## 使用 OBD 快速部署 OceanBase 数据库
本视频介绍了使用 OBD 快速部署社区版 OceanBase 数据库。
<video src="https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/video/00%20%E4%BD%BF%E7%94%A8%20OBD%20%E9%83%A8%E7%BD%B2%20OceanBase%20%E6%95%B0%E6%8D%AE%E5%BA%93_01.mp4" controls="" width="811px" height="456.188px"></video>
## 使用 Docker 快速部署 OceanBase 数据库
本视频介绍了使用 Docker 快速部署社区版 OceanBase 数据库。
<video src="https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/video/01%20%E4%BD%BF%E7%94%A8%20Docker%20%E9%83%A8%E7%BD%B2%20OceanBase.mp4" controls="" width="811px" height="456.188px"></video>
## OceanBase 数据库的基本操作
本视频介绍了社区版 OceanBase 数据库的一些基本操作。
<video src="https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/video/02%20OceanBase%20%E5%9F%BA%E7%A1%80%E8%AF%AD%E6%B3%95.mp4" controls="" width="811px" height="456.188px"></video>
## 创建 Python 应用程序
本视频介绍如何通过 Python 驱动连接和使用 OceanBase 数据库。
<video src="https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/video/03%20%E5%88%9B%E5%BB%BA%20Python%20%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F.mp4" controls="" width="811px" height="456.188px"></video>
## 创建 C 应用程序
本视频介绍了如何通过 OceanBase Connector/C 驱动连接并使用 OceanBase 数据库。
<video src="https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/video/04%20%E5%88%9B%E5%BB%BA%20C%20%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F.mp4" controls="" width="811px" height="456.188px"></video>
## 创建 Go 应用程序
本视频介绍 Go 应用程序示例如何通过驱动 Go-SQL-Driver/MySQL 连接并使用 OceanBase 数据库。
<video src="https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/video/05%20%E5%88%9B%E5%BB%BA%20Go%20%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F.mp4" controls="" width="811px" height="456.188px"></video>
## 创建 Java 应用程序
本视频介绍了如何通过 MySQL Connector/J 连接并使用 OceanBase 数据库。
<video src="https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/video/06%20%E5%88%9B%E5%BB%BA%20Java%20%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F.mp4" controls="" width="811px" height="456.188px"></video>