LangChain 1.0 记忆系统:会话管理与长期记忆存储

核心内容摘要

AAAI专家圆桌:探讨AGI未来发展之路
Z-Image-ComfyUI夜间自动出图,GPU利用率翻倍

3步解锁[项目名称]:从安装到智能批量下载的短视频采集方案

MySQL 事务����作�隔离级别深度解�

事务概述

事务的�交��滚�作

事务的隔离级别

事务隔离级别的�置�验�

事务概述事务是处ç�†å¤�æ�‚æ•°æ�®æ“�ä½œçš„æ ¸å¿ƒæœºåˆ¶å°¤å…¶é€‚ç”¨äº�æ“�作é‡�大ã€�逻辑关è�”性强的场景。例如在ä¼�业级人员管ç�†ç³»ç»Ÿä¸­åˆ 除一å��员工的æ“�作并é��ä»…åˆ é™¤å…¶åŸºç¡€ä¿¡æ�¯å�³å�¯è¿˜éœ€å�Œæ­¥æ¸…ç�†è¯¥å‘˜å·¥å…³è�”的邮箱记录ã€�å�‘å¸ƒçš„æ–‡ç« ã€�å�‚ä¸�的项目等数æ�®ã€‚这些相互关è�”的数æ�®åº“æ“�作语å�¥å¿…须作为一个整体执行è¦�么全部完æˆ�è¦�么全部å›�退而事务正是ä¿�障这一执行逻辑的关键。PSä»… InnoDB 存储引æ“�的数æ�®åº“或数æ�®è¡¨æ”¯æŒ�事务MyISAM 等其他引æ“�åˆ™æ— æ­¤ç‰¹æ€§äº‹åŠ¡çš„æ ¸å¿ƒä»·å€¼ä½“ç�°åœ¨å››å¤§ç‰¹æ€§ACID上å�Ÿå­�性Atomicity事务是ä¸�å�¯åˆ†å‰²çš„æœ€å°�执行å�•元其内部所有æ“�作è¦�么全部æˆ�功执行并æŒ�久化è¦�么在任æ„�ç�¯èŠ‚å‡ºé”™æ—¶æ•´ä¸ªäº‹åŠ¡å›�滚至执行å‰�的状æ€�如å�Œä»�未执行过一致性Consistency事务执行å‰�å��æ•°æ�®åº“的完整性约æ�Ÿå¦‚主键唯一ã€�外键关è�”ã€�å­—æ®µæ ¡éªŒè§„åˆ™ç­‰å§‹ç»ˆä¿�æŒ�有效。例如电商订å�•创建时订å�•金é¢�需等äº�商å“�总价 è¿�费事务执行å��该等å¼�å¿…é¡»æˆ�立且库存扣å‡�ä¸�订å�•æ•°é‡�需匹é…�ç¡®ä¿�æ•°æ�®é€»è¾‘æ— çŸ›ç›¾éš”ç¦»æ€§Isolationæ•°æ�®åº“å…�许多个事务并å�‘执行隔离性å�¯é˜²æ­¢äº‹åŠ¡é—´çš„ç›¸äº’å¹²æ‰°é�¿å…�å› äº¤å�‰æ‰§è¡Œå¯¼è‡´çš„æ•°æ�®ä¸�一致。ä¸�å�Œéš”离级别下事务间的隔离程度ä¸�å�Œç›´æ�¥å½±å“�å¹¶å�‘æ“�作的安全性ä¸�性能æŒ�久性Durability事务一旦æ��交对数æ�®çš„修改将永久ä¿�存至数æ�®åº“å�³ä¾¿å��ç»­å�‘生æœ�务器宕机ã€�系统崩溃等故障已æ��交的数æ�®ä¹Ÿä¸�会丢失

事务的�交��滚�作MySQL 默认开�自动�交�执行一�INSERT�UPDATE�DELETE语�系统会自动���交事务这�味��� DML 语�本身就是一个独立事务。但在��业务场景中我们需�手动�制事务的边界此时需显�开�事务关闭自动�交。1�开�事务使用BEGIN或START TRANSACTION语�显�开�事务此时�续的 DML 语�将进入�一事务上下文直至执行COMMIT或ROLLBACK�结�事务mysqlBEGIN;-- 等价� START TRANSACTION开�事务Query OK,0rowsaffected(

00sec)2��交事务COMMIT或COMMIT WORK用��交事务将事务内所有 DML �作的结�永久写入数�库�时��自动�交模�。mysqlCOMMIT;-- �交事务所有修改生效Query OK,0rowsaffected(

01sec)3ã€�å›�滚事务ROLLBACK用äº�撤销当å‰�事务内未æ��交的所有修改将数æ�®è¿˜å�Ÿè‡³äº‹åС开å�¯å‰�的状æ€�。å›�滚仅对未æ��交的事务有效若事务已æ��äº¤æ— æ³•é€šè¿‡ROLLBACK撤销。一个完整的事务å›�滚案例-- å¼€å�¯äº‹åŠ¡å…³é—­è‡ªåŠ¨æ��交mysqlSTARTTRANSACTION;Query OK,0rowsaffected(

03sec)-- 执行多��入�作mysqlINSERTINTOdeptVALUES(60,DAHE,ZHIQUAN);Query OK,1rowaffected(

00sec)mysqlINSERTINTOdeptVALUES(70,DAHE,ZHIQUAN);Query OK,1rowaffected(

00sec)mysqlINSERTINTOdeptVALUES(80,DAHE,ZHIQUAN);Query OK,1rowaffected(

00sec)-- 查看事务内的临时数�此时数�未�交仅当�会���mysqlSELECT*FROMdept;------------------------------|DEPTNO|DNAME|LOC|------------------------------|10|ACCOUNTING|NEW YORK||20|RESEARCH|DALLAS||30|SALES|CHICAGO||40|OPERATIONS|BOSTON||60|DAHE|ZHIQUAN||70|DAHE|ZHIQUAN||80|DAHE|ZHIQUAN|------------------------------7rowsinset(

00sec)-- �滚事务撤销所有未�交的�入�作mysqlROLLBACK;Query OK,0rowsaffected(

05sec)-- �次查询数�还�至事务开��的状�mysqlSELECT*FROMdept;------------------------------|DEPTNO|DNAME|LOC|------------------------------|10|ACCOUNTING|NEW YORK||20|RESEARCH|DALLAS||30|SALES|CHICAGO||40|OPERATIONS|BOSTON|------------------------------4rowsinset(

00sec)

事务的隔离级别MySQL æ��供四个ä»�ä½�到高的隔离级别ä¸�å�Œçº§åˆ«å¯¹åº”ä¸�å�Œçš„å¹¶å�‘问题解决能力å�Œæ—¶ä¹Ÿå½±å“�æ•°æ�®åº“的并å�‘性能级别越高并å�‘性能越ä½�在讲解具体级别å‰�需先æ˜�确三个典å�‹çš„å¹¶å�‘æ•°æ�®é—®é¢˜è„�读读å�–到其他事务未æ��交的临时数æ�®è¯¥æ•°æ�®å�¯èƒ½è¢«å›�æ»šæœ€ç»ˆæ— æ•ˆã€‚ä¸�å�¯é‡�å¤�读å�Œä¸€äº‹åŠ¡å†…å¤šæ¬¡è¯»å�–å�Œä¸€æ•°æ�®ç»“æ�œä¸�ä¸€è‡´å› å…¶ä»–äº‹åŠ¡ä¿®æ”¹å¹¶æ��交了该数æ�®ã€‚幻读å�Œä¸€äº‹åŠ¡å†…å¤šæ¬¡æ‰§è¡Œç›¸å�Œçš„æŸ¥è¯¢å¦‚全表扫æ��结æ�œé›†è¡Œæ•°ä¸�ä¸€è‡´å› å…¶ä»–äº‹åŠ¡æ�’å…¥ / åˆ é™¤å¹¶æ��交了数æ�®ã€‚1ã€�读未æ��交Read Uncommitted—— 最ä½�级别规则事务 A å�¯è¯»å�–事务 B 未æ��交的任何修改数æ�®ã€‚è§£å†³é—®é¢˜æ— ä»…ä¿�è¯�事务å�Ÿå­�性。存在问题è„�读ã€�ä¸�å�¯é‡�å¤�读ã€�幻读å�‡ä¼šå�‘生。å®�战案例财务人员给员工å�‘工资误将月薪

6 万改为

9 万数�已写入数�库但事务未�交。此时员工查询工资看到

9 万的金��数�误以为涨薪��财务��错误�滚事务将金�改�

6 万并�交员工最终�际工资�为

6 万此�读�的

9 万�为�读。适用场景仅适用�对数�一致性�求���追求�致并�性能的场景2�读已�交Read Committed规则事务 A 仅能读�事务 B 已�交的修改数�未�交的数����。解决问题解决�读。存在问题����读�幻读�会�生。�战案例程�员�信用�消费扣款系统开�事务�第一次查询�内余�为

6 万此时程åº�员妻å­�å¼€å�¯å�¦ä¸€äº‹åС将å�¡å†…全部金é¢�转出并æ��交。扣款系统准备扣款时å†�次查询余é¢�å�‘ç�°é‡‘é¢�为 0å› å¦»å­�的事务已æ��交。å�Œä¸€äº‹åŠ¡å†…ä¸¤æ¬¡æŸ¥è¯¢å�Œä¸€ä½™é¢�结æ�œä¸�å�Œå�³ä¸�å�¯é‡�å¤�读。特点这是 Oracleã€�SQL Server 等数æ�®åº“的默认隔离级别兼顾一定的一致性ä¸�å¹¶å�‘性能适用äº�大多数普通业务场景3ã€�å�¯é‡�å¤�读Repeatable Read—— MySQL 默认级别规则事务开å�¯å��多次读å�–å�Œä¸€æ•°æ�®çš„结æ�œå§‹ç»ˆä¸€è‡´å�³ä¾¿å…¶ä»–事务修改并æ��交了该数æ�®ã€‚解决问题解决è„�读ã€�ä¸�å�¯é‡�å¤�读。存在问题幻读ä»�å�¯èƒ½å�‘生注MySQL InnoDB 引æ“�通过间隙é”�机制在å�¯é‡�å¤�读级别下已基本解决幻读问题这是 MySQL 的优化特性。å®�战案例程åº�员消费时扣款系统开å�¯äº‹åŠ¡å��查询å�¡å†…ä½™é¢�为

6 万此时妻å­�å°�试转出金é¢�ä½†å› å�¯é‡�å¤�读级别é™�制修改æ“�作需等待扣款事务结æ�Ÿæ‰£æ¬¾ç³»ç»Ÿç¬¬äºŒæ¬¡æŸ¥è¯¢ä½™é¢�ä»�为

6 万确�扣款�作正常执行������读。幻读案例补充程�员妻�查询其当日消费记录事务开�第一次查询显示消费 2000 元��程�员新�一笔 1 万元的消费并�交事务妻��次执行相�查询结�显示消费

2 万元å�³å¹»è¯»ç‰¹ç‚¹å…¼é¡¾ä¸€è‡´æ€§ä¸�å¹¶å�‘性能是 MySQL 的默认级别满足ç»�大多数业务的并å�‘需求。4ã€�串行化Serializable—— 最高级别规则所有事务串行化执行å�³äº‹åŠ¡æ�’队ä¾�次执行完全ç¦�止并å�‘æ“�作。解决问题解决è„�读ã€�ä¸�å�¯é‡�å¤�读ã€�幻读所有并å�‘问题。存在问题并å�‘性能æ��ä½�æ•°æ�®åº“å��å��é‡�大幅下é™�。å®�战案例多用户å�Œæ—¶æ“�作å�Œä¸€è®¢å�•表时所有事务需æ�’队执行事务 A 执行æ�’å…¥æ“�作时事务 B 的查询ã€�修改æ“�作需等待事务 A æ��交事务 B 执行时事务 C 需等待以此类æ�¨ã€‚适用场景仅适用äº�对数æ�®ä¸€è‡´æ€§è¦�求æ��高ã€�å‡ ä¹�æ— å¹¶å�‘æ“�作的场景如金è��æ ¸å¿ƒäº¤æ˜“çš„å¯¹è´¦ç�¯èŠ‚ã€‚

事务隔离级别的�置�验�1�查看当�隔离级别MySQL �供系统��transaction_isolation

7 �以上版本旧版本为tx_isolation用�查看隔离级别支�会�级和全局级查询-- 查看当�会�的隔离级别mysqlSELECTtransaction_isolation;-------------------------|transaction_isolation|-------------------------|REPEATABLE-READ|-------------------------1rowinset(

00sec)-- 查看全局隔离级别mysqlSELECTglobal.transaction_isolation;--------------------------------|global.transaction_isolation|--------------------------------|REPEATABLE-READ|--------------------------------1rowinset(

00sec)2�修改隔离级别MySQL 支�会�级和全局级修改隔离级别修改规则如下会�级修改仅对当�数�库��生效关闭���失效�影�其他会�。全局级修改对所有新创建的会�生效已存在的会���影���数�库���为�置文件默认值需修改 my.cnf/my.ini 永久生效。-- 将当�会�隔离级别设置为读已�交mysqlSETSESSIONTRANSACTIONISOLATIONLEVELREADCOMMITTED;Query OK,0rowsaffected(

00sec)-- 验�修改结�mysqlSELECTtransaction_isolation;-------------------------|transaction_isolation|-------------------------|READ-COMMITTED|-------------------------1rowinset(

00sec)-- 将全局隔离级别设置为读已�交mysqlSETGLOBALTRANSACTIONISOLATIONLEVELREADCOMMITTED;Query OK,0rowsaffected(

00sec)-- 当�会���留�级别���读mysqlSELECTtransaction_isolation;-------------------------|transaction_isolation|-------------------------|REPEATABLE-READ|-------------------------1rowinset(

00sec)-- 新建一个数�库会�验�全局级别生效mysqlSELECTtransaction_isolation;-------------------------|transaction_isolation|-------------------------|READ-COMMITTED|-------------------------1rowinset(

00sec)3�永久修改隔离级别若需��数�库����隔离级别需修改 MySQL �置文件my.cnf 或 my.ini# 新�以下�置设置全局默认隔离级别为���读transaction-isolationREPEATABLE-READ

星空无限mv国产剧入选精彩-星空无限mv国产剧入选精彩应用

百度百家号客服电话人工服务

123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123