新闻详情

新闻详情

首页 / 资讯中心 / 详情

mysql基础(十三)mysql并发参数与锁

发布时间:2026/9/9 12:14:05来源:尧图网络
mysql基础(十三)mysql并发参数与锁
文章目录1 应用优化2 mysql并发参数调整2.1 max_connections2.2 back_log2.3 table_open_cache2.4 thread_cache_size2.5 Innodb_lock_wait_timeout3 MySQL锁3.1 引擎与锁分类3.2 MyISAM表锁3.3 InnoDB行锁3.4 InnoDB表锁3.5 间隙锁Gap Lock与Next-Key锁3.6 查看锁情况1 应用优化1.使用连接池不多说。2.减少对数据库访问三种方式①.少次——能够一次完成的就不要分两次。②.缓存——使用缓存减少对数据库访问。③.负载均衡——可通过主从复制主机增删改从机查询实现读写分离降低单台压力或者使用分布式架构。2 mysql并发参数调整2.1 max_connections此参数控制允许连接到MySql的最大数量默认是151。当状态变量connection_errors_max_connections不为0且一直增长则说明不断有请求因连接数达到最大值而连接失败此时可以考虑增大max_connections。2.2 back_log此参数控制MySQL监听TCP端口时设置的积压请求栈大小也就是连接数量已经达到最大的时候排队的请求数量。如果排队的请求也大到最大排队量back_log会将拒绝排队请求直接报错。如果要在短时间内处理大量连接请求可以考虑增大可排队值back_log。2.3 table_open_cache此参数用来控制所有SQL语句执行线程可打开表缓存的数量在执行语句时每一个线程最少要打开一个表缓存。该参数的值应该根据设置的最大连接数Max_connections以及每个连接执行关联查询中涉及表的最大数量而定。2.4 thread_cache_size此参数控制MySQL缓存客户服务线程的数量也就是已断开客户端对应服务线程的复用缓存用来加快连接速度。线程缓存有空闲线程则直接复用没有则创建新线程。2.5 Innodb_lock_wait_timeout此参数调用InnoDB事务的行锁等待时间。如果要加快响应速度可以调小避免事务长时间挂起。而对于后台运行的批量处理程序可以将行锁的等待时间调大避免发生大的回滚。3 MySQL锁3.1 引擎与锁分类从数据操作粒度来分有行锁和表锁——行锁锁定当前行表锁锁定整个表。从数据操作类型来分有读锁和写锁——读锁针对同一份数据同时进行多个操作互不影响也叫共享锁。写锁在当前操作没完成之间会阻塞其它任何操作也称排它锁。3.2 MyISAM表锁此引擎会自动加读写锁也可以手动加。准备两张myisam存储引擎表总之读锁只阻塞写写锁阻塞读与写。所以MyISAM只适合用来读操作。3.3 InnoDB行锁行锁开销大加锁慢会出现死锁但是锁定粒度小锁冲突概率低并发度高。InnoDB正是因为有了行锁才能支持事务。我们先关闭全局自动提交重启后失效要永久有效须在配置文件中更改-- 关闭当话自动提交,set后缺省值为session。只对本会话有效setautocommit0;-- 关闭全局自提交,对当前对话无效setGLOBALautocommit0;-- 查看会话自动提交设置缺省值为sessionshowVARIABLESLIKEautocommit;-- 查看全局自动提交设置showglobalVARIABLESLIKEautocommit;3.4 InnoDB表锁如果不通过条件检索数据那么InnoDB会进行全表扫描并对扫描到的每一行都加上行锁实际效果等同表锁。3.5 间隙锁Gap Lock与Next-Key锁REPEATABLE READ隔离级别下InnoDB为了解决幻读问题引入了间隙锁。间隙锁是对索引记录之间“间隙”GAP的锁也包括第一条索引记录前或最后一条记录后的间隙。它的唯一目的是阻止其他事务向该间隙插入新记录。需要特别注意的是间隙锁并不仅限于范围查询。在对非唯一索引进行等值查询时同样可能产生间隙锁。Next-Key锁是InnoDB的默认行锁算法它是 “记录锁 该记录前面的间隙锁” 的组合。在执行锁定读如SELECT … FOR UPDATE或UPDATE、DELETE语句时InnoDB默认会在扫描到的索引记录上使用Next-Key锁。简单来说间隙锁是锁住一个“范围”而 Next-Key锁 是“记录 它前面的间隙”是组合锁。3.6 查看锁情况行锁争用情况总结1.尽量走索引InnoDB 不会因为行锁过多自动“升级”为表锁但无合适索引导致全表扫描时可能锁住大量甚至全部记录实际表现类似整表被阻塞。2.合理设计索引缩小锁的范围。3.尽量减少索引条件与匹配范围避免间隙锁。4.控制事务大小减少锁定资源量和时长。5.在不和业务需求冲突的情况下尽量使用低级别隔离。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

magnitude计算全攻略:从向量模长到FFT幅值谱的工程实践 2026/9/9 12:50:09

magnitude计算全攻略:从向量模长到FFT幅值谱的工程实践

1. 先搞清楚magnitude的本体:一个贯穿理工科的“大小”量做数据分析和信号处理这几年,我几乎隔三差五就会遇到“magnitude”这个词。它不是一个冷门的分析工具,也不是某个软件的特有操作,而是物理、数学、工程、计算机共用的一套“…

阅读更多 →
非遗×3D打印:从鲁班锁到纹样玩具的完整制作链路 2026/9/9 12:50:09

非遗×3D打印:从鲁班锁到纹样玩具的完整制作链路

很多做非遗文创的朋友第一次看到“3D打印玩具”这个概念,第一反应是:这会不会把传统手艺做“死”?手工的温度、材质的肌理、师父的刀法,机器怎么代替得了?但换一个角度想:非遗传承真正缺的,从来…

阅读更多 →
opencode实战:开源AI编程代理从安装到项目接手全指南 2026/9/9 12:50:09

opencode实战:开源AI编程代理从安装到项目接手全指南

我最初注意到 opencode,是因为团队里有人抱怨 Claude Code 的命令行交互太封闭,想换一个更开放、能自己改的 AI 编程工具。当时我顺手在 GitHub 上搜了一圈,发现这个项目已经悄悄涨了不少 Star,社区里也有人拿它和 Codex、Claude …

阅读更多 →
Halo 主题卸载保护:基于 Theme 状态调和与本地开发检测的双重确认机制 2026/9/9 12:50:09

Halo 主题卸载保护:基于 Theme 状态调和与本地开发检测的双重确认机制

Halo 主题卸载保护:基于 Theme 状态调和与本地开发检测的双重确认机制 【免费下载链接】halo Halo 是一款强大易用的开源建站工具,从个人博客、知识库,到企业官网、在线商城,Halo 都能助您轻松实现,一站式满足您的多样…

阅读更多 →
开源AI编码代理opencode:终端里的自主编程助手实战指南 2026/9/9 12:50:09

开源AI编码代理opencode:终端里的自主编程助手实战指南

1. opencode 是什么,为什么我把它换成了主力 AI 编码工具 先说结论:opencode 是一个开源、跑在终端里的 AI 编码代理(coding agent)。它不是那种“你在 IDE 里装个插件、选中代码点一下生成注释”的辅助工具,而是能自己…

阅读更多 →
鱼眼视频流实时矫正实践:从YUV420p到完整流水线 2026/9/9 12:47:09

鱼眼视频流实时矫正实践:从YUV420p到完整流水线

简介:鱼眼相机项目围绕 YUV420p 流媒体的鱼眼视频实时矫正展开,面向具备 C 与图形学基础、希望深入 GPU 图像处理的开发者。它利用 GLSL 着色器在 GPU 上做逐像素校正,能有效改善鱼眼镜头带来的边缘畸变,适用于 AR/VR、无人机航拍…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞