mysql当中时间类型是如何存储的
来源:互联网 发布:淘宝网售后服务网址 编辑:程序博客网 时间:2024/05/21 09:26
一直很好奇时间类型在mysql中的存储形式,终于在mysql官网中找到了答案:
下面的表格描述了不同时间类型在不同数据库版本中是如何存储的。
Type
Storage before MySQL 5.6.4
Storage as of MySQL 5.6.4
YEAR
1 byte, little endian
Unchanged
DATE
3 bytes, little endian
Unchanged
TIME
3 bytes, little endian
3 bytes + fractional-seconds storage, big endian
TIMESTAMP
4 bytes, little endian
4 bytes + fractional-seconds storage, big endian
DATETIME
8 bytes, little endian
5 bytes + fractional-seconds storage, big endian
在MYSQL 5.6.4之前,日期跟时间类型是按照以下编码进行存储的:
YEAR: 一个字节的整型
DATE: 三个字节的整型,按照这种方式进行压缩: YYYY×16×32 + MM×32 + DD
TIME: 三个字节的整型,按照这种方式进行压缩:DD×24×3600 + HH×3600 + MM×60 + SS
TIMESTAMP: 四个字节的整型,计算UTC时间,计算从('1970-01-01 00:00:00' UTC)到指定时间的秒数
DATETIME: 八个字节,四个字节代表日志的整型,按照这种方式进行编码: YYYY×10000 + MM×100 + DD ,四个字节代表时间,按照这种方式进行编码: HH×10000 + MM×100 + SS
从5.6.4版本开始,TIME,TIMESTAMP,DATTIME这三种类型增加了对小数秒的支持,对这三种类型的存储采用了大端(big endian)的字节排序方式(为了兼容memcmp()),小数秒部分跟在非小数秒后面。(YEAR和DATE类型的存储方式不变)
- TIME类型的非小数秒部分编码如下:
1 bit sign (1= non-negative, 0= negative) 1 bit unused (reserved for future extensions)10 bits hour (0-838) 6 bits minute (0-59) 6 bits second (0-59) ---------------------24 bits = 3 bytes
TIMESTAMP 非小数秒部分的编码与 5.6.4之前的版本一样,只是字节排序方式由小端排序改为了大端排序(little endian--->big endian)
DATETIME 非小数秒部分的编码如下:
1 bit sign (1= non-negative, 0= negative)17 bits year*13+month (year 0-9999, month 0-12) 5 bits day (0-31) 5 bits hour (0-23) 6 bits minute (0-59) 6 bits second (0-59)---------------------------40 bits = 5 bytes
sign标志位为1,代表整数;0禁止使用
小数秒部分的编码根据小数秒的精度进行调整,如下:
FSP
Storage
0
0 bytes
1,2
1 byte
3,4
2 bytes
4,5
3 bytes
根据以上的描述,我们是不是可以推测出,在对时间字段建立索引以后,在进行索引比较时,是不是会将我们输入的时间转换为以上类型再进行比较?从而可以确定对时间类型的字段建立索引,其效率与在整型字段上建立索引的效率是一样的?还请数据库高手给与解释。
- mysql当中时间类型是如何存储的
- mysql中时间类型如何存储
- mysql 时间类型的物理存储
- 关于mysql的时间存储类型问题
- mysql中时间存储类型的选择
- mysql数据表中有日期为date类型,时间为time类型。此处的date存储的是年月日,time存储的是时分秒
- form表单序列化提交处理当中的时间类型
- mysql 的时间类型
- mysql的时间类型
- 【mysql】时间类型存储格式选择
- mysql时间存储用什么类型
- mysql数据库:几个时间存储类型
- 数据是如何分类的—MySQL数据存储
- 如何在Linux当中判断USB控制器的类型
- 当存储到mongodb中的是string类型的时间,小tips
- 【MySql】 MySQL存储过程常用的函数(字符串类型操作,数学类,日期时间类)
- 【MySql】 MySQL存储过程常用的函数(字符串类型操作,数学类,日期时间类)
- mysql的价格存储类型
- 网盘秒传的实现方式
- NOIP2014提高组解方程
- 多线程 - 课程分析
- Manacher算法
- TCP/IP协议三次握手及断开
- mysql当中时间类型是如何存储的
- 28-正则表达式-01-正则表达式(概述)
- python 学习点滴
- mysql主从灾备
- Redis字符串的巧妙处理
- linux内核之系统初始化
- 28-正则表达式-02-正则表达式(常见的规则)
- Python中subprocess学习
- C++对象模型——函数的效能(第四章)