Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 0 additions & 15 deletions mintlify/change-database/settings.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -4,21 +4,6 @@ title: Settings

Customize how database changes work in your projects. Navigate to **Project** → **Settings** to access these options.

## Transaction Mode

<Note>
Supported databases: MySQL, PostgreSQL, Oracle, SQL Server, TiDB, Redshift
</Note>

By default, Bytebase wraps SQL statements in a transaction for safety - if something goes wrong, changes can be rolled back.

Some DDL statements can't run inside transactions. To disable transaction wrapping, add this comment before your SQL:

```sql
-- txn-mode=off
ALTER TABLE t ALTER COLUMN a TYPE VARCHAR(255);
```

## Postgres Tenant Mode

Perfect for multi-tenant PostgreSQL setups where each database has its own owner.
Expand Down
39 changes: 39 additions & 0 deletions mintlify/change-database/transaction-mode.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
---
title: Transaction Mode
---

<Note>
Supported databases: MySQL, PostgreSQL, Oracle, SQL Server, TiDB, Redshift
</Note>

Bytebase provides transaction management to ensure safe database changes. By default, all SQL statements are wrapped in a transaction, allowing automatic rollback if errors occur during execution.

## Enable/Disable Transactions

When creating a plan, you can control whether SQL statements are executed within a transaction:

- **Enabled (default)**: All statements run within a transaction boundary for safety
- **Disabled**: Statements execute directly without transaction wrapping

![Transaction mode toggle](/content/docs/change-database/transaction-mode/bb-transaction-mode.webp)

## MySQL-Specific Settings

For MySQL databases, Bytebase offers additional control over transaction isolation levels to manage concurrent access and data consistency:

![MySQL transaction isolation levels](/content/docs/change-database/transaction-mode/bb-transaction-mode-mysql.webp)

### Available Isolation Levels

- **READ UNCOMMITTED**: Lowest isolation, allows dirty reads
- **READ COMMITTED**: Prevents dirty reads, allows non-repeatable reads
- **REPEATABLE READ**: Default MySQL isolation, prevents dirty and non-repeatable reads
- **SERIALIZABLE**: Highest isolation, prevents all phenomena but may impact performance

## Best Practices

- Keep transactions enabled for DDL and DML operations that modify data
- Consider disabling transactions only for:
- Large batch operations that manage their own transaction boundaries
- Statements that cannot run within transactions (e.g., certain administrative commands)
- Choose appropriate isolation levels based on your concurrency requirements and performance needs
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions mintlify/docs.json
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,7 @@
"group": "Change",
"pages": [
"change-database/plan",
"change-database/transaction-mode",
"change-database/batch-change",
"change-database/synchronize-schema",
"change-database/online-schema-migration-for-mysql",
Expand Down