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

本文涉及的产品
云原生数据库 PolarDB 分布式版,标准版 2核8GB
云数据库 RDS SQL Server,基础系列 2核4GB
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
简介: 【开营第五课】【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是跟开发强相关,跟递归也没有什么相关性。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
6月前
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
缓存 关系型数据库 MySQL
MySQL索引策略与查询性能调优实战
在实际应用中,需要根据具体的业务需求和查询模式,综合运用索引策略和查询性能调优方法,不断地测试和优化,以提高MySQL数据库的查询性能。
614 66
|
前端开发 关系型数据库 MySQL
PHP与MySQL动态网站开发实战指南####
【10月更文挑战第21天】 本文将深入浅出地探讨如何使用PHP与MySQL构建一个动态网站,从环境搭建到项目部署,全程实战演示。无论你是编程新手还是希望巩固Web开发技能的老手,都能在这篇文章中找到实用的技巧和启发。我们将一起探索如何通过PHP处理用户请求,利用MySQL存储数据,并最终呈现动态内容给用户,打造属于自己的在线平台。 ####
525 0
|
10月前
|
SQL 存储 关系型数据库
MySQL秘籍之索引与查询优化实战指南
最左前缀原则。不冗余原则。最大选择性原则。所谓前缀索引,说白了就是对文本的前几个字符建立索引(具体是几个字符在建立索引时去指定),比如以产品名称的前 10 位来建索引,这样建立起来的索引更小,查询效率更快!
367 22
 MySQL秘籍之索引与查询优化实战指南
|
安全 关系型数据库 MySQL
PHP与MySQL动态网站开发实战指南####
——深入探索LAMP栈下的高效数据交互与处理技巧 ####
|
关系型数据库 MySQL PHP
PHP与MySQL动态网站开发实战指南####
深入探索PHP与MySQL的协同工作机制,本文旨在通过一系列实战案例,揭示构建高效、稳定且用户友好的动态网站的秘诀。从环境搭建到数据交互,再到最佳实践分享,本文为开发者提供了一条清晰的学习路径,助力其在LAMP(Linux, Apache, MySQL, PHP/Perl/Python)栈上实现技术飞跃。 ####
|
11月前
|
JavaScript 安全 Java
java版药品不良反应智能监测系统源码,采用SpringBoot、Vue、MySQL技术开发
基于B/S架构,采用Java、SpringBoot、Vue、MySQL等技术自主研发的ADR智能监测系统,适用于三甲医院,支持二次开发。该系统能自动监测全院患者药物不良反应,通过移动端和PC端实时反馈,提升用药安全。系统涵盖规则管理、监测报告、系统管理三大模块,确保精准、高效地处理ADR事件。
507 1
|
监控 前端开发 Java
【技术开发】接口管理平台要用什么技术栈?推荐:Java+Vue3+Docker+MySQL
该文档介绍了基于Java后端和Vue3前端构建的管理系统的技术栈及功能模块,涵盖管理后台的访问、登录、首页概览、API接口管理、接口权限设置、接口监控、计费管理、账号管理、应用管理、数据库配置、站点配置及管理员个人设置等内容,并提供了访问地址及操作指南。
|
关系型数据库 MySQL PHP
PHP与MySQL动态网站开发实战指南####
本文深入探讨了PHP与MySQL在动态网站开发中的应用实践,通过具体案例解析如何高效结合这两大技术构建数据驱动的Web应用。文章将涵盖环境搭建、基础语法回顾、数据库设计与操作、用户注册与登录系统实现等关键步骤,旨在为开发者提供一个从零到一的项目实战路径,展示PHP与MySQL协同工作的强大能力。 ####
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
1150 1

相关产品

  • 云数据库 RDS MySQL 版
  • 推荐镜像

    更多