三、MYSQL的选择

本文探讨了数据库设计中的关键因素,包括选择代理主键以减少业务耦合,优化维护;建议根据实际需求选择字符集,避免不必要的存储空间浪费;并强调了存储引擎选择的重要性,以及如何通过数据冗余和表拆分来提升性能。此外,还提到适当的数据冗余可以减少IO操作,提高缓存命中率,而适当拆分大字段能增强系统效率。
摘要由CSDN通过智能技术生成

主键的选择

代理主键

与业务无关,无意义的数字序列

自然主键

事物属性中的自然唯一标识

推荐使用代理主键

  • 他们不与业务耦合,因此更易于维护
  • 一个大多数表,最好是全部表,通用的键策略能够减少需要编写的源码数量,减少系统的总体拥有成本

字符集的选择

  • 纯拉丁字符能表示的内容,没必要选择 Latin1之外的其他字符编码,因为这会节省大量的存储空间
  • 如果我们可以确定不需要存放多种语言,就没必要非得使用UTF-8或者其他UNICODE字符类型,这会造成大量的存储空间浪费
  • MYSQL的数据类型可以精确到字段,所以当我们需要大型数据库中存放多字节数据的时候,可以通过对不同表不同字段使用不同的数据类型来较大程度较少数据存储量,进而降低IO操作次数并提高缓存命中率

存储引擎的选择

适当的数据冗余

  • 被频繁引用只能通过Join 2张(或者更多)打表的方式才能得到的独立小字段
  • 这样的场景由于每次join 仅仅只是为了取得某个小字段的值,join到的记录又大,会造成大大量不必要的IO,完全可以通过空间换区时间的方式来优化,不过,冗余的同时需要确保数据的一致性不会遭到破坏,确保更新冗余字段也被更新

适当拆分

当我们的表存在类似于TEXT或者是很大的VARCHAR类型的大字段的时候,如果我们大部分访问这张表的时候都不需要这个字段,我们就该义无反顾的将其拆分到另外独立的表中,以减少常用数据占用的存储空间,这样做的一个明显的好处就是每个数据块中可以存储的数据条数可以大大增加,既减少物理IO次数,也能大大提高内存中的缓存命中率

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值