MySQL
支持在云函数用使用 MySQL。
前置要求
已经开通云开发。
功能特性
提供基于开源数据库 MySQL 专业打造的高性能分布式数据存储服务,让用户能够在云中更轻松地设置、操作和扩展关系数据库。
适用场景
云开发的数据库满足不了业务的需求,需要使用到 MySQL。
已有的业务使用了 MySQL,业务迁移到云开发中,希望继续使用 MySQL。
安装程序
! 微信小程序开发者请使用【其他登录方式】-【微信公众号登录】登录,再选择关联的小程序账户登录;QQ 小程序开发者可直接通过 QQ 小程序开发者 IDE【云开发】按钮登录,也可以通过关联的腾讯云账户登录。
您可以通过 云开发控制台,来安装和管理该能力。
使用程序
如果您的原有业务代码中使用了 MySQL 连接池,在云函数中可能就不需要连接池了,每个请求都会分发到不同的云函数实例中,通常情况下,一个云函数有一个 MySQL 连接就可以。
根据用户的实际情况,推荐使用mysql和serverless-mysql。
默认情况下,serverless-mysql 是 mysql 的一个封装,它添加连接管理相关的功能,与 MySQL Server 只有一个连接;如果在云函数中需要使用连接池,推荐使用 mysql。
使用 serverless-mysql 的时候,注意 MySQL 的 max_user_connections 和 max_connections 的配置。
调用示例
云函数中使用:
"use strict";
const mysql = require("serverless-mysql")({
config: {
host: process.env.HOST,
port: process.env.PORT,
database: process.env.DATABASE,
// 需要填写真实的用户名与密码
user: "xxx",
password: "xxx"
}
});
exports.main = async (event, context, callback) => {
let res;
try {
res = await mysql.query("SELECT * FROM mysql_test");
} catch (e) {
console.error(e);
}
return {
res,
code: 200
};
};
其它
云函数的运行机制
私有网络 VPC
在云函数中,开发者如果需要访问腾讯云的云数据库等资源,推荐使用私有网络来确保数据安全及连接安全。关于私有网络、以及如果建立私有网络和云函数加入私有网络,可以参考为云数据库 MySQL 创建私有网络中的相关章节。
云函数并发数 & MySQL 连接数
在云开发控制台-环境总览中可以看到当前环境所允许的云函数并发数的最大值,最大并发数也是云函数的最大实例。
关于 MySQL 连接,推荐阅读 MySQL 官方博客的博文MySQL Connection Handling and Scaling。
MySQL 连接数的相关参数配置,可以在云数据库 TencentDB控制台 -> MySQL -> 数据库管理 -> 参数设置中配置。
云函数中使用 MySQL,每个云函数实例与 MySQL Server 都会有连接,那么此云函数与 MySQL 的最大连接数是,单个实例的最大连接数*实际运行的最大并发数;在配置 MySQL 的 max_connections 的时候,此参数应该大于,使用此数据库的所有云函数的最大连接数之和。
因此,在云函数中使用 MySQL,建议您将使用到同一个数据库,不仅仅是同一张表,的所有读写 MySQL 的代码集中到一个云函数中,这样做有两个好处
- 云函数出现冷启动的概率比较低
- MySQL 的最大连接数较小