mysql并发控制
首页->学习资料->微服务治理->sql教程 关键词: 发布时间:2018-06-24 09:46:25 浏览次数:1598

读写锁:

在处理并发读或者写,可以通过实现一个由两种类型的锁组成的锁系统来解决;

共享锁也叫读锁(shared lock/read lock):读锁是共离的或者说是相互不阻塞的;

排他锁也叫写锁(exclusive lock/write lock):写锁是排他的,也就是说一个写锁会阻塞其它的写锁及读锁;只有这样才能确保在给定的时间里,只有一个用户能执行写入,并防止其它用户读取正在写入的同一资源;


锁粒度:

表锁(table lock):mysql中最基本的锁策略,并且是开锁最小的策略。 它会锁定整张表,一个用户在对表进行写操作(insert,delete,update,alter等)前,需要先获得写锁,这会阻塞其它用户对该表的所有读写操作。只有没有写锁时,其它读取的用户才能获得读锁,读锁之间是不相互阻塞的。写锁比读锁有更高的优先级,因此一个写锁请求可能会被插入到写锁的前面。 myisam上可以实现表锁;

行级锁(row lock):可能最在程度地支持并发处理(同时也带来了最大的锁开销),innodb上可以实现行锁;

在给定的资源上,锁定的数据量越少,则系统的并发程度越高,只要相互不发生冲突即可。 

由于锁定和解锁需要消耗资源,所以具体怎么选择,要看实际情况。 


事务:

事务内部的语句,要么全部执行成功,要么全部执行失败;

事务的特性:ACID

原子性:对于一个事务来说,不可能只执行其中的一部分操作;

一致性:数据库总是从一个一致性的状态转换到另一个一致性的状态。 

隔离性:通常来说(看隔离级别),一个事务所做的修改在最终提交前,对其它事务是不可见的。 

持久性:一旦事务提交了,则其所做的修改就会永久保存到数据库中。 


隔离级别:

read uncommited(未提交读):此级别中,事务的修改,即使没有提交,对其他事务也都是可见的 。事务可以读取未提交的数据,这种现象被称为脏读。问题较多,一般很少用这种级别;

read committed(提交读):大多数数据库的默认隔离级别。 一个事务从开始直到提交前,所做的任何修改对其它事务都是不可见的。 可能出现两次执行同样的查询,会得到不一样的结果。 

repeatable read(可重复读):解决了脏读问题,保证在同一个事务中多次读取同样的记录结果是一致的。 但是无法解决幻读问题:当某个事务在读取某个范围内的记录时,另外一个事务又在该范围内插入了新的记录,当之前的事务再次读取该范围的记录时,会产生幻行。 innodb和xtradb存储引擎通过多版本并地控制解决了幻读的问题。 

serializable(可串行化):最高的隔离级别,它通过强制事务串行执行,避免了前面说的幻读问题;它会在读取的每一行数据上都加锁,所以可能导致大量的超时和锁争用问题,实际中很少用到。 

赞:(0)
踩:(0)
相关文章
find_in_set在集合中查找
sql查询自定义排序field函数
sql显示表结构及索引
sql修改表
添加、删除索引
sql分组
sql子查询
sql多表更新
sql建表同时插入数据
sql多表删除
热门文章
win7中将文件拷贝到虚拟机linux下
phpexcel设置行高及列宽,背景颜色,
rabbitmq无法启动
intellij idea不显示git push按钮
php7中使用mongodb的aggregate进行
centos7.4 64位下swoole安装及配置
laravel页面静态化的方法
navicate连接mycat报1184错误
单点登录sso原理及php实现方式及de
devops-jenkins容器为pending状态
好评文章
phpexcel设置行高及列宽,背景颜色,
php7中使用mongodb的aggregate进行
intellij idea打开文件所在文件夹
windows下使用MongoDB Compass Com
win7中将文件拷贝到虚拟机linux下
laravel 中悲观锁 & 乐观锁的使用
单点登录sso原理及php实现方式及de
navicate连接mycat报1184错误
rabbitmq无法启动
laravel整合dingo/api方法步骤:jwt
标签
rabbitmq mysql备份 elasticsearch golang swoole
我的项目
【github】www.github.com/hurong241
【码云】gitee.com/hu_rong/projects
【docker hub】hub.docker.com/repositories/hurong241
【packagist】packagist.org/users/hurong241/packages
站点信息
建站时间:2011年
文章数:607篇
浏览数:941420
粤ICP备18028092号-1  微信:hurong241