Skip to content

Commit

Permalink
moc->moi
Browse files Browse the repository at this point in the history
yangj1211 committed Dec 11, 2024
1 parent 4b9dd58 commit cb50b70
Showing 78 changed files with 412 additions and 420 deletions.
4 changes: 2 additions & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
# 贡献指南

本文档将会指导您如何参与 MatrixOne Cloud 文档的建设。
本文档将会指导您如何参与 MatrixOne Intelligence 文档的建设。

## 贡献类型

我们鼓励您通过以下方式为 MatrixOne Cloud 文档做出贡献:
我们鼓励您通过以下方式为 MatrixOne Intelligence 文档做出贡献:

- 如果您发现文档中存在任何过时、模糊或者错误的地方,请[创建一个 Issue](https://github.com/matrixone-cloud/moc-docs/issues/new) 以告知我们。您还可以提出在浏览文档时遇到的有关网站本身的任何问题。
- 对于显而易见的问题,如拼写错误或链接失效,您可以直接[创建一个 Pull Request](https://github.com/matrixone-cloud/moc-docs/compare) 进行修复。
Original file line number Diff line number Diff line change
@@ -107,9 +107,9 @@

### 显式事务和隐式事务

- **显式事务**:一般来说,可以通过执行 BEGIN 语句显式启动事务。可以通过执行 COMMIT 或 ROLLBACK 显式结束事务。MatrixOne 的显示事务启动和执行方式略有不同,可以参见 [MatrixOne Cloud 的显式事务](matrixone-transaction-overview/explicit-transaction.md)
- **显式事务**:一般来说,可以通过执行 BEGIN 语句显式启动事务。可以通过执行 COMMIT 或 ROLLBACK 显式结束事务。MatrixOne 的显示事务启动和执行方式略有不同,可以参见 [MatrixOne Intelligence 的显式事务](matrixone-transaction-overview/explicit-transaction.md)

- **隐式事务**:即事务可以隐式开始和结束,无需使用 BEGIN TRANSACTION、COMMIT 或者 ROLLBACK 语句就可以开始和结束。隐式事务的行为方式与显式事务相同。但是,确定隐式事务何时开始的规则不同于确定显式事务何时开始的规则。MatrixOne 的隐式事务启动和执行方式略有不同,可以参见 [MatrixOne Cloud 的隐式事务](matrixone-transaction-overview/implicit-transaction.md)
- **隐式事务**:即事务可以隐式开始和结束,无需使用 BEGIN TRANSACTION、COMMIT 或者 ROLLBACK 语句就可以开始和结束。隐式事务的行为方式与显式事务相同。但是,确定隐式事务何时开始的规则不同于确定显式事务何时开始的规则。MatrixOne 的隐式事务启动和执行方式略有不同,可以参见 [MatrixOne Intelligence 的隐式事务](matrixone-transaction-overview/implicit-transaction.md)

### 乐观事务和悲观事务

@@ -128,9 +128,9 @@
- 悲观事务对于写操作较多的系统更加友好,从数据库层面避免了写写冲突。
- 悲观事务在并发较大的场景下,如果出现一个执行时间较长的事务,可能会导致系统阻塞并影响吞吐量。

MatrixOne Cloud 的乐观事务详情可以参见 [MatrixOne Cloud 的乐观事务](matrixone-transaction-overview/optimistic-transaction.md)
MatrixOne Intelligence 的乐观事务详情可以参见 [MatrixOne Intelligence 的乐观事务](matrixone-transaction-overview/optimistic-transaction.md)

MatrixOne Cloud 的悲观事务详情可以参见 [MatrixOne Cloud 的悲观事务](matrixone-transaction-overview/pessimistic-transaction.md)
MatrixOne Intelligence 的悲观事务详情可以参见 [MatrixOne Intelligence 的悲观事务](matrixone-transaction-overview/pessimistic-transaction.md)

## 事务隔离

@@ -155,11 +155,11 @@ ANSI/ISO SQL 定义的标准隔离级别共有四个:

- **读已提交**:读已提交(READ COMMITTED)级别中,基于锁机制并发控制的 DBMS 需要对选定对象的写锁一直保持到事务结束,但是读锁在 SELECT 操作完成后马上释放。和前一种隔离级别一样,也不要求“范围锁”。

- **可重复读**:在可重复读(REPEATABLE READS)隔离级别中,基于锁机制并发控制的 DBMS 需要对选定对象的读锁(read locks)和写锁(write locks)一直保持到事务结束,但不要求“范围锁”,因此可能会发生“幻读”。MatrixOne Cloud 实现了快照隔离(即 Snapshot Isolation),为了与 MySQL 隔离级别保持一致,MatrixOne Cloud 快照隔离又叫做可重复读(REPEATABLE READS)。
- **可重复读**:在可重复读(REPEATABLE READS)隔离级别中,基于锁机制并发控制的 DBMS 需要对选定对象的读锁(read locks)和写锁(write locks)一直保持到事务结束,但不要求“范围锁”,因此可能会发生“幻读”。MatrixOne Intelligence 实现了快照隔离(即 Snapshot Isolation),为了与 MySQL 隔离级别保持一致,MatrixOne Intelligence 快照隔离又叫做可重复读(REPEATABLE READS)。

- **可串行化**:可串行化(SERIALIZABLE)是最高的隔离级别。在基于锁机制并发控制的 DBMS 上,可串行化要求在选定对象上的读锁和写锁直到事务结束后才能释放。在 SELECT 的查询中使用一个“WHERE”子句来描述一个范围时应该获得一个“范围锁”(range-locks)。

通过比低一级的隔离级别要求更多的限制,高一级的级别提供更强的隔离性。标准允许事务运行在更强的事务隔离级别上。

!!! note
MatrixOne Cloud 的事务隔离与通用的隔离定义的隔离级别的划分略有不同,可以参见 [MatrixOne Cloud 的隔离级别](matrixone-transaction-overview/isolation-level.md)
MatrixOne Intelligence 的事务隔离与通用的隔离定义的隔离级别的划分略有不同,可以参见 [MatrixOne Intelligence 的隔离级别](matrixone-transaction-overview/isolation-level.md)
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# 显式事务

在 MatrixOne Cloud 的事务类别中,显式事务还遵循以下规则:
在 MatrixOne Intelligence 的事务类别中,显式事务还遵循以下规则:

## 显式事务规则

@@ -17,7 +17,7 @@
|显式事务与自动提交 |`AUTOCOMMIT=1` 时,MySQL 不会对事务进行任何更改,每个语句都会在一个新的自动提交事务中执行。|`AUTOCOMMIT=0` 时,每个语句都会在显式开启的事务中执行,直到显式提交或回滚事务。|
|显式事务与非自动提交 |`AUTOCOMMIT=1` 时,MySQL 会在每个语句执行后自动提交未提交的事务。|`AUTOCOMMIT=0` 时,每个语句都会在显式开启的事务中执行,直到显式提交或回滚事务。|

**MySQL 与 MatrixOne Cloud 显式事务行为示例**
**MySQL 与 MatrixOne Intelligence 显式事务行为示例**

```sql
mysql> CREATE TABLE Accounts (account_number INT PRIMARY KEY, balance DECIMAL(10, 2));
@@ -61,7 +61,7 @@ mysql> SELECT * FROM Accounts;

## 跨库事务行为示例

MatrixOne Cloud 支持跨库事务行为,这里将以一个简单的示例进行说明。
MatrixOne Intelligence 支持跨库事务行为,这里将以一个简单的示例进行说明。

首先,让我们创建两个数据库(db1 和 db2)以及它们各自的表(table1 和 table2):

Original file line number Diff line number Diff line change
@@ -21,7 +21,7 @@ insert into t1 values(123,'123');

## 提交事务

提交事务时,MatrixOne Cloud 接受 `COMMIT` 命令作为提交命令。代码示例如下:
提交事务时,MatrixOne Intelligence 接受 `COMMIT` 命令作为提交命令。代码示例如下:

```
START TRANSACTION;
@@ -31,7 +31,7 @@ commit;

## 回滚事务

回滚事务时,MatrixOne Cloud 接受 `ROLLBACK` 命令作为提交命令。代码示例如下:
回滚事务时,MatrixOne Intelligence 接受 `ROLLBACK` 命令作为提交命令。代码示例如下:

```
START TRANSACTION;
@@ -41,7 +41,7 @@ rollback;

## 自动提交

在 MatrixOne Cloud 中,有一个参数 `AUTOCOMMIT`,决定了没有 `START TRANSACTION``BEGIN` 的情况下,单条 SQL 语句的是否被当做独立事务自动提交。语法如下:
在 MatrixOne Intelligence 中,有一个参数 `AUTOCOMMIT`,决定了没有 `START TRANSACTION``BEGIN` 的情况下,单条 SQL 语句的是否被当做独立事务自动提交。语法如下:

```sql
-- 设置该参数的值
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
# 隐式事务

在 MatrixOne Cloud 的事务类别中,隐式事务还遵循以下规则:
在 MatrixOne Intelligence 的事务类别中,隐式事务还遵循以下规则:

## 隐式事务规则

- MatrixOne Cloud`AUTOCOMMIT` 发生变化时,对于隐式事务未提交的情况会进行错误处理,并向用户提示需要先提交变化。
- MatrixOne Intelligence`AUTOCOMMIT` 发生变化时,对于隐式事务未提交的情况会进行错误处理,并向用户提示需要先提交变化。

-`AUTOCOMMIT=0` 且当前存在活跃事务的情况下,禁止修改自动提交与隔离级别,以及管理类与参数设置命令,例如 `SET``CREATE USER/ROLE` 或授权操作也将被限制。

@@ -18,9 +18,9 @@

- 当存在未提交内容的隐式事务时,若启动一个显式事务,则会强制提交之前未提交的内容。

## MatrixOne Cloud 与 MySQL 隐式事务的区别
## MatrixOne Intelligence 与 MySQL 隐式事务的区别

在 MatrixOne Cloud 中,如果开启了隐式事务(`SET AUTOCOMMIT=0`),则所有操作都需要手动执行 `COMMIT``ROLLBACK` 来结束事务。相比之下,MySQL 在遇到 DDL 或类似 `SET` 语句时会自动提交。
在 MatrixOne Intelligence 中,如果开启了隐式事务(`SET AUTOCOMMIT=0`),则所有操作都需要手动执行 `COMMIT``ROLLBACK` 来结束事务。相比之下,MySQL 在遇到 DDL 或类似 `SET` 语句时会自动提交。

### MySQL 隐式事务行为

@@ -91,7 +91,7 @@ mysql> select @@SQL_SELECT_LIMIT;
1 row in set (0.00 sec)
```

**MatrixOne Cloud 隐式事务行为示例**
**MatrixOne Intelligence 隐式事务行为示例**

```sql
mysql> select @@SQL_SELECT_LIMIT;
Original file line number Diff line number Diff line change
@@ -2,7 +2,7 @@

## 读已提交

MatrixOne Cloud 默认**读已提交(Read Committed)**隔离级别,它的特点如下:
MatrixOne Intelligence 默认**读已提交(Read Committed)**隔离级别,它的特点如下:

- 在不同的事务之间,只能读到其他事务已经提交的数据,对于未提交的数据,无法查看。
- 读已提交的隔离级别,能够有效防止脏写和脏读,但是不能避免不可重复读与幻读。
@@ -17,7 +17,7 @@ MatrixOne Cloud 默认**读已提交(Read Committed)**隔离级别,它的

你可以参照下面的示例,来理解**读已提交**隔离级别。

首先在 MatrixOne Cloud 中,我们建立一个命名为 `test` 的数据库与表 `t1`,并插入数据:
首先在 MatrixOne Intelligence 中,我们建立一个命名为 `test` 的数据库与表 `t1`,并插入数据:

```sql
create database test;
@@ -112,7 +112,7 @@ SELECT * FROM t1;

## 快照隔离

在 MatrixOne Cloud 中,也支持快照隔离(Snapshot Isolation),为了与 MySQL 隔离级别保持一致,MatrixOne Cloud 快照隔离又叫做可重复读(REPEATABLE READS)。该级别的隔离实现原理如下:
在 MatrixOne Intelligence 中,也支持快照隔离(Snapshot Isolation),为了与 MySQL 隔离级别保持一致,MatrixOne Intelligence 快照隔离又叫做可重复读(REPEATABLE READS)。该级别的隔离实现原理如下:

### 快照隔离原理

@@ -124,7 +124,7 @@ SELECT * FROM t1;

你可以参照下面的示例,来帮助理解快照隔离。

首先在 MatrixOne Cloud 中,我们建立一个数据库 *test* 与表 *t1*
首先在 MatrixOne Intelligence 中,我们建立一个数据库 *test* 与表 *t1*

```
create database test;
Original file line number Diff line number Diff line change
@@ -12,13 +12,13 @@

## 乐观事务模型

MatrixOne Cloud 支持乐观事务模型。你在使用乐观并发读取一行时不会锁定该行。当你想要更新一行时,应用程序必须确定其他用户是否在读取该行后对该行上锁了。乐观并发事务通常用于数据争用较低的环境中。
MatrixOne Intelligence 支持乐观事务模型。你在使用乐观并发读取一行时不会锁定该行。当你想要更新一行时,应用程序必须确定其他用户是否在读取该行后对该行上锁了。乐观并发事务通常用于数据争用较低的环境中。

在乐观并发模型中,如果你从数据库接收到一个值后,另一个用户在你试图修改该值之前修改了该值,则产生报错。

### 模型示例

下面为乐观并发的示例,将为你展示 MatrixOne Cloud 如何解决并发冲突。
下面为乐观并发的示例,将为你展示 MatrixOne Intelligence 如何解决并发冲突。

1. 在下午 1:00,用户 1 从数据库中读取一行,其值如下:

Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
# MatrixOne Cloud 的事务概述
# MatrixOne Intelligence 的事务概述

## 什么是 MatrixOne Cloud 的事务?
## 什么是 MatrixOne Intelligence 的事务?

MatrixOne Cloud 事务遵循数据库事务的标准定义与基本特征 (ACID)。它旨在帮助用户在分布式数据库环境下,确保每一次数据库数据操作行为,都能够令结果保证数据的一致性和完整性,在并发请求下互相隔离不受干扰。
MatrixOne Intelligence 事务遵循数据库事务的标准定义与基本特征 (ACID)。它旨在帮助用户在分布式数据库环境下,确保每一次数据库数据操作行为,都能够令结果保证数据的一致性和完整性,在并发请求下互相隔离不受干扰。

## MatrixOne Cloud 的事务类型
## MatrixOne Intelligence 的事务类型

在 MatrixOne Cloud 中,事务与通用事务一样,也分为以下两大类:
在 MatrixOne Intelligence 中,事务与通用事务一样,也分为以下两大类:

- 按照是否有明确的起止分为显式事务和隐式事务。
- 按照对资源锁的使用阶段分为乐观事务和悲观事务。
@@ -15,35 +15,35 @@ MatrixOne Cloud 事务遵循数据库事务的标准定义与基本特征 (ACID)

## [显式事务](explicit-transaction.md)

在 MatrixOne Cloud 中,一个事务以 `START TRANSACTION` 显式声明,即成为一个显式事务。
在 MatrixOne Intelligence 中,一个事务以 `START TRANSACTION` 显式声明,即成为一个显式事务。

## [隐式事务](implicit-transaction.md)

在 MatrixOne Cloud 中,如果一个事务并没有通过 `START TRANSACTION``BEGIN` 来显式声明,那么为隐式事务。
在 MatrixOne Intelligence 中,如果一个事务并没有通过 `START TRANSACTION``BEGIN` 来显式声明,那么为隐式事务。

## [乐观事务](optimistic-transaction.md)

在乐观事务开始时,会假定事务相关的表处于一个不会发生写冲突的状态,把对数据的插入、修改或删除缓存在内存中,在这一阶段不会对数据加锁,而在数据提交时对相应的数据表或数据行上锁,在完成提交后解锁。

## [悲观事务](pessimistic-transaction.md)

MatrixOne Cloud 默认悲观事务。在悲观事务开始时,会假定事务相关的表处于一个会发生写冲突的状态,提前对相应的数据表或数据行上锁,完成上锁动作后,把对数据的插入、修改或删除缓存在内存中,在提交或回滚后,数据完成落盘并释放锁。
MatrixOne Intelligence 默认悲观事务。在悲观事务开始时,会假定事务相关的表处于一个会发生写冲突的状态,提前对相应的数据表或数据行上锁,完成上锁动作后,把对数据的插入、修改或删除缓存在内存中,在提交或回滚后,数据完成落盘并释放锁。

## MatrixOne Cloud 支持跨数据库事务
## MatrixOne Intelligence 支持跨数据库事务

MatrixOne Cloud 提供了支持跨数据库的事务功能,允许一个事务同时访问和修改多个不同的数据库。
MatrixOne Intelligence 提供了支持跨数据库的事务功能,允许一个事务同时访问和修改多个不同的数据库。

在实际应用中,某些业务需求可能需要涉及多个数据库的操作,而跨数据库事务的出现正是为了满足这种需求。这种功能确保了不同数据库之间的操作能够保持一致性和隔离性,就像在单个数据库内执行操作一样。这意味着当您需要在多个数据库之间执行一系列操作时,可以将它们包装在一个事务中,以便在保持数据完整性和一致性的同时完成这些操作。

跨数据库事务通常在复杂的企业应用场景中发挥关键作用。在这些场景中,不同的业务功能或部门可能使用不同的数据库,但它们需要协同工作以满足复杂的业务需求。MatrixOne Cloud 的支持跨数据库事务功能提高了系统的灵活性和可扩展性,但同时也需要谨慎的设计和管理,以确保数据得以保持完整性和一致性。
跨数据库事务通常在复杂的企业应用场景中发挥关键作用。在这些场景中,不同的业务功能或部门可能使用不同的数据库,但它们需要协同工作以满足复杂的业务需求。MatrixOne Intelligence 的支持跨数据库事务功能提高了系统的灵活性和可扩展性,但同时也需要谨慎的设计和管理,以确保数据得以保持完整性和一致性。

## MatrixOne Cloud 的事务隔离级别
## MatrixOne Intelligence 的事务隔离级别

MatrixOne Cloud 支持**读已提交(Read Committed)****快照隔离**两种隔离级别,默认隔离级别是**读已提交(Read Committed)**
MatrixOne Intelligence 支持**读已提交(Read Committed)****快照隔离**两种隔离级别,默认隔离级别是**读已提交(Read Committed)**

### 读已提交

读已提交(Read Committed)是 MatrixOne Cloud 的默认隔离级别,也是 SQL 标准中的四个隔离级别之一。它最显著的特点是:
读已提交(Read Committed)是 MatrixOne Intelligence 的默认隔离级别,也是 SQL 标准中的四个隔离级别之一。它最显著的特点是:

- 在不同的事务之间,只能读到其他事务已经提交的数据,对于未提交状态的数据,无法查看。
- 读已提交的隔离级别,能够有效防止脏写和脏读,但是不能避免不可重复读与幻读。
@@ -54,7 +54,7 @@ MatrixOne Cloud 支持**读已提交(Read Committed)**和**快照隔离**两

### 快照隔离

与 SQL 标准所定义的四个隔离级别不同,在 MatrixOne Cloud 中,支持的隔离级别是快照隔离(Snapshot Isolation),该级别的隔离在 SQL-92 标准的 **REPEATABLE READ****SERIALIZABLE** 之间。与其他隔离级别有所区别的是,快照隔离具备如下特性:
与 SQL 标准所定义的四个隔离级别不同,在 MatrixOne Intelligence 中,支持的隔离级别是快照隔离(Snapshot Isolation),该级别的隔离在 SQL-92 标准的 **REPEATABLE READ****SERIALIZABLE** 之间。与其他隔离级别有所区别的是,快照隔离具备如下特性:

- 快照隔离对于指定事务内读取的数据不会反映其他同步的事务对数据所做的更改。指定事务使用本次事务开始时读取的数据行。

@@ -66,4 +66,4 @@ MatrixOne Cloud 支持**读已提交(Read Committed)**和**快照隔离**两

|Isolation Level|P0 Dirty Write|P1 Dirty Read|P4C Cursor Lost Update|P4 Lost Update|P2 Fuzzy Read|P3 Phantom|A5A Read Skew|A5B Write Skew|
|---|---|---|---|---|---|---|---|---|
|MatrixOne Cloud's Snapshot Isolation|Not Possible|Not Possible|Not Possible|Not Possible|Not Possible|Not Possible|Not Possible| Possible|
|MatrixOne Intelligence's Snapshot Isolation|Not Possible|Not Possible|Not Possible|Not Possible|Not Possible|Not Possible|Not Possible| Possible|
Loading

0 comments on commit cb50b70

Please sign in to comment.