mysql 数据结构设计_MYSQL 设计数据结构需注意问题
在设计数据结构时需要注意:
1、永远为表设定一个自增主键ID,并尽可能的利用此ID进行构造
(在配置表中)尽可能的用上unsigned,并尽可能的小。能用tinyint(1字节)、smallint(2字节)、mediumint(3字节),就不用int(4)字节
2、尽可能的使用ENUM,比如性别,属相等,因ENUM是保存为tinyint
3、尽可能的使用not null,除非业务需要使用null
4、把IP地址存为int unsigned ,使用 inet_aton() 和 inet_ntoa() 来进行转换
5、尽量使用短的字符类型
6、尽量使用固长的字符类型,当表中所有的字段都是固定长度,DB 会认为表是static类型,如果有固定长度和非固定长度的字段尽量采用垂直分割,将表分割。
静态类型的表有以下特点:
a、非常快,由于是固定长度,DB很容易计算出下行的偏移量,所以读取速度会很快,如果不是固定长度,要找到下行数据必须找到主键(这也是主键使用自增ID的重要的原因)
b、容易缓存
c、崩溃后容易重建,因为行是在固定位置
d、比变长需要更多的磁盘空间
e、一般不用优化,除非删除了大量数据,采用optimize table 进行优化
7、垂直分割是把1张表的信息分割成几张表,应注意以下几点
a、尽量把固长和非固定长度的字段分离
b、经常使用和非经常使用的字段分离
c、频繁更新和更新不频繁的字段分离(比如登录时间等),因为表的更新会释放掉表的缓存,如果更新频繁,基本上就用不上缓存。
d、拆分出去的字段,不能经常做join操作,否则性能比不拆分还要下降的多。
9、水平分割
a、设计时备份表和业务表进行分库。这样在做数据库迁移、备份、恢复时往往会有比较好的效果
b、数据量很大的时候,可以将一张表的数据分发到小表中去,以提高插入,查询的效率(比如原始数据的汇集)
8、选择正确的存储引擎
a、MYISAM 适合用在业务量小,更新操作不频繁且不需要事务的应用
b、INNODB 使用在更新操作频繁,需要事务的应用
收藏邀请
mysql 数据结构设计_MYSQL 设计数据结构需注意问题相关推荐
- mysql数据迁移工具_MySQL数据迁移工具的设计与实现
一.背景 MySQL作为最流行的关系型数据库产品之一,当数据规模增大遭遇性能瓶颈时,最容易想到的解决方案就是分库分表.无论是进行水平拆分还是垂直拆分,第一步必然需要数据迁移与同步.由此可以衍生出一系列 ...
- 03 mysql数据查询_MySql学习day03:数据表之间的连接、查询详解
主键: 关键字:primary key 特点:不能为null,并且唯一. 主键分类: 逻辑主键:例如ID,不代表实际的业务意义,只是用来唯一标识一条记录(推荐) 业务主键:例如username,参与实 ...
- mysql数据备份与恢复_MySQL数据备份与恢复
常见的MySQL管工具 mysql 命令行 跨平台 MySQL官方bundle包自带 MySQL-Workbench 图形 跨平台 MySQL官方提供 MySQL-Front 图形 Windows 开 ...
- MySQL数据表的设计
MySQL数据表 服务器端数据表的设计 创建表的语句 服务器端数据表的设计 首先就是要解决数据的问题,作为一个聊天系统,我们的服务器端肯定要有用户的信息,比如说账号,用户名,密码等.在登录的时候,我们 ...
- centos mysql数据迁移_Mysql 5.7.17 离线版安装和数据迁移(centos 7)
总结下离线版 MySQL 5.7.17 的安装步骤: 1.从官网下载mysql 离线版版安装包 mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz: 2.上传安装包my ...
- mysql数据控制语言_mysql数据控制语言DCL(Data Control Language)-数据库
编辑推荐: 本文来自于网络,主要介绍了mysql数据控制语言DCL的创建.删除.修改用户密码.授予权限等代码编写. #创建用户 create user '用户名'@'允许登录的地址' identifi ...
- mysql数据恢复工具_mysql文件恢复软件|Mysql数据库修复工具(Recovery for MySQL)下载 V2.7.22255.1 官方版 - 比克尔下载...
Recovery for MySQL是一款Mysql数据库修复工具,也可以用来恢复mysql文件,支持3.x.4.x.5.x等多个版本,支持myd和myi文件,它可以将检索到的数据保存至SQL脚本中, ...
- mysql三范式_MySQL设计之三范式的理解
转自:https://blog.csdn.net/wangqyoho/article/details/52900585 设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要 ...
- mysql 数据相加_mysql,php_mysql查询将两列数值相加问题,mysql,php,sql - phpStudy
mysql查询将两列数值相加问题 如图所示: 我希望加一个total_price列,值为price+price2的和,这个应该怎么写SQL: select * from ims_goods_1 whe ...
最新文章
- liunx 分割合并文件
- 未清采购订单关闭最全的方法
- 3dmax模型转换为*.FLT格式的建模要点
- cakephp下整合kindeditor和ckplayer
- 区块链工作笔记0001---以太坊流程简介
- echarts时间散点图_ECharts 实现地图散点图(下)
- cups支持的打印机列表_在Mac上怎样更新打印机软件?
- 安装Ubuntu下的开发工具
- 前台如何正确接收流信息_如何绕过 Android 8.0 startService 限制?
- spark rdd详解一(rdd入门)
- 《增长黑客》节选与笔记
- 2021-2027全球与中国铂金芯片温度传感器市场现状及未来发展趋势
- 智能家居APP的竞品分析报告(米家)
- 「Android高级工程师」BAT大厂面试基础题集合-下-Github标星6-5K
- 2019年4月27号,下雨杂谈
- @Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED) 和 @NotAudited
- 7.9.9路由Routers
- 训练SSD时,viz报错
- 怎么给图片换背景?点开收货一些新方法
- signature=b8cae5ae994df93c3fedf622c2a51ac5,javascript中的Base64、UTF8编码与解码详解