不废话:
不废话:
查看和设置自动提交:
show variables like "autocommit";
set autocommit= false;
SHOW GLOBAL VARIABLES LIKE 'autocommit';
SET GLOBAL autocommit = false;
查看事务隔离级别:
show session variables like '%isolation%';
MySQL的自动提交功能是每次在进行DML操作时自动进行提交的功能,但在有些场景中我们还是需要禁止MySQL自动提交功能,维持事务的隔离性,以免发生不可预知的情况。下面就来详细讲解如何禁用MySQL自动提交功能。
1. 编辑MySQL配置文件,设置“autocommit=off”:
MySQL自动提交功能默认是打开的,要想禁止MySQL自动提交,只需要在MySQL的配置文件中设置“autocommit=off”,当DML操作执行完成后就不会自动提交。
最近碰到一个MySQL锁,导致线上服务503的情况,记录一下。
报错如下:
8833816-### SQL: UPDATE mydb.tokens SET counts = counts - 1 WHERE token = ?
如果数据量很少(1万条以内),直接alter table即可。会造成锁表,也是很短时间内(3秒以内),用户最多感觉会卡顿一下,并没有太大影响,简单方便。
锁住老表的更新操作(insert、delete、update等),然后迁移数据,然后rename表名,然后删除老表,然后释放锁。锁定期间,前端用户只能进行读操作。
SELECT `name`, SUBSTRING_INDEX(`name`, '\r', 1), LENGTH(`name`), LENGTH( SUBSTRING_INDEX(`name`, '\r', 1) ) FROM `tb_site` ORDER BY LENGTH(`name`) DESC;
偶尔发现一招,挺有效。
但是多次执行带limit的删除语句,很快。
delete FROM `site` where classid not in (select classid from tb_class) limit 500;
Powered By Z-BlogPHP 1.7.2
© 2013-2022 nohup.net , All Rights Reserved. 豫ICP备20020372号-1