欢迎大家来到IT世界,在知识的湖畔探索吧!
由于mysql是基于行(row)的数据库,数据库在操作IO的时候是以page的方式。而数据库操作中最为耗时的是IO处理,大部分数据库操作90%以上的时间都花在IO读写上面。所以尽可能减少IO读写量。
因为数据库的大部分操作都是在IO读写上面,所以选择最优的字段数据类型,可以减少IO读写量
1、数字类型:
非万不得已不要使用double,不仅仅是存储长度的问题,同时还存在精确性的问题。同样,固定精度的小数,也不建议使用decimal,建议乘以固定倍数转换成整数存储,可以大大节省存储空间,且不会带来任何附加维护成本(例如在数据库中金额都是以分为单位存储),在数据库中保存身高,都是以厘米为单位。
对应整数的存储,在数据量较大的情况下,建议区分开tinyint/int/bigint的选择,因为三者占用的存储空间也有很大的差别。
2、字符类型:
非万不得已不要使用text数据类型,其处理方式决定了他的性能要低于char和varchar类型的处理。定长字段,建议使用char类型,不定长字段尽量使用varchar,且仅仅设定适当的最大长度。
3、时间类型:
尽量使用timestamp类型,因为存储空间只需要datetime类型的一半。对于只需要精确到某一天的数据,建议使用date类型,因为它的存储空间只需要3个字节,比timestamp还少。(例如:存储生日字段,我们只需要存储到天,使用date类型最好,而对于平时的创建和更新时间字段,则使用timestamp类型,但是如果时间范围在’1970年’ 到 ‘2038年’之外的,则需要使用datetime类型。)
4、blob:
强烈反对在数据库中存放BLOB 类型数据(能用来保存二进制,如图片),用更适合的工具,才可以发挥到极致。例如我使用到了FastDFS,阿里的OSS。而且BLOB 类型数据的访问不是线程安全的,需要为其单独分配相应的数据库资源,并在操作完成后释放资源。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/103187.html