码迷,mamicode.com
首页 > 数据库 > 详细

MySQL学习

时间:2019-10-23 19:45:58      阅读:107      评论:0      收藏:0      [点我收藏+]

标签:for   数据库表   提交   开发者   其它   悲观锁   sele   直接   creat   

把一个表复制到另一个表

复制表结构:create table newuser like user

导入表数据:insert into newuser select * from user

乐观锁和悲观锁

乐观锁:

首先说明一点的是:乐观锁在数据库上的实现完全是逻辑的,数据库本身不提供支持,而是需要开发者自己来实现。

常见的做法有两种:版本号控制及时间戳控制。

版本号控制的原理:

  • 为表中加一个 version 字段;
  • 当读取数据时,连同这个 version 字段一起读出;
  • 数据每更新一次就将此值加一;
  • 当提交更新时,判断数据库表中对应记录的当前版本号是否与之前取出来的版本号一致,如果一致则可以直接更新,如果不一致则表示是过期数据需要重试或者做其它操作(PS:这完完全全就是 CAS 的实现逻辑呀~)

至于时间戳控制,其原理和版本号控制差不多,也是在表中添加一个 timestamp 的时间戳字段,然后提交更新时判断数据库中对应记录的当前时间戳是否与之前取出来的时间戳一致,一致就更新,不一致就重试。

悲观锁:

使用 select .... for update 锁住使用的对象

 

MySQL学习

标签:for   数据库表   提交   开发者   其它   悲观锁   sele   直接   creat   

原文地址:https://www.cnblogs.com/shemlo/p/11728242.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!