mysql的数据类型以及性能优化
来源:互联网 发布:会员积分系统源码 编辑:程序博客网 时间:2024/05/16 04:14
最近想在建mysql数据库的时候就考虑到一些性能方面的事情。怎么样才能在建表的时候就提升整张表的性能呢。唯有在数据类型上下点功夫了。
一、mysql建表的数据类型标准
1、选用占字节较小的
一般情况下,应该尽量使用可以正确存储数据的最小数据类型。更小的数据类型通常更快,因为他们占用更少的磁盘、内存和CPU缓存,并且处理时需要的CPU周期也更少。
2)简单就好
简单数据类型的操作通常需要更少的CPU周期
3)尽量避免NULL
许多表都包含可为NULL(空值)的列,记事应用程序并不需要保存NULL也是如此,这是因为可为NULL是列的默认属性。通常情况下,最好制定列为NOT NULL,除非真的需要存储NULL。
二、mysql的int,bigint,smallint和tinyint
1、int
从 -2^31 (-2,147,483,648) 到 2^31 – 1 (2,147,483,647) 的整型数据(所有数字)。存储大小为 4 个字节。int也是最常用的,存储整型的一个数据类型。
2、bigint
从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字)。存储大小为 8 个字节。
有时候我们用int存储数据的时候,会出现存储数据恒为:2147483647的情况,这是因为我们存储的内容已经超过了int类型的范围。因此需要用bigint类型来存储。
3、smallint
从 -2^15 (-32,768) 到 2^15 – 1 (32,767) 的整型数据。存储大小为 2 个字节。
顾名思义,这个small是存储更小的内容时候使用的。
4、tinyint
一个微小的整数,支持 -128到127(SIGNED),0到255(UNSIGNED),需要1个字节存储
此类型一般用来存储大小不会超过额定大小的整型。比如存储单个状态值,1,2,3等。用这个类型来存储最为合适。
三、mysql的varchar和char
char属于定长类型,varchar属于非定长类型,varchar属于变长。可能有人会问为什么varchar长度比数据长度大呢?因为VARCHAR保存时用一个字节或两个字节长的前缀+数据。如果VARCHAR列声明的长度大于255,长度前缀是两个字节,否则是一个字节。
由于现在大部分mysql用户使用的都是InnoDB存储引擎,因此建议使用varchar来存储字符串。
原因:对于InnoDB数据表,内部的行存储格式没有区分固定长度和可变长度列(所有数据行都使用指向数据列值的头指针),因此在本质上,使用固定长度的CHAR列不一定比使用可变长度VARCHAR列简单。因而,主要的性能因素是数据行使用的存储总量。由于CHAR平均占用的空间多于VARCHAR,因此使用VARCHAR来最小化需要处理的数据行的存储总量和磁盘I/O是比较好的。
参考链接:http://blog.csdn.net/hsd2012/article/details/51546240
end
- mysql的数据类型以及性能优化
- mysql性能优化之数据类型的选择
- mysql中schema与数据类型优化以及服务器性能检测
- 高性能的MySQL(4)数据类型的优化
- 高性能MySql进化论(一):数据类型的优化_上
- 高性能MySql进化论(二):数据类型的优化_下
- 高性能MySql进化论(二):数据类型的优化_下
- 高性能MySql进化论(一):数据类型的优化_上
- 高性能MySql进化论(一):数据类型的优化_上
- 高性能MySql进化论(二):数据类型的优化_下
- 高性能MySql进化论(一):数据类型的优化_上
- 高性能mysql(三)选择优化的数据类型
- 高性能mysql(一)优化数据类型
- 高性能MySQL-Schema与数据类型优化
- 【MySQL】MySQL的数据类型优化
- MySQL的性能优化
- MySQL的性能优化
- mysql分解连接的总结(来自于高性能MySQL以及自己网站性能优化)
- 关于os模块中查看文件时间的几种用法
- 风控模型评估方法以及大数据风控模型概念
- nginx 反向代理注意事项
- linux下使用定时任务完成mysql定期备份
- java--集合--目录
- mysql的数据类型以及性能优化
- Struts2核心技术(四)
- 区块链扫盲:区块链技术初探(二)
- linux6.x 升级gcc到4.8.2
- 总结一些常用的adb命令
- hdoj 1049 climbing worm(小学数学题)
- net-snmp开发过程整理-补充
- docker 内部署 springboot 应用
- APP下载二维码微信扫一扫无法打开解决方案