第六章 schema设计与管理

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 第六章 schema设计与管理

选择数据的类型

更⼩的通常更好

简单为好

尽量避免存储null

整数类型

对于计算和存储来说INT(1)和INT(20)是相同的。

实数类型

带有⼩数部分的数字,建议只指定类型,不指定精度。

字符串类型

varchar可变⻓度字符串类型,使⽤1或2字节记录字符串⻓度。

char是固定⻓度,经常修改的情况适⽤于char,因为没有内存碎⽚。

最好分配合适的空间

使⽤VARCHAR(5)和VARCHAR(200)显然⼩的更加节省空间。

BLOB和TEXT类型

BLOB使⽤的是⼆进制数据,没有排序规则和字符集,但

Text类型有字符集和排序规则。不能使⽤索引进⾏排序。

在数据库中存储图像

尽量不要在数据库中存储图像数据,⽽是使⽤单独的图像对象存储,并跟踪图⽚的位置。

MySQL schema设计上的陷阱

太多的列,MySQL的⾏数据转换与列的数量有关。

太多的连接,

null不是虚拟值

MySQL会对null进⾏索引,尽量不使⽤null,使⽤其他值替代null。

⼩结:

简⽽⾔之,让事情尽可能⼩⽽简单是⼀个好主意。

请记住以下指导原则:

● 尽量避免在设计中出现极端情况,例如,强制执⾏⾮常复杂的查询或者包含很多列的表设计(很多的意思是介于有点多和⾮常多之间)。

● 使⽤⼩的、简单的、适当的数据类型,并避免使⽤

NULL,除⾮确实是对真实数据进⾏建模的正确⽅法。

2● 尝试使⽤相同的数据类型来存储相似或相关的值,尤其是在联接条件中使⽤这些值时。

● 注意可变⻓度字符串,它可能会导致临时表和排序的全⻓内存分配不乐观。

● 如果可能的话,尝试使⽤整数作为标识符。

● 避免使⽤⼀些传统的MySQL技巧,例如,指定浮点数的精度或整数的显示宽度。

● ⼩⼼使⽤ENUM和SET类型。它们很⽅便,但也可能被滥⽤,有时还很棘⼿。另外

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
数据安全/隐私保护
经典权限系统设计(五张表)
经典权限系统设计(五张表)
|
1月前
|
存储 SQL 数据处理
数据库设计与管理的要点
在数据库设计和管理过程中,清晰的权限控制、数据处理逻辑、以及高效的查询优化,都是不可或缺的组成部分。
35 2
|
6月前
|
关系型数据库 MySQL 数据库
关系型数据库MySQL开发要点之多表设计案例详解代码实现
关系型数据库MySQL开发要点之多表设计案例详解代码实现
67 2
|
6月前
|
SQL 人工智能 关系型数据库
【DDIA笔记】【ch2】 数据模型和查询语言 -- 文档模型中Schema的灵活性
【6月更文挑战第8天】网状模型是层次模型的扩展,允许节点有多重父节点,但导航复杂,需要预知数据库结构。关系模型将数据组织为元组和关系,强调声明式查询,解耦查询语句与执行路径,简化了访问并通过查询优化器提高效率。文档型数据库适合树形结构数据,提供弱模式灵活性,但在Join支持和访问局部性上不如关系型。关系型数据库通过外键和Join处理多对多关系,适合高度关联数据。文档型数据库的模式灵活性体现在schema-on-read,写入时不校验,读取时解析,牺牲性能换取灵活性。适用于不同类型或结构变化的数据场景。
53 0
|
7月前
|
数据可视化 Linux API
如何在Linux使用docker部署Swagger Editor并实现无公网IP远程协同编辑API文档
如何在Linux使用docker部署Swagger Editor并实现无公网IP远程协同编辑API文档
|
7月前
|
存储 自然语言处理 Java
ResourceBundle.getBundle()来读取自定义的properties配置文件
ResourceBundle.getBundle()来读取自定义的properties配置文件
196 1
|
Kubernetes 调度 Perl
Pod的自动扩缩容
Pod的自动扩缩容
134 1
|
算法 Java 机器人
手把手教你提交Jar包到Maven公共仓库
在上一篇文章中,我介绍了自己的SpringBoot Starter项目,可以让我们使用注解的方式轻松地获取操作日志,并推送到指定数据源。 之前,我的项目开源在Github上,大家想要用我的项目,还得把Github仓库配置到Maven的Setting.xml里,一点也不方便。 本文,就整理一下我把项目上传到公共Maven仓库的过程,当做一篇教程文章。
2402 0
|
存储 SQL 缓存
【数据库设计与实现】第三章:数据后像与前滚
数据后像与前滚设计原则事务的持久性要求事务提交时本次事务的修改必须完成持久化工作,而事务修改的block或page在大部分场景下并不是连续的,在持久化设备上表现为大量的随机IO。通过记录后像,可以将随机IO转换为对持久化设备更为有利的顺序IO,并将dirty block或dirty page(指被修改过但尚未完成持久化的block或page)的多次修改合并,节约block或page的持久化次数。后
【数据库设计与实现】第三章:数据后像与前滚
|
4月前
|
安全 Java 关系型数据库
毕设项目&课程设计&毕设项目:基于springboot+jsp实现的健身房管理系统(含教程&源码&数据库数据)
本文介绍了一款基于Spring Boot和JSP技术实现的健身房管理系统。随着健康生活观念的普及,健身房成为日常锻炼的重要场所,高效管理会员信息、课程安排等变得尤为重要。该系统旨在通过简洁的操作界面帮助管理者轻松处理日常运营挑战。技术栈包括:JDK 1.8、Maven 3.6、MySQL 8.0、JSP、Shiro、Spring Boot 2.0等。系统功能覆盖登录、会员管理(如会员列表、充值管理)、教练管理、课程管理、器材管理、物品遗失管理、商品管理及信息统计等多方面。