【七天深入MySQL实战营】答疑汇总Day5 MySQL 开发规约实战

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
简介: 【开营第五课】【MySQL 开发规约实战】讲师:芦火,阿里云运维专家。课程内容:SQL语句编写规范;事务的使用与优化;开发中的常见问题与最佳实践。答疑汇总:特别感谢班委@陈亮 同学

【开营第五课】【MySQL 开发规约实战】

讲师:芦火,阿里云运维专家。

课程内容:SQL语句编写规范;事务的使用与优化;开发中的常见问题与最佳实践。

答疑汇总:特别感谢班委@陈亮 同学

Q1:根据主键进行update ,只修改一个字段,经常出现超过0.5秒的情况,请问这样的问题怎么排查?

A1update慢通常是阻塞问题比较多,大多数是长事务导致,建议看实例级的性能,关注锁的性能,IO争抢、内存争抢,多从资源上分析是否有问题。如果是主键基本上不是索引的问题。

 

Q2:老师好,请问事务发生多层循环调用,怎么保证强一致性?

A2mysql嵌套事务不支持,在实际场景尽量从开发级别去保证。

 

Q3insert插入过慢,几百条记录要插几秒中,有哪些排查思路?

A3:插入问题通常不会因为锁问题,在主从架构通常半同步,要去看是否有DML。可以考虑把从库异步关掉再看从库情况,尽量不要在循环里写一个事务,需要按方法论进行排查。

 

Q4:数据表字段名大家都要求用小写+下划线 ,统一用驼峰行不行?会出现什么大小写问题?

A4:开发规范适合公司内部使用就OK,内部风格统一就好。没有强制说必须使用哪一种;大小写的问题要看开发语言对大小写是否敏感。

 

Q5:从5.7迁到8.0,有哪些需要注意的点?单实例最多可以建多少个库呢?

A5:从5.78.0,都要注意兼容性的问题,然后验证业务是否正常运行。比如新的关键字,取消的语法,字符集,8.0某些变量取消,8.0order by在索引返回数据方面等等,在课程中有特别讲到,可以再回看一下。

 

Q6mysql 优化时候,比如有时候需要对字段做类型转换或者加函数,走不了索引,除了用虚拟列去优化(耗费空间换时间),还有什么优化思路?

A6:通常虚拟列,日期列,如果是特别复杂的函数也无解。在b-tree索引上基本就是这些用法。

 

Q7:要小表驱动的时候,是要把 ignore 写到 sql 里吗?还有别的方法吗?

A7:建议在SQL中尽量减少带指定业务逻辑,比如索引改名了,会带来索引失效问题。尽量取消强制索引,对开发透明。

 

Q8:怎么优化模糊查询,使用哪个关键字销率比较高?

A8:尽量少用。

 

Q9:开启 optimier_trace 会带来多大的开销,实际环境中应当怎么使用?

A9:可以忽略不计,通常不会在生产环境中一直开启。

 

Q10explainanalyze 会实际执行 sql 吗?

A10:会。Explain不会,它只生成计划树。Explain Analyze 8.0才有,它会实际执行。可以参考官方文档https://dev.mysql.com/doc/refman/8.0/en/using-explain.html

 

Q11mysql memcached 插件成熟吗?生产使用是否合适?

A11:不建议把插件集成到关系型数据库中用,专库专用,缓存用Redis,类似这样。

 

Q12mysql 树结构查询有什么比较好的方案吗?

A12:在8.0里面有cte,之前通常用函数去实现树结构。

 

Q13mysql有无SQL优化建议插件?

A13:建议先了解工具原理和sql原理。

 

Q14mysql开发在表关联方面有什么技巧和需要注意的地方?对于10张表以上的关联大查询,该如何优化或拆分?

A14:在写SQL时要有结果集思维,大表和多表关联如何让结果集最小才是最优考虑的。充分用好index,业务上如果可以分步获取数据,可以考虑拆分。

 

Q15mysql如何分析指定时间段内的历史数据库会话?有无插件可以记录?

A15:有。一些第三方工具可以支持,可以网上找找。阿里云的审计功能非常全,建议先了解。如果自己实现,可以参考一下阿里云的实现。

 

Q16:对于高效SQL编写,有无较好的引导工具可以使用?

A16:建议先了解工具原理和sql原理。

 

Q17:同一条sql主从执行计划一致,执行时间不一致,这种情况如何优化;还有同一条sql主从计划不一致的问题?

A17:基本上不太可能。只可能在某个节点上资源不均匀,数据没有在buffer pool里,冷数据需要走IO看看时间能不能对齐。如果一条sql的主从执行计划不一致基本上统计信息的问题,要去更新统计信息。如果还不准可能就是采样率的问题,因为从库是slave回放可能跟主库的数据分布不一样,可调大采样页数去观察分析。

 

Q18mysqlsave point,算是支持嵌套事务吧?

A18save point是跟开发强相关,跟递归也没有什么相关性。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
22天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
111 1
|
28天前
|
NoSQL 关系型数据库 MySQL
MySQL与Redis协同作战:优化百万数据查询的实战经验
【10月更文挑战第13天】 在处理大规模数据集时,传统的关系型数据库如MySQL可能会遇到性能瓶颈。为了提升数据处理的效率,我们可以结合使用MySQL和Redis,利用两者的优势来优化数据查询。本文将分享一次实战经验,探讨如何通过MySQL与Redis的协同工作来优化百万级数据统计。
57 5
|
1月前
|
SQL JavaScript 关系型数据库
node博客小项目:接口开发、连接mysql数据库
【10月更文挑战第14天】node博客小项目:接口开发、连接mysql数据库
|
1月前
|
架构师 关系型数据库 MySQL
MySQL最左前缀优化原则:深入解析与实战应用
【10月更文挑战第12天】在数据库架构设计与优化中,索引的使用是提升查询性能的关键手段之一。其中,MySQL的最左前缀优化原则(Leftmost Prefix Principle)是复合索引(Composite Index)应用中的核心策略。作为资深架构师,深入理解并掌握这一原则,对于平衡数据库性能与维护成本至关重要。本文将详细解读最左前缀优化原则的功能特点、业务场景、优缺点、底层原理,并通过Java示例展示其实现方式。
87 1
|
1月前
|
SQL 关系型数据库 MySQL
PHP与MySQL协同工作的艺术:开发高效动态网站
在这个后端技术迅速迭代的时代,PHP和MySQL的组合仍然是创建动态网站和应用的主流选择之一。本文将带领读者深入理解PHP后端逻辑与MySQL数据库之间的协同工作方式,包括数据的检索、插入、更新和删除操作。文章将通过一系列实用的示例和最佳实践,揭示如何充分利用这两种技术的优势,构建高效、安全且易于维护的动态网站。
|
23天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第26天】数据库作为现代应用系统的核心组件,其性能优化至关重要。本文主要探讨MySQL的索引策略与查询性能调优。通过合理创建索引(如B-Tree、复合索引)和优化查询语句(如使用EXPLAIN、优化分页查询),可以显著提升数据库的响应速度和稳定性。实践中还需定期审查慢查询日志,持续优化性能。
53 0
|
1月前
|
前端开发 Java 数据库连接
表白墙/留言墙 —— 中级SpringBoot项目,MyBatis技术栈MySQL数据库开发,练手项目前后端开发(带完整源码) 全方位全步骤手把手教学
本文是一份全面的表白墙/留言墙项目教程,使用SpringBoot + MyBatis技术栈和MySQL数据库开发,涵盖了项目前后端开发、数据库配置、代码实现和运行的详细步骤。
51 0
表白墙/留言墙 —— 中级SpringBoot项目,MyBatis技术栈MySQL数据库开发,练手项目前后端开发(带完整源码) 全方位全步骤手把手教学
|
2月前
|
监控 关系型数据库 MySQL
zabbix agent集成percona监控MySQL的插件实战案例
这篇文章是关于如何使用Percona监控插件集成Zabbix agent来监控MySQL的实战案例。
63 2
zabbix agent集成percona监控MySQL的插件实战案例
|
3月前
|
SQL 关系型数据库 MySQL
干货!python与MySQL数据库的交互实战
干货!python与MySQL数据库的交互实战
|
3月前
|
SQL 关系型数据库 MySQL
SQL Server、MySQL、PostgreSQL:主流数据库SQL语法异同比较——深入探讨数据类型、分页查询、表创建与数据插入、函数和索引等关键语法差异,为跨数据库开发提供实用指导
【8月更文挑战第31天】SQL Server、MySQL和PostgreSQL是当今最流行的关系型数据库管理系统,均使用SQL作为查询语言,但在语法和功能实现上存在差异。本文将比较它们在数据类型、分页查询、创建和插入数据以及函数和索引等方面的异同,帮助开发者更好地理解和使用这些数据库。尽管它们共用SQL语言,但每个系统都有独特的语法规则,了解这些差异有助于提升开发效率和项目成功率。
402 0

相关产品

  • 云数据库 RDS MySQL 版
  • 下一篇
    无影云桌面