首先锁是用来做互斥的,解决并发执行时的数据不一致问题 如图会导致,不可重复读 如果这里用lock就可以解决,数据库里面有个LockManager来作为master,负责锁的记录和授权 数据库里面的基本的锁类型, 其实就是读锁,写锁 但是如果光是有读写锁,只能解决当个操作互斥和正确,无法解决trans ...
分类:
数据库 时间:
2019-06-25 15:18:31
阅读次数:
143
在SQL标准中定义了四种隔离级别,每一种级别都规定了一个事务中所做的修改,哪些在事务内和事务间是可见的,哪些是不可见的。较低级别的隔离通常可以执行更高的并发,系统的开销也更低。 简单的介绍四种隔离级别: 1、READ UNCOMMITTED (未提交读) 在 READ UNCOMMITTED 级别, ...
分类:
数据库 时间:
2019-06-25 00:38:30
阅读次数:
137
1.计算机的世界 线程: 线程运行步骤:就绪、等待、运行 多线程并发问题 加锁、死锁问题,按照资源顺序申请锁 TCP/IP 不可靠通道进行可靠性传输 TCP的三次握手和四次挥手 滑动窗口协议 CPU CPU比内存快100倍,比硬盘快百万倍。 寄存器、程序计算器 局部性原理 进程 批处理系统 进程记录 ...
分类:
其他好文 时间:
2019-06-25 00:20:17
阅读次数:
109
一、锁(自动加锁和释放锁) 二、存储引擎 三、用户账户管理 用户授权 ...
分类:
数据库 时间:
2019-06-24 21:04:02
阅读次数:
88
公平锁/非公平锁(多线程执行顺序的维度) 概念理解 公平锁:加锁前先查看是否有排队等待的线程,有的话优先处理排在前面的线程,先来先得。 非公平所:线程加锁时直接尝试获取锁,获取不到就自动到队尾等待。 例子 ReentrantLock 同时支持两种锁 适用场景 更多的是直接使用非公平锁:非公平锁比公平 ...
分类:
编程语言 时间:
2019-06-24 00:23:38
阅读次数:
89
mysqldump导出数据主要有两种控制:一种是导出的全过程都加锁 lock-all-tables, 另一种则是不加。前者会在导出开始时执行 FLUSH TABLES WITH READ LOCK; 也就是加全局读锁,会阻塞其它写操作,以保证导出是一致性的;因此只有在导出测试数据时或导出时没有业务连 ...
分类:
数据库 时间:
2019-06-23 21:19:52
阅读次数:
133
准备测试数据: 测试1: 上面操作执行后,使用SHOW ENGINE INNODB STATUS查看锁信息 上面事务加两个锁: 1、表上加意向修改锁(IX)。 2、在新插入的记录上加行锁(RECORD LOCKS ..lock_mode X locks rec but not gap) 测试2: 上 ...
分类:
数据库 时间:
2019-06-20 17:36:36
阅读次数:
189
002-多线程-锁-同步锁-synchronized几种加锁方式、Java对象头和Monitor、Mutex Lock、JDK1.6对synchronized锁的优化实现 ...
分类:
编程语言 时间:
2019-06-19 20:01:28
阅读次数:
107
锁是在执行多线程时用于强行限制资源访问的同步机制,即用于在并发控制中保证对互斥要求的满足。在DBMS中,可以按照锁的粒度把数据库锁分为行级锁(INNODB引擎)、表级锁(MYISAM引擎)和页级锁(BDB引擎 )。 行锁 锁定整个行数据,开销大,加锁慢,会出现死锁。锁定粒度小,发生锁冲突的概率低,并 ...
分类:
数据库 时间:
2019-06-14 14:11:43
阅读次数:
311
一、ThreadLocal简介 多线程访问同一个共享变量的时候容易出现并发问题,特别是多个线程对一个变量进行写入的时候,为了保证线程安全,一般使用者在访问共享变量的时候需要进行额外的同步措施才能保证线程安全性。ThreadLocal是除了加锁这种同步方式之外的一种保证一种规避多线程访问出现线程不安全 ...
分类:
编程语言 时间:
2019-06-14 12:19:31
阅读次数:
105