跳到主要内容

常见问题

计量计费相关问题

文档型数据库与 MySQL 数据库有什么计量计费差异?

  • 文档型数据库:计量包括调用次数和数据存储量
  • MySQL 数据库:计量包括计算资源使用量及存储量
注意

在两种数据库上使用数据模型时,针对数据模型的调用也会记录调用次数。

微信云托管中的 MySQL 数据库与云开发中的 MySQL 数据库有什么差异?

微信云托管环境中的 MySQL 数据库

  • 采用按量计费方式
  • 计量包括计算资源使用量及存储量
  • 当天产生的用量会在次日凌晨进行结算及扣费

云开发中的 MySQL 数据库

  • 计量同样包括计算资源使用量及存储量
  • 扣费方式按照优先级:套餐 > 资源包 > 超限按量

使用相关问题

访问 MySQL 数据模型响应慢怎么办?

问题原因: MySQL 数据库支持自动暂停功能,10 分钟未被访问会自动暂停以减少计算资源消耗。当重新访问时需要启动服务,可能导致首次请求耗时较长。

解决方案: 如果您使用的是 MySQL 数据库,可以在控制台关闭自动暂停功能来避免此问题。

操作步骤

  1. 登录云开发平台
  2. 进入对应环境的数据库管理页面
  3. 找到 MySQL 数据库实例
  4. 在设置中关闭自动暂停功能

MySQL数据模型如何支持事务

云开发MySQL数据模型目前不支持事务操作。如需使用事务功能,建议通过云函数或云托管直接调用MySQL原生API来实现。

💡 注意:使用原生MySQL API时,需要自行管理数据库连接和事务状态。

实现示例

const mysql = require('mysql2/promise');

exports.main = async () => {
const conn = await mysql.createConnection({
host: process.env.DB_HOST,
user: process.env.DB_USER,
password: process.env.DB_PASSWORD,
database: process.env.DB_NAME
});

try {
await conn.beginTransaction();

// 执行多个相关操作
await conn.query('UPDATE accounts SET balance = balance - 100 WHERE user_id = 1');
await conn.query('UPDATE accounts SET balance = balance + 100 WHERE user_id = 2');

await conn.commit();
return { success: true };
} catch (error) {
await conn.rollback();
return { success: false, error: error.message };
} finally {
conn.end();
}
};

注意事项

  • 确保在云函数环境变量中正确配置数据库连接信息
  • 事务操作应包含完整的错误处理和回滚机制
  • 建议使用参数化查询防止SQL注入
  • 及时关闭数据库连接避免连接泄露