在以前的一篇博文Linux多线程编程初探中,只提到了用于线程同步的互斥锁、条件变量,而没有提及读写锁(read-write lock)。 本文主要整理自以下文章: 读写锁(read-write lock)机制-----多线程同步问题的解决 请用普通的互斥锁编程实现一个读写锁读写锁 读写锁...
分类:
其他好文 时间:
2015-09-04 19:53:40
阅读次数:
182
一、MySQL锁相对其他数据库而言,MySQL的锁机制比较简单,其最显著的特点是不同的存储引擎支持不同的锁机制。比如,MyISAM和MEMORY存储引擎采用的是表级锁(table-levellocking);BDB存储引擎采用的是页面锁(page-levellocking),但也支持表级锁;InnoDB存储引擎既支持行级..
分类:
数据库 时间:
2015-09-03 07:07:44
阅读次数:
476
一、MVCC1、简介Multi-VersionConcurrencyControl多版本并发控制,大多数的MySQL事务型存储引擎,如InnoDB,Falcon以及PBXT都不使用一种简单的行锁机制。事实上,他们都和另外一种用来增加并发性的被称为“多版本并发控制(MVCC)”的机制来一起使用。MVCC不只使用在MySQL中,O..
分类:
数据库 时间:
2015-09-03 07:05:53
阅读次数:
229
一: 当select遇到性能低下的update会怎么样?1. 还是使用原始的person表,插入6条数据,由于是4000字节,所以两条数据就是一个数据页,如下图:1 DROP TABLE dbo.Person2 CREATE TABLE Person(ID INT IDENTITY,NAME CHA...
分类:
数据库 时间:
2015-08-29 16:49:08
阅读次数:
199
在美眉图片下载demo中,我们可以看到多个线程在公用一些变量,这个时候难免会发生冲突。冲突并不可怕,可怕的是当多线程的情况下,你没法控制冲突。按照我的理解在java中实现同步的方式分为三种,分别是:同步代码块机制,锁机制,信号量机制。一、同步代码块 在java的多线程并发开发过程中,我们最常用...
分类:
编程语言 时间:
2015-08-28 12:54:13
阅读次数:
248
关键词volatile用来对共享变量的访问进行同步。对于一个volatile变量的上一次写入操作的结果对下一次读取操作肯定是可见的。但是volatile由于没有锁机制的存在,所以使用场景受限,如果写入value的值依赖于value的当前值,则当前值可能是不正确的,所以使用是受限的。但是如果volat...
分类:
其他好文 时间:
2015-08-28 10:52:34
阅读次数:
139
概述 SQLite虽然是一个轻量的嵌入式数据库,但这并不影响它支持事务。所谓支持事务,即需要在并发环境下,保持事务的ACID特性。事务的原子性,隔离性都需要通过并发控制来保证。那么Sqlite的并发控制是怎样的,如何实现,在这里跟大家分享下我的理解。 SQLite是一个文件数据库,所有的数据都在.....
分类:
数据库 时间:
2015-08-27 13:07:01
阅读次数:
247
五、锁与事务隔离级别事务隔离级别简单的说,就是当激活事务时,控制事务内因SQL语句产生的锁定需要保留多入,影响范围多大,以防止多人访问时,在事务内发生数据查询的错误。设置事务隔离级别将影响整条连接。SQLServer数据库引擎支持所有这些隔离级别:·未提交读(隔离事务的最低级别,只能保证不读取物理上...
分类:
数据库 时间:
2015-08-27 12:57:59
阅读次数:
183
二、完整的锁兼容性矩阵(见下图)对上图的是代码说明:见下图。三、下表列出了数据库引擎可以锁定的资源。名称资源缩写编码呈现锁定时,描述该资源的方式说明数据行RIDRID9文件编号:分页编号:Slot编号用于锁定堆中的单个行的行标识符。索引键KEYKEY76字节哈希值索引中用于保护可序列化事务中的键范围...
分类:
数据库 时间:
2015-08-26 17:46:42
阅读次数:
214
锁定:通俗的讲就是加锁。锁定是MicrosoftSQLServer数据库引擎用来同步多个用户同时对同一个数据块的访问的一种机制。定义:当有事务操作时,数据库引擎会要求不同类型的锁定,如相关数据行、数据页或是整个数据表,当锁定运行时,会阻止其他事务对已经锁定的数据行、数据页或数据表进行操作。只有在当前...
分类:
数据库 时间:
2015-08-26 15:38:44
阅读次数:
190