mysql如何配置事务隔离级别_mysql isolation level修改方法
MySQL事务隔离级别支持在线修改:会话级可随时修改且仅影响当前连接,全局级修改只对新连接生效;配置文件中需用transaction-isolation=READ-COMMITTED(短横线、全大写推荐加引号),重启后才生效。MySQL 事务隔离级别能在线修改吗能,但分两种情况:会话级和全局级。会话级随时可改,不影响别人;全局级改了只影响新连接,当前已连上的连接不变。常见错误是以为 SET GLOBAL transaction_isolation = 'READ-COMMITTED' 一执行,所有连接立刻生效——其实老连接还用着原来的隔离级别,得重连才感知到新配置。查看当前会话级别:SELECT @@transaction_isolation查看全局默认值:SELECT @@global.transaction_isolation临时改当前会话:SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED永久改默认(需重启或配合配置文件):SET GLOBAL transaction_isolation = 'READ-COMMITTED'my.cnf 里怎么配 isolation level 才真正生效直接写 transaction-isolation = READ-COMMITTED 在 [mysqld] 段就行,但注意格式:必须用短横线(-),不能写成下划线(_),否则 MySQL 启动时会静默忽略这行。另外,这个配置只在 mysqld 启动时读取一次。如果改了 my.cnf 却没重启服务,或者用 mysqladmin shutdown 以外的方式停库(比如 kill -9),新配置永远不会加载。正确写法:transaction-isolation = READ-COMMITTED错误写法:transaction_isolation = READ-COMMITTED(下划线,无效)值必须全大写、带引号?不,MySQL 接受大小写混合,但推荐全大写加单引号更稳妥:transaction-isolation = 'READ-COMMITTED'READ-COMMITTED 和 REPEATABLE-READ 的实际行为差异在哪关键不是“能不能读到新数据”,而是“同一事务内多次 SELECT 是否看到相同结果”。REPEATABLE-READ 下,第一次 SELECT 后,后续 SELECT 会复用快照,哪怕其他事务已提交;READ-COMMITTED 每次 SELECT 都读最新已提交版本。 MarsCode 字节跳动旗下的免费AI编程工具
