You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS Lambda写入RDS MySQL后读取无法实时获取新数据问题

问题根源

Lambda的执行环境会被复用(保留几分钟到十几分钟),你在handler函数外初始化的数据库连接会被多个请求共享。结合MySQL默认的REPEATABLE READ隔离级别,同一个连接内的查询会一直读取事务启动时的数据快照,看不到其他连接(比如create_user或Workbench)提交的新数据,直到这个复用的连接被销毁(大概10分钟左右),才会创建新连接读取最新数据。

解决方案
  • 把数据库连接移到handler内部管理
    放弃连接复用,每次请求时创建新连接,请求结束后关闭。虽然会增加一点连接开销,但能彻底解决数据延迟问题,保证每次查询都用全新连接读取最新数据。示例代码:

    import pymysql
    
    def lambda_handler(event, context):
        # 每次请求创建新连接
        conn = pymysql.connect(
            host='你的RDS地址',
            user='数据库用户名',
            password='数据库密码',
            db='目标数据库'
        )
        try:
            with conn.cursor() as cursor:
                cursor.execute("SELECT * FROM users")
                result = cursor.fetchall()
            return {"users": result}
        finally:
            # 请求结束必关连接
            conn.close()
    
  • 复用连接但重置事务状态
    如果想保留连接复用的性能优势,每次查询前必须清理连接的残留事务状态,确保读取最新数据:

    import pymysql
    
    # 全局初始化连接(用于复用)
    conn = pymysql.connect(
        host='你的RDS地址',
        user='数据库用户名',
        password='数据库密码',
        db='目标数据库'
    )
    
    def lambda_handler(event, context):
        global conn
        try:
            # 先检查连接是否存活,断开则自动重连
            conn.ping(reconnect=True)
            # 提交所有未完成的事务,清除快照状态
            conn.commit()
            # 或者临时修改本次会话的隔离级别为READ COMMITTED
            with conn.cursor() as cursor:
                cursor.execute("SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED")
                cursor.execute("SELECT * FROM users")
                result = cursor.fetchall()
            return {"users": result}
        except Exception as e:
            # 连接异常时重新创建连接
            conn = pymysql.connect(
                host='你的RDS地址',
                user='数据库用户名',
                password='数据库密码',
                db='目标数据库'
            )
            raise e
    
  • 修改MySQL全局隔离级别
    如果业务场景允许,把RDS MySQL的全局事务隔离级别改成READ COMMITTED。这样所有连接的每次查询都会读取最新的已提交数据,从根源避免快照读的问题。注意这是全局设置,要确认不会影响其他业务逻辑。

内容的提问来源于stack exchange,提问作者jerney

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 00:22:34