常见问题
计量计费相关问题
文档型数据库与 MySQL 数据库有什么计量计费差异?
- 文档型数据库:计量包括调用次数和数据存储量
- MySQL 数据库:计量包括计算资源使用量及存储量
注意
在两种数据库上使用数据模型时,针对数据模型的调用也会记录调用次数。
微信云托管中的 MySQL 数据库与云开发中的 MySQL 数据库有什么差异?
微信云托管环境中的 MySQL 数据库:
- 采用按量计费方式
- 计量包括计算资源使用量及存储量
- 当天产生的用量会在次日凌晨进行结算及扣费
云开发中的 MySQL 数据库:
- 计量同样包括计算资源使用量及存储量
- 扣费方式按照优先级:套餐 > 资源包 > 超限按量
使用相关问题
访问 MySQL 数据模型响应慢怎么办?
问题原因: MySQL 数据库支持自动暂停功能,10 分钟未被访问会自动暂停以减少计算资源消耗。当重新访问时需要启动服务,可能导致首次请求耗时较长。
解决方案: 如果您使用的是 MySQL 数据库,可以在控制台关闭自动暂停功能来避免此问题。
操作步骤:
- 登录云开发平台
- 进入对应环境的数据库管理页面
- 找到 MySQL 数据库实例
- 在设置中关闭自动暂停功能
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注入
- 及时关闭数据库连接避免连接泄露