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

原创粉丝点击