数据库设计(二)(引擎,命名规则,字段类型的选择比较)
2017-03-27 00:00
218 查看
MySQL 常用的存储引擎
存储引擎 事务 锁颗粒 主要应用 忌用MyISAM 不支持 支持并发插入的表级锁 SELECT,INSERT 读写操作频繁
MEG_MyISAM 不支持 支持并发插入的表级锁 分段归档,数据仓库 全局查找过多的场景
Innodb 支持 支持MVCC的行级锁 事务处理 无
Archive 不支持 行级锁 日志记录,只支持 需要随即读取更新删除
Ndb cluster 支持 行级锁 高可用性 大部分应用
MyISAM 5.5默认引擎 读写高效,写的时候要锁表,量大容易阻塞
Innodb 阻塞更少
Ndb cluster MySQL集群
表及字段的命名规则
所有对象命名应该遵循的原则:1.可读性
使用大写和小写来格式化的库对象名以获得良好的可读性。
例如:使用CustAddress而不是custaddress来提高可读性
(这里要注意有些DBMS系统对表名的大小写敏感设置)
2.表意性
对象的名字应该能描述它所标识的对象。
例如:对于表,表的名称应该能够体现表中存储的数据内容;
对于存储过程,存储过程名称应该能够体现存储过程的功能。
3.长明原则
尽可能少使用或者不使用缩写,
适用于数据库(DATABASE)名之外的任一对象
字段类型的选择
生日:1978-03-01Char(10)三 / varchar(20)四 / Datetime 二 / Int 一
原则:列的数据类型一方面影响数据存储空间的开销,
另一方面也会影响数据查询性能。当一个列可以选择多种数据类型时,
应该优先考虑数据类型,其次是日期或者二进制类型,最后是字符类型。
对于相同级别的数据类型,应该优先选择占用空间小的数据类型。
列类型 | 存储空间
TINYINT 1字节
SMALLINT 2字节
MEDIUMINT 3字节
INT 4字节
BIGINT 8字节
DATE 3字节
DATETUNE 8字节
TIMESTANP 4字节
CHAR(M) M字节,1<= M <= 255
VARCHAR(M) L+1字节,在此L <= M 和 1 <= M <= 255
以上选择原则主要是从下面两个角度考虑:
1.在对数据进行比较(查询条件,JOIN条件及排序)操作时:
同样的数据,字符处理往往比数字处理慢。
2.在数据库中,数据处理以页为单位,列的长度越小,利于性能提升。
具体选择:
char/varchar 如何选择
原则:
1.如果列中要存储的数据长度差不多一致的,应该选择考虑用char;否则考虑用varchar
2.如果列中的最大数据长度小于50Byte,则一般考虑用char。
(当然,如果这个列很少用,则基于节省空间和减少I/O的考虑,还是可以选择用varchar)
3.一般不宜定义大于50Byte的char类型列。
utf8 = 1字符 = 3字节
decimal与float 如何选择
原则:
1.decimal用于存储精确数据,而float只能用于存储非精确数据
故精确数据只能选择用decimal类型。
2.由于float的存储空间开销一般比decimal小(精确到7位小数只需要4个字节,而精确到15位小数只需要8字节)
故非精确数据优先选择float类型。
时间类型如何存储
1.使用int来存储时间字段的优缺点
优点:字段长度比datetime小。
缺点:使用不方便,要进行函数转换。
限制:只能存储到2018-1-19 11:14:07即2^32为2147483648
2.需要存储的时间粒度
年月日小时分秒周
总结:如果不经常查询出来展示的,可以使用int即可,
如果是需要经常查询出来判断或者什么的还是存datetime方便,不需要转换。
=====未完待续
相关文章推荐
- c#Winform程序调用app.config文件配置数据库连接字符串 SQL Server文章目录 浅谈SQL Server中统计对于查询的影响 有关索引的DMV SQL Server中的执行引擎入门 【译】表变量和临时表的比较 对于表列数据类型选择的一点思考 SQL Server复制入门(一)----复制简介 操作系统中的进程与线程
- [FxCop.设计规则]10. 类型应该被声明在命名空间中
- C#中常用的数据类型命名规则
- CRM中选择一个lookup类型带出该记录其他字段的值
- 类型作比较时的规则
- 数据类型的比较规则的注意事项
- [FxCop.设计规则]5. 避免命名空间中包含太少的类型
- Agg vs. Cairo 二维绘图引擎之比较和选择
- MySQL存储引擎选择和比较
- 比较详细的MySQL字段类型说明
- 在数据库开发过程中,数据库、表、字段、视图、存储过程等的命名规则
- [FXCOP.设计规则]5. 避免命名空间中包含太少的类型
- 了解MOSS2007 内容类型ID(Content Type IDs)命名规则
- C#编程命名规则(二、控件和数据类型命名)
- PFC的数据类型及命名规则
- [FxCop.设计规则]10. 类型应该被声明在命名空间中
- C# 中常用数据类型与控件类型的命名规则
- C# 中常用数据类型与控件类型的命名规则
- 数据库设计的一般命名规则
- 数据库表、视图、存储过程、函数、字段的命名规则