mysql锁表的原因及mysql行锁

mysql锁表的原因

锁是计算机协调多个进程或线程并发访问某一资源的机制。

在数据库中,除传统的计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供许多用户共享的资源。

如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。

从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。

锁表的原因

1、锁表发生在insert update 、delete 中

2、锁表的原理是 数据库使用独占式封锁机制,当执行上面的语句时,对表进行锁住,直到发生commite 或者 回滚 或者退出数据库用户

第一、 A程序执行了对 tableA 的 insert ,并还未 commite时,B程序也对tableA 进行insert 则此时会发生资源正忙的异常 就是锁表

mysql行锁

只有执行计划真正使用了索引,才能使用行锁:即便在条件中使用了索引字段,但是否使用索引来检索数据是由 MySQL 通过判断不同执行计划的代价来决定的,如果 MySQL 认为全表扫描效率更高,比如对一些很小的表,它就不会使用索引,这种情况下 InnoDB 将使用表锁,而不是行锁。因此,在分析锁冲突时,

可以通过 explain 检查 SQL 的执行计划,以确认是否真正使用了索引

相关推荐
qq_1927798714 小时前
高级爬虫技巧:处理JavaScript渲染(Selenium)
jvm·数据库·python
u01092727114 小时前
使用Plotly创建交互式图表
jvm·数据库·python
爱学习的阿磊14 小时前
Python GUI开发:Tkinter入门教程
jvm·数据库·python
tudficdew15 小时前
实战:用Python分析某电商销售数据
jvm·数据库·python
Fleshy数模15 小时前
CentOS7 安装配置 MySQL5.7 完整教程(本地虚拟机学习版)
linux·mysql·centos
sjjhd65215 小时前
Python日志记录(Logging)最佳实践
jvm·数据库·python
Configure-Handler15 小时前
buildroot System configuration
java·服务器·数据库
2301_8213696116 小时前
用Python生成艺术:分形与算法绘图
jvm·数据库·python
az44yao16 小时前
mysql 创建事件 每天17点执行一个存储过程
mysql
电商API_1800790524716 小时前
第三方淘宝商品详情 API 全维度调用指南:从技术对接到生产落地
java·大数据·前端·数据库·人工智能·网络爬虫