Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.bytebase.com/llms.txt

Use this file to discover all available pages before exploring further.

Supported databases: MySQL, PostgreSQL, Oracle, SQL Server, TiDB, Redshift
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

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

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

GitOps

In the GitOps workflow there is no UI toggle, so transaction mode and isolation level are controlled via comment directives at the top of the migration file:
-- txn-mode = off
-- txn-isolation = READ COMMITTED

ALTER TABLE users ADD COLUMN email VARCHAR(255);
Supported directives:
  • -- txn-mode = on|off — wrap the script in a transaction, or run statements directly without transaction wrapping
  • -- txn-isolation = READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE — MySQL only
Rules:
  • Directives must appear at the top of the file, before any non-comment SQL
  • Empty lines between directives are allowed; scanning stops at the first non-comment line
  • The order of the two directives does not matter
  • Whitespace around = is optional — -- txn-mode = off and -- txn-mode=off are both accepted; the spaced form shown above is the canonical style

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