数据库锁:数据库锁出现的原因是为了处理并发问题。 并发控制一般采用三种方法,分别是乐观锁和悲观锁以及时间戳。 乐观锁认为一个用户读数据的时候,别人不会去写自己所读的数据,就是不做任何操作。悲观锁就刚好相反,觉得自己读数据库的时候,别人可能刚好在写自己刚读的数据,其实就是持一种比较保守的态度,悲观锁就 ...
分类:
数据库 时间:
2018-09-02 16:10:15
阅读次数:
184
悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。 乐观锁(Op ...
分类:
其他好文 时间:
2018-08-31 17:10:26
阅读次数:
161
mysql的引擎: InnoDB:特点是行锁设计、支持外键,并支持类似 Oracle 的非锁定读,即默认读取操作不会产生锁。在mysql5.5.8以上默认储存引擎 myisam:不支持事务、表锁设计、支持全文索引,主要面向一些 OLAP 数 据库应用,在 MySQL 5.5.8 版本之前是默认的存储 ...
分类:
数据库 时间:
2018-08-29 19:58:43
阅读次数:
200
操作数据库的时候,可能会由于并发问题而引起的数据的不一致性(数据冲突) 乐观锁 乐观锁不是数据库自带的,需要我们自己去实现。乐观锁是指操作数据库时(更新操作),想法很乐观,认为这次的操作不会导致冲突,在操作数据时,并不进行任何其他的特殊处理(也就是不加锁),而在进行更新后,再去判断是否有冲突了。 通 ...
分类:
数据库 时间:
2018-08-28 13:03:33
阅读次数:
190
InnoDB:支持事务处理等不加锁读取支持外键支持行锁不支持FULLTEXT类型的索引不保存表的具体行数,扫描表来计算有多少行DELETE 表时,是一行一行的删除InnoDB 把数据和索引存放在表空间里面跨平台可直接拷贝使用InnoDB中必须包含AUTO_INCREMENT类型字段的索引表格很难被压 ...
分类:
数据库 时间:
2018-08-27 23:22:32
阅读次数:
185
MyISAM 和InnoDB 讲解 InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定。基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的表强调的是性能,其执行速度比InnoDB类型更快,但是不 ...
分类:
数据库 时间:
2018-08-27 23:17:40
阅读次数:
194
MySQL中锁包含表级锁和行级锁两个大类。表级锁是意向锁,有IX,IS,一般在行级锁之前使用;行级锁则是传统的S和X锁。这些锁的兼容特性如下:ISIXSXIS兼容兼容兼容不兼容IX兼容兼容不兼容不兼容S兼容不兼容兼容不兼容X不兼容不兼容不兼容不兼容InnoDB存储引擎中行锁算法有3种,分别是:*RecordLock单个行记录上锁GapLock间隙锁,锁定一个范围,但不包含记录本身Next-KeyL
分类:
数据库 时间:
2018-08-21 15:19:55
阅读次数:
223
回顾: ACID:DBMS在写入或更新资料的过程中,为保证事务正确可靠,具有的四个特性:原子性(不可分割性)、一致性、隔离性(独立性)、持久性 一个事务:一系列数据库操作组成的一个完整的逻辑过程 原子性:一个事务中的所有操作,要么全部完成、要么全部不完成,若发生错误,回滚(RollBack) 一致性 ...
分类:
数据库 时间:
2018-08-17 22:17:36
阅读次数:
184
Mysql 给我们提供了4中数据引擎: MYISAM、HEAP和INNODB和BERKLEY(BDB) 这里着重说明常用的MYISAM和INNODB MyIASM引擎 1.MyIASM是MySQL默认的引擎,但是它没有提供对数据库事务的支持,也不支持行级锁和外键, 因此当INSERT(插入)或UPD ...
分类:
数据库 时间:
2018-08-14 11:36:58
阅读次数:
178
1. innodb_lock_wait_timeout mysql 可以自动监测行锁导致的死锁并进行相应的处理,但是对于表锁导致的死锁不能自动监测,所以该参数主要用于,出现类似情况的时候等待指定的时间后回滚。系统默认值是50秒。用户可以根据业务自行设置。生产环境不推荐使用过大的 innodb_loc ...
分类:
数据库 时间:
2018-08-13 19:39:03
阅读次数:
913