MySQL学习
Posted xp1902
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL学习相关的知识,希望对你有一定的参考价值。
把一个表复制到另一个表
复制表结构:create table newuser like user
导入表数据:insert into newuser select * from user
乐观锁和悲观锁
乐观锁:
首先说明一点的是:乐观锁在数据库上的实现完全是逻辑的,数据库本身不提供支持,而是需要开发者自己来实现。
常见的做法有两种:版本号控制及时间戳控制。
版本号控制的原理:
- 为表中加一个 version 字段;
- 当读取数据时,连同这个 version 字段一起读出;
- 数据每更新一次就将此值加一;
- 当提交更新时,判断数据库表中对应记录的当前版本号是否与之前取出来的版本号一致,如果一致则可以直接更新,如果不一致则表示是过期数据需要重试或者做其它操作(PS:这完完全全就是 CAS 的实现逻辑呀~)
至于时间戳控制,其原理和版本号控制差不多,也是在表中添加一个 timestamp 的时间戳字段,然后提交更新时判断数据库中对应记录的当前时间戳是否与之前取出来的时间戳一致,一致就更新,不一致就重试。
悲观锁:
使用 select .... for update 锁住使用的对象
以上是关于MySQL学习的主要内容,如果未能解决你的问题,请参考以下文章