Mysql优化三

数据库结构优化

一 选择合适的数据类型

1 使用可以存下你的数据的最小的数据类型
2 使用简单的数据类型 Int要比varchar类型在mysql处理上简单
3 尽可能的使用not null 自定字段
4 尽量少用text类型 非用不可时最好考虑分表

二 如果用Int类型存储时间

可以利用到两个函数
FROM_UNIXTIME() 可以将Int类型转换成日期时间格式
UNIX_TIMESTAMP() 可以将正常的日期时间转换成Int类型

用bigint存储ip地址 用varchar的需要15个字节 用bigint的话只需要8个字节使用两个函数
INET_ATON() IP地址到整型
INET_NTOA() 整型到Ip地址 互相转换

三 表的范式化和反范式化

范式化是指数据库设计的规范,目前说到范式化一般是指第三设计范式,也就是要求数据表中不存在非关键字段对任意候选关键字段的传递函数依赖则符合第三范式

不符合第三范式要求的表可能存在以下问题
1 数据冗余 比如商品的分类 和分类描述 就是对每一个商品都会进行记录
2 数据插入异常
3 数据的更新异常
4 数据的删除异常

范式化优化 就是如果存在传递依赖 那么就拆表

反范式化优化 是指 为了查询效率的考虑把原本符合第三范式的表适当的增加冗余,以达到优化查询效率的目的,反范式化是一种以空间来换取时间的操作

四表的垂直拆分

就是把原来一个有很多列的表拆分成多个表 这解决了表的宽度问题 通常垂直拆分可以按照以下原则进行
1 把不常用的字段单独存放到一个表中
2 把大字段独立存放到一个表中
3 把经常一起使用的字段放到一起

五表的水平拆分

解决数据量的问题 如果数据量特别大 就可以考虑水平拆分

常见的水平拆分方法为
1 对id进行hash运算 如果要拆分成5个表 则使用mod(ud,5) 取出0-4的值
2 针对不同的hashID把数据存到不同的表中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值