MySQL锁表
来源:互联网 发布:5元已备案域名批发购买 编辑:程序博客网 时间:2024/06/10 01:36
1、锁:计算机协调多个进程或线程并发访问某一资源的机制
2、MySQL锁:
不同的存储引擎支持不同的锁机制
1)页级锁:引擎DBD(也支持表级锁)
开销和枷锁时间结余表锁和行锁间;会出现死锁;锁定力度介于表锁和行锁间,并发度一般
2)表级锁:引擎MyISAM、MEMORY
锁住整个表,可同时读,写不行
开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突概率最高,并发度最低
适合以查询为主,只有少量按索引条件更新数据的应用
模式:表共享读锁、表独占写锁
3)行级锁:引擎INNODB(默认行级锁,也支持表级锁)
单独的一行记录加锁
有索引情况下为行锁,无索引则为表锁
开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突概率最低,并发度也最高
适合有大量按索引条件并发更新少量不同的数据,同时又有并发查询的应用
*注:事务
是由一组SQL语句组成的逻辑处理单元,四个属性:
原子性(Atomicity):事务是一个原子操作单元,其对数据的修改,要么全部执行,要么全都不执行;
一致性(Consistent):在事务开始和完成时,数据都必须保持一致状态;
隔离性(Isolation):数据库系统提供一定的隔离机制,保证事务在不受外部并发操作影响的“独立”环境执行;
持久性(Durable):事务完成之后,它对于数据的修改是永久性的,即使出现系统故障也能够保持。
InooDB两种模式的行锁:
1)共享锁:允许一个事务去读一行,阻止其他事务获得相同数据集的排他锁。 ( Select * from table_name where ……lock in share mode)
2)排他锁:允许获得排他锁的事务更新数据,阻止其他事务取得相同数据集的共享读锁和 排他写锁。(select * from table_name where…..for update)
为了允许行锁和表锁共存,实现多粒度锁机制;同时还有两种内部使用的意向锁(都是表锁),分别为意向共享锁和意向排他锁。
InnoDB行锁是通过给索引项加锁来实现的,即只有通过索引条件检索数据,InnoDB才使用行级锁,否则将使用表锁!
- MySql 锁表
- mysql锁表
- mySQL锁表
- mysql 锁表
- MySQL锁表
- MySQL锁表
- mysql锁表
- MySQL 锁表
- mysql 锁表
- 边学边用Mysql(1):锁表
- 关于MySQL锁表
- MySql 锁表 查找 命令
- mysql innodb update 锁表
- Mysql
- MySql
- MYSQL
- MySQL
- mysql
- MongoDB一些进阶操作(索引,批量操作,分片)
- MySQL存储引擎
- 解决ClickableSpan中点击后ListView中item的长按冲突的问题
- 得到.crash 后的处理
- PHP$a[]和$a的区别
- MySQL锁表
- Ubuntu 14.04安装Chromium浏览器并添加Flash插件Pepper Flash Player
- 前端知识结构图谱
- ctags使用详解
- java内存机制
- RecyclerView的使用
- android 输入框EditText禁止输入Emoji表情符
- JavaScript学习笔记之一
- 磁盘满了导致OpenStack虚拟机异常