# mysql.begin

## 功能

开启一个 MySQL 事务，并返回 `MysqlTransaction` 事务句柄。

## 语法

```bt
tx = mysql(dsn).begin()
```

## 参数

无参数。DSN 由 `mysql(dsn)` 提供。

## 返回值

| 类型 | 说明 |
| ------ | ------ |
| MysqlTransaction | 事务句柄。事务内可继续调用 query、bind、all、one、exec、commit、rollback、close 和 status。 |

## 代码示例

```bt
db = mysql('mysql://user:pass@127.0.0.1/test')
tx = db.begin()
ret = tx.query('insert into user(name) values (?)').bind('BT').exec()
tx.commit()
result = ret.rows_affected

// 输出示例：1
echo(result)
```

## 注意事项

- begin 会独占一条连接，事务结束前不要长期持有。
- 事务完成后必须显式调用 commit、rollback 或 close。
- begin、事务内 SQL 和 commit/rollback/close 都受 `BT_MYSQL_QUERY_TIMEOUT_MS` 限制。
- 事务慢调用超过 `BT_MYSQL_SLOW_MS` 时只记录耗时、方法名和绑定数量，不记录绑定值。
