三言两语-mysql乐观锁与悲观锁
三言两语说mysql乐观锁与悲观锁
乐观锁,读取待修改的数据不加锁,修改后提交到数据库。这会造成同一条记录,被多次修改,而这些修改是相同的(无用的)。只是它们各个操作之间,不知道别人已经在做这件事儿了。这就是记录没有锁定造成的。(默认)
悲观锁,读取待修改的数据,立即加锁(只读取,没有修改意图的访问,任然能正常访问到加锁的数据),修改提交到数据库后,其他试图对进行修改的读取操作才读得到这条数据。
悲观锁的实现方式:首先把事务设置成手动提交的(设置方式set autocommit=0),再在select语句后天就for update即可。
mysql引擎 对于 锁的支持 情况:
数据库引擎 | 支持锁级别 |
MyISAM | 表级 |
BDB | 页级、表级 |
InnerDB、NDBCluster | 行级、表级 |
数据库一二事
1.在执行insert into操作时,①若新增的记录中包含了所有的字段值,且顺序与表结构字段顺序一致时,在sql语句中,可省略字段名的列举。value后面的数据顺序,必须与字段名的列举顺序一致(可不与数据表结构字段顺序一致)。如
select * from t_student value(1,'张三','男','22');
②若数据表字段中 存在‘自增长’、默认值 的表结构字段,新增时,除这些‘自增长’、默认值的字段为非必须外,其余的非空字段名必须列举。