【MySQL数据库开发设计规范】之基础规范

2024-05-09 20:44

本文主要是介绍【MySQL数据库开发设计规范】之基础规范,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

欢迎点开这篇文章,自我介绍一下哈,本人笔名姑苏老陈,是一个JAVA开发老兵。

本文收录于 《MySQL数据库开发设计规范》专栏中,该专栏主要分享一些关于MySQL数据库开发设计相关的技术规范文章,定期更新,欢迎关注,谢谢 :-)

文章目录

    • 一、前言
    • 二、基础规范
    • 三、总结

一、前言

在我们对数据库技术方案设计的时候,我们是否有自己的设计理念或者原则,还是更多的依据自己的直觉去设计,是否曾经懊悔线上发生过的一次低级故障,可能稍微注意点就可以避免,是否想过怎么才能很好的避免,规范的价值正是我们工作的检查清单,需要我们不断从错误中积累有效经验来指导未来的工作。

本文介绍MySQL数据库开发设计规范之基础规范。

PS:以下规范在大型互联网公司经过了充分的验证,尤其适用于并发量大、数据量大的业务场景。

在这里插入图片描述

二、基础规范

1.【推荐】尽量不在数据库做运算,复杂运算需移到业务应用里完成;

2.【推荐】拒绝大sql语句、拒绝大事务、拒绝大批量,可转化到业务端完成;
说明:大批量操作可能会造成严重的主从延迟,binlog日志为row格式会产生大量的日志;

3.【推荐】避免使用存储过程、触发器、函数等,容易造成业务逻辑与DB耦合;
说明:数据库擅长存储与索引、要解放数据库CPU,将计算转移到服务层、也具备更好的扩展性;

4.【强制】数据表、数据字段必须加入中文注释;
说明:后续维护的同学看到后才清楚表是干什么用的;

5.【强制】不在数据库中存储图片、文件等大数据;
说明:大文件和图片需要储在文件系统,比如阿里云OSS中;

6.【推荐】对于程序连接数据库账号,遵循权限最小原则;
说明:程序使用数据库账号只能在一个DB下使用,不准跨库使用,原则上不准分配drop权限;

7.【推荐】数据库设计时,需要问下自己是否对以后的扩展性进行了考虑;

8.【推荐】利用 pt-query-digest 定期分析slow query log并进行优化。或者利用阿里云RDS数据库自带的慢SQL监控功能。
说明:pt-query-digest是用于分析mysql慢查询的一个工具,它可以分析binlog、General log、slowlog,并且统计出各查询的执行时间、次数、占比等,可以借助分析结果找出问题进行优化。

9.【推荐】使用内网域名而不是ip连接数据库;
说明:推荐使用内网域名而不是ip连接数据库,使用域名可以更方便地管理数据库连接。当数据库服务器的IP地址发生变化时,我们只需要修改域名解析即可,不需要修改应用程序的配置文件;

10.【推荐】如果数据量或数据增长在前期规划时就较大,那么在设计评审时就应加入分表策略;
说明:分表策略是数据库性能优化的重要手段之一,它可以通过将数据分散到多个表中来减少单个表的大小和负载,从而提高查询性能。在MySQL中,常见的分表策略包括垂直分表(即按列分)和水平分表(即按行分)。

垂直分表:将一个包含多个列的大表分割成多个小表,每个小表包含原始表的一部分列。

水平分表:将数据行分散到不同的表中。比如,一个简单的水平分表示例,假设我们有一个用户表users,我们将根据用户ID进行分表。

11.【推荐】要求所有研发SQL关键字全部是小写,每个词只允许有一个空格;

三、总结

以上介绍了在进行MySQL数据库开发设计时,可以遵循的一些基础的技术规范。希望对大家有帮助,谢谢 :-)

附本文参考资料:

  • 阿里云官方知乎:https://www.zhihu.com/org/a-li-yun-97-77
  • 阿里云开发者官方社区:https://developer.aliyun.com/
  • 阿里开发者官方CSDN社区:https://blog.csdn.net/alitech2017?type=blog
  • 阿里云云栖号CSDN:https://blog.csdn.net/yunqiinsight/category_10231626.html
  • 阿里巴巴技术团队发布的《JAVA开发手册》泰山版
  • 阿里云开发者官方微信公众号

如果您对文章中内容有疑问,欢迎在评论区进行留言,我会尽量抽时间给您回复。如果文章对您有帮助,欢迎点赞、收藏。您的点赞,是对我最大的支持和鼓励,谢谢 :-)

这篇关于【MySQL数据库开发设计规范】之基础规范的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/974451

相关文章

MySQL数据库双机热备的配置方法详解

《MySQL数据库双机热备的配置方法详解》在企业级应用中,数据库的高可用性和数据的安全性是至关重要的,MySQL作为最流行的开源关系型数据库管理系统之一,提供了多种方式来实现高可用性,其中双机热备(M... 目录1. 环境准备1.1 安装mysql1.2 配置MySQL1.2.1 主服务器配置1.2.2 从

SpringBoot基于注解实现数据库字段回填的完整方案

《SpringBoot基于注解实现数据库字段回填的完整方案》这篇文章主要为大家详细介绍了SpringBoot如何基于注解实现数据库字段回填的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以了解... 目录数据库表pom.XMLRelationFieldRelationFieldMapping基础的一些代

从基础到高级详解Go语言中错误处理的实践指南

《从基础到高级详解Go语言中错误处理的实践指南》Go语言采用了一种独特而明确的错误处理哲学,与其他主流编程语言形成鲜明对比,本文将为大家详细介绍Go语言中错误处理详细方法,希望对大家有所帮助... 目录1 Go 错误处理哲学与核心机制1.1 错误接口设计1.2 错误与异常的区别2 错误创建与检查2.1 基础

一文详解Python如何开发游戏

《一文详解Python如何开发游戏》Python是一种非常流行的编程语言,也可以用来开发游戏模组,:本文主要介绍Python如何开发游戏的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、python简介二、Python 开发 2D 游戏的优劣势优势缺点三、Python 开发 3D

深入理解Mysql OnlineDDL的算法

《深入理解MysqlOnlineDDL的算法》本文主要介绍了讲解MysqlOnlineDDL的算法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小... 目录一、Online DDL 是什么?二、Online DDL 的三种主要算法2.1COPY(复制法)

基于Python开发Windows自动更新控制工具

《基于Python开发Windows自动更新控制工具》在当今数字化时代,操作系统更新已成为计算机维护的重要组成部分,本文介绍一款基于Python和PyQt5的Windows自动更新控制工具,有需要的可... 目录设计原理与技术实现系统架构概述数学建模工具界面完整代码实现技术深度分析多层级控制理论服务层控制注

mysql8.0.43使用InnoDB Cluster配置主从复制

《mysql8.0.43使用InnoDBCluster配置主从复制》本文主要介绍了mysql8.0.43使用InnoDBCluster配置主从复制,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录1、配置Hosts解析(所有服务器都要执行)2、安装mysql shell(所有服务器都要执行)3、

k8s中实现mysql主备过程详解

《k8s中实现mysql主备过程详解》文章讲解了在K8s中使用StatefulSet部署MySQL主备架构,包含NFS安装、storageClass配置、MySQL部署及同步检查步骤,确保主备数据一致... 目录一、k8s中实现mysql主备1.1 环境信息1.2 部署nfs-provisioner1.2.

MySQL中VARCHAR和TEXT的区别小结

《MySQL中VARCHAR和TEXT的区别小结》MySQL中VARCHAR和TEXT用于存储字符串,VARCHAR可变长度存储在行内,适合短文本;TEXT存储在溢出页,适合大文本,下面就来具体的了解... 目录一、VARCHAR 和 TEXT 基本介绍1. VARCHAR2. TEXT二、VARCHAR

MySQL中C接口的实现

《MySQL中C接口的实现》本节内容介绍使用C/C++访问数据库,包括对数据库的增删查改操作,主要是学习一些接口的调用,具有一定的参考价值,感兴趣的可以了解一下... 目录准备mysql库使用mysql库编译文件官方API文档对象的创建和关闭链接数据库下达sql指令select语句前言:本节内容介绍使用C/