第六章 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
相关文章
|
5月前
|
SQL 人工智能 关系型数据库
【DDIA笔记】【ch2】 数据模型和查询语言 -- 文档模型中Schema的灵活性
【6月更文挑战第8天】网状模型是层次模型的扩展,允许节点有多重父节点,但导航复杂,需要预知数据库结构。关系模型将数据组织为元组和关系,强调声明式查询,解耦查询语句与执行路径,简化了访问并通过查询优化器提高效率。文档型数据库适合树形结构数据,提供弱模式灵活性,但在Join支持和访问局部性上不如关系型。关系型数据库通过外键和Join处理多对多关系,适合高度关联数据。文档型数据库的模式灵活性体现在schema-on-read,写入时不校验,读取时解析,牺牲性能换取灵活性。适用于不同类型或结构变化的数据场景。
49 0
|
6月前
|
数据可视化 Linux API
如何在Linux使用docker部署Swagger Editor并实现无公网IP远程协同编辑API文档
如何在Linux使用docker部署Swagger Editor并实现无公网IP远程协同编辑API文档
|
6月前
|
存储 自然语言处理 Java
ResourceBundle.getBundle()来读取自定义的properties配置文件
ResourceBundle.getBundle()来读取自定义的properties配置文件
181 1
|
Kubernetes 调度 Perl
Pod的自动扩缩容
Pod的自动扩缩容
131 1
|
算法 Java 机器人
手把手教你提交Jar包到Maven公共仓库
在上一篇文章中,我介绍了自己的SpringBoot Starter项目,可以让我们使用注解的方式轻松地获取操作日志,并推送到指定数据源。 之前,我的项目开源在Github上,大家想要用我的项目,还得把Github仓库配置到Maven的Setting.xml里,一点也不方便。 本文,就整理一下我把项目上传到公共Maven仓库的过程,当做一篇教程文章。
2388 0
|
存储 XML SQL
Activiti工作流框架学习笔记(一)之通用数据表详细介绍
Activiti工作流框架学习笔记(一)之通用数据表详细介绍
482 1
|
存储 SQL 缓存
【数据库设计与实现】第三章:数据后像与前滚
数据后像与前滚设计原则事务的持久性要求事务提交时本次事务的修改必须完成持久化工作,而事务修改的block或page在大部分场景下并不是连续的,在持久化设备上表现为大量的随机IO。通过记录后像,可以将随机IO转换为对持久化设备更为有利的顺序IO,并将dirty block或dirty page(指被修改过但尚未完成持久化的block或page)的多次修改合并,节约block或page的持久化次数。后
【数据库设计与实现】第三章:数据后像与前滚
|
3月前
|
关系型数据库 PostgreSQL
【一文搞懂PGSQL】5. 流复制
PostgreSQL流复制架构支持多种常见配置,包括基本的主从复制、结合PGPool-II的读写分离以及使用repmgr实现高可用性。基础环境中,主节点与备用节点分别位于不同IP。配置涵盖创建复制用户、调整核心参数以支持流复制,并确保归档与日志功能正常工作。从节点需通过备份恢复并配置为待机模式,以实现数据同步。此外,还介绍了如何验证复制状态及手动切换主从节点的方法,以及同步复制参数的配置细节。
|
3月前
|
关系型数据库 数据库 PostgreSQL
【一文搞懂PGSQL】1.简述和安装
PostgreSQL(简称PG或PGSQL)是一款使用C和C++语言开发的开源关系型数据库管理系统。其官网为 [www.postgresql.org](https://www.postgresql.org/),中文社区为 [www.postgres.cn](http://www.postgres.cn)。PG采用了多层逻辑结构:第一层为实例,第二层为数据库(每个实例下可有多个相互独立的数据库),第三层为Schema(每个数据库下包含多个Schema)。每个Schema下可以创建表、视图、索引、函数等数据库对象。
|
3月前
|
安全 Java 关系型数据库
毕设项目&课程设计&毕设项目:基于springboot+jsp实现的健身房管理系统(含教程&源码&数据库数据)
本文介绍了一款基于Spring Boot和JSP技术实现的健身房管理系统。随着健康生活观念的普及,健身房成为日常锻炼的重要场所,高效管理会员信息、课程安排等变得尤为重要。该系统旨在通过简洁的操作界面帮助管理者轻松处理日常运营挑战。技术栈包括:JDK 1.8、Maven 3.6、MySQL 8.0、JSP、Shiro、Spring Boot 2.0等。系统功能覆盖登录、会员管理(如会员列表、充值管理)、教练管理、课程管理、器材管理、物品遗失管理、商品管理及信息统计等多方面。
下一篇
无影云桌面