打造扛得住的数据库架构读书笔记(四)

MySQL数据库优化策略
数据库架构和sql优化-----MySql服务器配置----物理硬件及操作系统。

数据库架构和SQL优化
数据库设计范式
1)数据库表中所有字段都具有单一属性,列是有基本数据类型构成的,表时简单的二维表。
2)要求一个表只有一个业务主键。
3)消除了第二范式基础上非主属性对主键的依赖(比如主键是学号,学好可以决定学院和学院电话)。
三范式的基本原理是将表拆分。

反范式化就是为了性能和读取效率考虑适当对数据库设计范式进行违反。适当增加数据冗余来换取性能。

范式化的优点:
几乎没有冗余数据,比反范式化的更新操作快,比反范式化的表要小。
缺点:
对于查询时需要关联多个表。
更加难进行索引优化。

反范式化优点:
可以减少表的关联。
可以更好的进行索引优化。
缺点:
会存在数据冗余和数据维护异常。
对数据的修改需要更多的成本。

数据库字段类型选择的原则:
当一个列可以选择多种数据类型时,应该优先考虑数字,其次是日期和二进制,最后才是字符类型。对于相同级别的数据类型,应该优先选择占用空间较小的数据类型。

如何正确的选择整数类型:
根据范围来选择合适的类型
在这里插入图片描述

如何选择正确的实数类型:
在这里插入图片描述

如何选择VARCHAR和CHAR类型:
VARCHAR用于存储变长字符串,只占用必要的存储空间。还会有记录字节长度的字节。小于255需要额外一个字节记录长度,大于 255需要两个字节记录额外的长度。
CHAR是定长的,字符串末尾的空格会被自动删除。最大宽度为255。适合存储长度近似的值,比如MD5,手机号,身份证号,或者长度比较短的字符串,适合存储经常更新的字符串列。

如何存储日期类型:
DATATIME 类型,以YYYY-MM-DD HH:MM:SS 格式存储日期时间,和时区无关。
TIMESATMP类型:时间戳,1970年1月1日到当前的描述。以YYYY-MM-DD HH:MM:SS 的格式显示,占用四个字节。会比DATATIME节省空间,依赖于所指定的时区。
date类型:只存日期,需要空间比较少。
time类型:格式为HH:MM:SS。
不要使用字符串类型来存储日期时间数据(使用日期时间类型占用存储空间要小,可以用来过滤,还有丰富的函数)。

猜你喜欢

转载自blog.csdn.net/bianhao92115/article/details/86598511
今日推荐