MySQL
文章平均质量分 88
影子yyt
做个不掉头发的程序员!
展开
-
MySQL好玩的读写锁案例(表级锁)
前期数据准备:两张数据表,user 表和 test 表 user表 user表原始数据 test表 test表原始数据 为了演示不同进程对同一个数据库的并发操作,此处开了两个cmd会话窗口(背景颜色作为区分)作为模拟不同线程。 一、读锁案例 ①为user表手动添加读锁 ②当前会话可以查询user表记录 (这里记得将 mysql 的返回结果集编码修改为gbk,不然会出现乱码哦) 其他会话也可以查询该表记录 ③当前会话不能查询和更新其他没有锁定的表(因为当前锁还没释放) 其他会话可以查询和更新其原创 2021-07-02 00:12:51 · 304 阅读 · 12 评论 -
MySQL锁机制总结(附案例分析)
一、锁的概述 锁是计算机协调多个进程或线程并发访问某一资源的机制。 锁保证数据并发访问的一致性、有效性。 锁冲突也是影响数据库并发访问性能的一个重要因素。 锁是Mysql在服务器层和存储引擎层的并发控制。 一句话总结就是:锁机制用于管理对共享资源的并发访问。 二、锁的分类 从操作粒度区分: 表级锁:每次操作锁住整张表。开销小,加锁快,粒度大,不会出现死锁,触发锁冲突的概率高,并发度低。 行级锁:每次操作锁住一行数据。开销大,加锁慢,粒度小,会出现死锁,触发锁冲突的概率低,并发度高。 页级锁:每次锁定相原创 2021-07-02 00:32:37 · 792 阅读 · 4 评论 -
MySQL行级锁案例详解
前期数据准备:一张数据表(test 表) test表 test表原始数据 为了演示不同进程对同一个数据库的并发操作,此处开了两个cmd会话窗口(黑色cmd窗口为session1,白色cmd窗口为session2)作为模拟不同线程。 说明:在 MySQL 命令行的默认设置下,进行DML操作时,事务都是自动提交的,即执行 SQL 语句后就会马上执行 COMMIT 操作。因此要显式地开启一个事务须使用命令 BEGIN 或 START TRANSACTION,或者执行命令 SET AUTOCOMMIT=0,来禁原创 2021-07-02 00:27:24 · 693 阅读 · 7 评论